Merge remote-tracking branch 'git.irl/car2car'
diff --git a/.gitignore b/.gitignore
index cfc58f9..070f0ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,8 @@
 in-progress/
 waf
 *~
-*#
+.DS_Store
+*\#
 *.txt
 *.pdf
 *.dot
\ No newline at end of file
diff --git a/apps/ccnx-app.cc b/apps/ccnx-app.cc
index cc5e9b2..5093cf7 100644
--- a/apps/ccnx-app.cc
+++ b/apps/ccnx-app.cc
@@ -84,14 +84,14 @@
 }
     
 void
-CcnxApp::OnInterest (const Ptr<const CcnxInterestHeader> &interest)
+CcnxApp::OnInterest (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> packet)
 {
   NS_LOG_FUNCTION (this << interest);
   m_receivedInterests (interest, this, m_face);
 }
 
 void
-CcnxApp::OnNack (const Ptr<const CcnxInterestHeader> &interest)
+CcnxApp::OnNack (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> packet)
 {
   NS_LOG_FUNCTION (this << interest);
   m_receivedNacks (interest, this, m_face);
@@ -99,7 +99,7 @@
 
 void
 CcnxApp::OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
-                          const Ptr<const Packet> &payload)
+                          Ptr<Packet> payload)
 {
   NS_LOG_FUNCTION (this << contentObject << payload);
   m_receivedContentObjects (contentObject, payload, this, m_face);
diff --git a/apps/ccnx-app.h b/apps/ccnx-app.h
index ae52048..80a789c 100644
--- a/apps/ccnx-app.h
+++ b/apps/ccnx-app.h
@@ -65,25 +65,27 @@
   /**
    * @brief Method that will be called every time new Interest arrives
    * @param interest Interest header
+   * @param packet   "Payload" of the interests packet. The actual payload should be zero, but packet itself
+   *                 may be useful to get packet tags
    */
   virtual void
-  OnInterest (const Ptr<const CcnxInterestHeader> &interest);
+  OnInterest (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> packet);
 
   /**
    * @brief Method that will be called every time new NACK arrives
    * @param interest Interest header
    */
   virtual void
-  OnNack (const Ptr<const CcnxInterestHeader> &interest);
+  OnNack (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> packet);
   
   /**
    * @brief Method that will be called every time new ContentObject arrives
    * @param contentObject ContentObject header
-   * @param payload payload (potentially virtual) of the ContentObject packet
+   * @param payload payload (potentially virtual) of the ContentObject packet (may include packet tags of original packet)
    */
   virtual void
   OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
-                   const Ptr<const Packet> &payload);
+                   Ptr<Packet> payload);
         
 protected:
   virtual void
diff --git a/apps/ccnx-consumer-batches.cc b/apps/ccnx-consumer-batches.cc
new file mode 100644
index 0000000..2a86817
--- /dev/null
+++ b/apps/ccnx-consumer-batches.cc
@@ -0,0 +1,90 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ccnx-consumer-batches.h"
+#include "ns3/ptr.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/packet.h"
+#include "ns3/callback.h"
+#include "ns3/string.h"
+#include "ns3/uinteger.h"
+#include "ns3/double.h"
+#include "ns3/batches.h"
+
+NS_LOG_COMPONENT_DEFINE ("CcnxConsumerBatches");
+
+namespace ns3
+{    
+    
+NS_OBJECT_ENSURE_REGISTERED (CcnxConsumerBatches);
+    
+TypeId
+CcnxConsumerBatches::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CcnxConsumerBatches")
+    .SetParent<CcnxConsumer> ()
+    .AddConstructor<CcnxConsumerBatches> ()
+
+    .AddAttribute ("Batches", "Batches to schedule. Should be vector, containing pairs of time and amount",
+                   // TypeId::ATTR_SET, 
+                   StringValue (""),
+                   MakeBatchesAccessor (&CcnxConsumerBatches::GetBatch, &CcnxConsumerBatches::SetBatch),
+                   MakeBatchesChecker ())
+    ;
+
+  return tid;
+}
+
+CcnxConsumerBatches::CcnxConsumerBatches ()
+{
+}
+
+void
+CcnxConsumerBatches::SetBatch (const Batches &batches)
+{
+  // std::cout << "Batches: " << batches << "\n";
+  for (Batches::const_iterator i = batches.begin (); i != batches.end (); i++)
+    {
+      Simulator::Schedule (i->get<0> (), &CcnxConsumerBatches::AddBatch, this, i->get<1> ());
+    }
+}
+
+void
+CcnxConsumerBatches::AddBatch (uint32_t amount)
+{
+  // std::cout << Simulator::Now () << " adding batch of " << amount << "\n";
+  m_seqMax += amount;
+  m_rtt->ClearSent (); // this is important, otherwise RTT estimation for the new batch will be affected by previous batch history
+  ScheduleNextPacket ();
+}
+
+void
+CcnxConsumerBatches::ScheduleNextPacket ()
+{
+  if (!m_sendEvent.IsRunning ())
+    m_sendEvent = Simulator::Schedule (Seconds (m_rtt->RetransmitTimeout ().ToDouble (Time::S) * 0.1), &CcnxConsumer::SendPacket, this);
+}
+
+///////////////////////////////////////////////////
+//          Process incoming packets             //
+///////////////////////////////////////////////////
+
+} // namespace ns3
diff --git a/apps/ccnx-consumer-batches.h b/apps/ccnx-consumer-batches.h
new file mode 100644
index 0000000..36d7643
--- /dev/null
+++ b/apps/ccnx-consumer-batches.h
@@ -0,0 +1,78 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef CCNX_CONSUMER_BATCHES_H
+#define CCNX_CONSUMER_BATCHES_H
+
+#include "ccnx-consumer.h"
+#include "ns3/traced-value.h"
+#include "ns3/batches.h"
+
+namespace ns3 
+{
+
+/**
+ * @ingroup ccnx
+ * \brief CCNx application for sending out Interest packets in batches
+ */
+class CcnxConsumerBatches: public CcnxConsumer
+{
+public: 
+  static TypeId GetTypeId ();
+        
+  /**
+   * \brief Default constructor 
+   */
+  CcnxConsumerBatches ();
+
+  // From CcnxApp
+  // virtual void
+  // OnInterest (const Ptr<const CcnxInterestHeader> &interest);
+
+  // virtual void
+  // OnNack (const Ptr<const CcnxInterestHeader> &interest);
+
+  // virtual void
+  // OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
+  //                  const Ptr<const Packet> &payload);
+
+  // virtual void
+  // OnTimeout (uint32_t sequenceNumber);
+
+private:
+  Batches
+  GetBatch () const { return Batches(); }
+
+  void
+  SetBatch (const Batches &batch);
+  
+  void
+  AddBatch (uint32_t amount);
+protected:
+  /**
+   * \brief Constructs the Interest packet and sends it using a callback to the underlying CCNx protocol
+   */
+  virtual void
+  ScheduleNextPacket ();
+};
+
+} // namespace ns3
+
+#endif
diff --git a/apps/ccnx-consumer-cbr.cc b/apps/ccnx-consumer-cbr.cc
new file mode 100644
index 0000000..1727bcd
--- /dev/null
+++ b/apps/ccnx-consumer-cbr.cc
@@ -0,0 +1,97 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#include "ccnx-consumer-cbr.h"
+#include "ns3/ptr.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/packet.h"
+#include "ns3/callback.h"
+#include "ns3/string.h"
+#include "ns3/boolean.h"
+#include "ns3/uinteger.h"
+#include "ns3/double.h"
+
+#include "ns3/ccnx.h"
+#include "../model/ccnx-local-face.h"
+#include "ns3/ccnx-interest-header.h"
+#include "ns3/ccnx-content-object-header.h"
+
+NS_LOG_COMPONENT_DEFINE ("CcnxConsumerCbr");
+
+namespace ns3
+{    
+    
+NS_OBJECT_ENSURE_REGISTERED (CcnxConsumerCbr);
+    
+TypeId
+CcnxConsumerCbr::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CcnxConsumerCbr")
+    .SetParent<CcnxConsumer> ()
+    .AddConstructor<CcnxConsumerCbr> ()
+
+    .AddAttribute ("Frequency", "Frequency of interest packets",
+                   StringValue ("1.0"),
+                   MakeDoubleAccessor (&CcnxConsumerCbr::m_frequency),
+                   MakeDoubleChecker<double> ())
+    ;
+
+  return tid;
+}
+    
+CcnxConsumerCbr::CcnxConsumerCbr ()
+  : m_frequency (1.0)
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  m_seqMax = std::numeric_limits<uint32_t>::max ();
+}
+
+void
+CcnxConsumerCbr::ScheduleNextPacket ()
+{
+  // double mean = 8.0 * m_payloadSize / m_desiredRate.GetBitRate ();
+  // std::cout << "next: " << Simulator::Now().ToDouble(Time::S) + mean << "s\n";
+
+  if (!m_sendEvent.IsRunning ())
+    m_sendEvent = Simulator::Schedule (
+                                       // Seconds(m_randExp.GetValue ()),
+                                       Seconds(1.0 / m_frequency),
+                                       &CcnxConsumer::SendPacket, this);
+}
+
+///////////////////////////////////////////////////
+//          Process incoming packets             //
+///////////////////////////////////////////////////
+
+// void
+// CcnxConsumer::OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
+//                                const Ptr<const Packet> &payload)
+// {
+//   CcnxConsumer::OnContentObject (contentObject, payload); // tracing inside
+// }
+
+// void
+// CcnxConsumer::OnNack (const Ptr<const CcnxInterestHeader> &interest)
+// {
+//   CcnxConsumer::OnNack (interest); // tracing inside
+// }
+
+} // namespace ns3
diff --git a/apps/ccnx-consumer-cbr.h b/apps/ccnx-consumer-cbr.h
new file mode 100644
index 0000000..03558ed
--- /dev/null
+++ b/apps/ccnx-consumer-cbr.h
@@ -0,0 +1,83 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ *         Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef CCNX_CONSUMER_CBR_H
+#define CCNX_CONSUMER_CBR_H
+
+#include "ccnx-consumer.h"
+
+namespace ns3 
+{
+
+/**
+ * @ingroup ccnx
+ * \brief CCNx application for sending out Interest packets at a "constant" rate (Poisson process)
+ */
+class CcnxConsumerCbr: public CcnxConsumer
+{
+public: 
+  static TypeId GetTypeId ();
+        
+  /**
+   * \brief Default constructor 
+   * Sets up randomizer function and packet sequence number
+   */
+  CcnxConsumerCbr ();
+
+  // From CcnxApp
+  // virtual void
+  // OnInterest (const Ptr<const CcnxInterestHeader> &interest);
+
+  // virtual void
+  // OnNack (const Ptr<const CcnxInterestHeader> &interest);
+
+  // virtual void
+  // OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
+  //                  const Ptr<const Packet> &payload);
+
+protected:
+  /**
+   * \brief Constructs the Interest packet and sends it using a callback to the underlying CCNx protocol
+   */
+  virtual void
+  ScheduleNextPacket ();
+  
+private:
+  // void
+  // UpdateMean ();
+
+  // virtual void
+  // SetPayloadSize (uint32_t payload);
+
+  // void
+  // SetDesiredRate (DataRate rate);
+
+  // DataRate
+  // GetDesiredRate () const;
+  
+protected:
+  ExponentialVariable m_randExp; // packet inter-arrival time generation (Poisson process)
+  double              m_frequency; // Frequency of interest packets (in hertz)
+};
+
+} // namespace ns3
+
+#endif
diff --git a/apps/ccnx-consumer-window.cc b/apps/ccnx-consumer-window.cc
new file mode 100644
index 0000000..3d6f515
--- /dev/null
+++ b/apps/ccnx-consumer-window.cc
@@ -0,0 +1,179 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ccnx-consumer-window.h"
+#include "ns3/ptr.h"
+#include "ns3/log.h"
+#include "ns3/simulator.h"
+#include "ns3/packet.h"
+#include "ns3/callback.h"
+#include "ns3/string.h"
+#include "ns3/uinteger.h"
+#include "ns3/double.h"
+
+NS_LOG_COMPONENT_DEFINE ("CcnxConsumerWindow");
+
+namespace ns3
+{    
+    
+NS_OBJECT_ENSURE_REGISTERED (CcnxConsumerWindow);
+    
+TypeId
+CcnxConsumerWindow::GetTypeId (void)
+{
+  static TypeId tid = TypeId ("ns3::CcnxConsumerWindow")
+    .SetParent<CcnxConsumer> ()
+    .AddConstructor<CcnxConsumerWindow> ()
+
+    .AddAttribute ("Window", "Initial size of the window",
+                   StringValue ("1"),
+                   MakeUintegerAccessor (&CcnxConsumerWindow::GetWindow, &CcnxConsumerWindow::SetWindow),
+                   MakeUintegerChecker<uint32_t> ())
+
+    .AddAttribute ("PayloadSize", "Average size of content object size (to calculate interest generation rate)",
+                   UintegerValue (1040),
+                   MakeUintegerAccessor (&CcnxConsumerWindow::GetPayloadSize, &CcnxConsumerWindow::SetPayloadSize),
+                   MakeUintegerChecker<uint32_t>())
+    .AddAttribute ("Size", "Amount of data in megabytes to request (relies on PayloadSize parameter)",
+                   DoubleValue (-1), // don't impose limit by default
+                   MakeDoubleAccessor (&CcnxConsumerWindow::GetMaxSize, &CcnxConsumerWindow::SetMaxSize),
+                   MakeDoubleChecker<double> ())
+
+    .AddTraceSource ("WindowTrace",
+                     "Window that controls how many outstanding interests are allowed",
+                     MakeTraceSourceAccessor (&CcnxConsumerWindow::m_window))
+    .AddTraceSource ("InFlight",
+                     "Current number of outstanding interests",
+                     MakeTraceSourceAccessor (&CcnxConsumerWindow::m_window))
+    ;
+
+  return tid;
+}
+
+CcnxConsumerWindow::CcnxConsumerWindow ()
+  : m_payloadSize (1040)
+  , m_inFlight (0)
+{
+}
+
+void
+CcnxConsumerWindow::SetWindow (uint32_t window)
+{
+  m_window = window;
+}
+
+uint32_t
+CcnxConsumerWindow::GetWindow () const
+{
+  return m_window;
+}
+
+uint32_t
+CcnxConsumerWindow::GetPayloadSize () const
+{
+  return m_payloadSize;
+}
+
+void
+CcnxConsumerWindow::SetPayloadSize (uint32_t payload)
+{
+  m_payloadSize = payload;
+}
+
+double
+CcnxConsumerWindow::GetMaxSize () const
+{
+  if (m_seqMax == 0)
+    return -1.0;
+
+  return m_maxSize;
+}
+
+void
+CcnxConsumerWindow::SetMaxSize (double size)
+{
+  m_maxSize = size;
+  if (m_maxSize < 0)
+    {
+      m_seqMax = 0;
+      return;
+    }
+
+  m_seqMax = floor(1.0 + m_maxSize * 1024.0 * 1024.0 / m_payloadSize);
+  NS_LOG_DEBUG ("MaxSeqNo: " << m_seqMax);
+  // std::cout << "MaxSeqNo: " << m_seqMax << "\n";
+}
+
+
+void
+CcnxConsumerWindow::ScheduleNextPacket ()
+{
+  if (m_window == static_cast<uint32_t> (0) || m_inFlight >= m_window)
+    {
+      if (!m_sendEvent.IsRunning ())
+        m_sendEvent = Simulator::Schedule (Seconds (m_rtt->RetransmitTimeout ().ToDouble (Time::S) * 0.1), &CcnxConsumer::SendPacket, this);
+      return;
+    }
+  
+  // std::cout << "Window: " << m_window << ", InFlight: " << m_inFlight << "\n";
+  if (!m_sendEvent.IsRunning ())
+    {
+      m_inFlight++;
+      m_sendEvent = Simulator::ScheduleNow (&CcnxConsumer::SendPacket, this);
+    }
+}
+
+///////////////////////////////////////////////////
+//          Process incoming packets             //
+///////////////////////////////////////////////////
+
+void
+CcnxConsumerWindow::OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
+                                     Ptr<Packet> payload)
+{
+  CcnxConsumer::OnContentObject (contentObject, payload);
+
+  m_window = m_window + 1;
+
+  if (m_inFlight > static_cast<uint32_t> (0)) m_inFlight--;
+  ScheduleNextPacket ();
+}
+
+void
+CcnxConsumerWindow::OnNack (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> payload)
+{
+  CcnxConsumer::OnNack (interest, payload);
+  if (m_inFlight > static_cast<uint32_t> (0)) m_inFlight--;
+
+  if (m_window > static_cast<uint32_t> (0))
+    {
+      // m_window = 0.5 * m_window;//m_window - 1;
+      m_window = m_window - 1;
+    }
+}
+
+void
+CcnxConsumerWindow::OnTimeout (uint32_t sequenceNumber)
+{
+  if (m_inFlight > static_cast<uint32_t> (0)) m_inFlight--;
+  CcnxConsumer::OnTimeout (sequenceNumber);
+}
+
+} // namespace ns3
diff --git a/apps/ccnx-consumer-window.h b/apps/ccnx-consumer-window.h
new file mode 100644
index 0000000..21a9759
--- /dev/null
+++ b/apps/ccnx-consumer-window.h
@@ -0,0 +1,95 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ *         Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef CCNX_CONSUMER_WINDOW_H
+#define CCNX_CONSUMER_WINDOW_H
+
+#include "ccnx-consumer.h"
+#include "ns3/traced-value.h"
+
+namespace ns3 
+{
+
+/**
+ * @ingroup ccnx
+ * \brief CCNx application for sending out Interest packets (window-based)
+ */
+class CcnxConsumerWindow: public CcnxConsumer
+{
+public: 
+  static TypeId GetTypeId ();
+        
+  /**
+   * \brief Default constructor 
+   */
+  CcnxConsumerWindow ();
+
+  // From CcnxApp
+  // virtual void
+  // OnInterest (const Ptr<const CcnxInterestHeader> &interest);
+
+  virtual void
+  OnNack (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> payload);
+
+  virtual void
+  OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
+                   Ptr<Packet> payload);
+
+  virtual void
+  OnTimeout (uint32_t sequenceNumber);
+ 
+protected:
+  /**
+   * \brief Constructs the Interest packet and sends it using a callback to the underlying CCNx protocol
+   */
+  virtual void
+  ScheduleNextPacket ();
+  
+private:
+  virtual void
+  SetWindow (uint32_t window);
+
+  uint32_t
+  GetWindow () const;
+
+  virtual void
+  SetPayloadSize (uint32_t payload);
+
+  uint32_t
+  GetPayloadSize () const;
+
+  double
+  GetMaxSize () const;
+
+  void
+  SetMaxSize (double size);
+  
+protected:
+  uint32_t m_payloadSize; // expected payload size
+  double   m_maxSize; // max size to request
+
+  TracedValue<uint32_t> m_window;
+  TracedValue<uint32_t> m_inFlight;
+};
+
+} // namespace ns3
+
+#endif
diff --git a/apps/ccnx-consumer.cc b/apps/ccnx-consumer.cc
index cf5d131..eafa77d 100644
--- a/apps/ccnx-consumer.cc
+++ b/apps/ccnx-consumer.cc
@@ -33,12 +33,15 @@
 #include "../model/ccnx-local-face.h"
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/ccnx-content-object-header.h"
+#include "ns3/ccnx-path-stretch-tag.h"
 
 #include <boost/ref.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/lambda/lambda.hpp>
 #include <boost/lambda/bind.hpp>
 
+#include "ns3/names.h"
+
 namespace ll = boost::lambda;
 
 NS_LOG_COMPONENT_DEFINE ("CcnxConsumer");
@@ -53,28 +56,11 @@
 {
   static TypeId tid = TypeId ("ns3::CcnxConsumer")
     .SetParent<CcnxApp> ()
-    .AddConstructor<CcnxConsumer> ()
     .AddAttribute ("StartSeq", "Initial sequence number",
                    IntegerValue (0),
                    MakeIntegerAccessor(&CcnxConsumer::m_seq),
                    MakeIntegerChecker<int32_t>())
 
-    .AddAttribute ("Size", "Amount of data in megabytes to request (relies on PayloadSize parameter)",
-                   DoubleValue (-1), // don't impose limit by default
-                   MakeDoubleAccessor (&CcnxConsumer::GetMaxSize, &CcnxConsumer::SetMaxSize),
-                   MakeDoubleChecker<double> ())
-
-    ///////
-    .AddAttribute ("PayloadSize", "Average size of content object size (to calculate interest generation rate)",
-                   UintegerValue (1040),
-                   MakeUintegerAccessor (&CcnxConsumer::GetPayloadSize, &CcnxConsumer::SetPayloadSize),
-                   MakeUintegerChecker<uint32_t>())
-    .AddAttribute ("MeanRate", "Mean data packet rate (relies on the PayloadSize parameter)",
-                   StringValue ("100Kbps"),
-                   MakeDataRateAccessor (&CcnxConsumer::GetDesiredRate, &CcnxConsumer::SetDesiredRate),
-                   MakeDataRateChecker ())
-    ///////
-
     .AddAttribute ("Prefix","CcnxName of the Interest",
                    StringValue ("/"),
                    MakeCcnxNameComponentsAccessor (&CcnxConsumer::m_interestName),
@@ -100,19 +86,17 @@
                    MakeCcnxNameComponentsAccessor (&CcnxConsumer::m_exclude),
                    MakeCcnxNameComponentsChecker ())
 
-    .AddAttribute ("RTO",
-                   "Initial retransmission timeout",
-                   StringValue ("1s"),
-                   MakeTimeAccessor (&CcnxConsumer::m_rto),
-                   MakeTimeChecker ())
     .AddAttribute ("RetxTimer",
                    "Timeout defining how frequent retransmission timeouts should be checked",
-                   StringValue ("1s"),
+                   StringValue ("50ms"),
                    MakeTimeAccessor (&CcnxConsumer::GetRetxTimer, &CcnxConsumer::SetRetxTimer),
                    MakeTimeChecker ())
 
     .AddTraceSource ("TransmittedInterests", "TransmittedInterests",
                     MakeTraceSourceAccessor (&CcnxConsumer::m_transmittedInterests))
+
+    .AddTraceSource ("PathWeightsTrace", "PathWeightsTrace",
+                    MakeTraceSourceAccessor (&CcnxConsumer::m_pathWeightsTrace))
     ;
 
   return tid;
@@ -120,13 +104,12 @@
     
 CcnxConsumer::CcnxConsumer ()
   : m_rand (0, std::numeric_limits<uint32_t>::max ())
-  , m_desiredRate ("10Kbps")
-  , m_payloadSize (1040)
   , m_seq (0)
+  , m_seqMax (0) // don't request anything
 {
   NS_LOG_FUNCTION_NOARGS ();
 
-  UpdateMean (); // not necessary (will be called by ns3 object system anyways), but doesn't hurt
+  m_rtt = CreateObject<RttMeanDeviation> ();
 }
 
 void
@@ -152,96 +135,26 @@
 {
   Time now = Simulator::Now ();
 
-  boost::mutex::scoped_lock (m_seqTimeoutsGuard);
+  Time rto = m_rtt->RetransmitTimeout ();
 
   while (!m_seqTimeouts.empty ())
     {
       SeqTimeoutsContainer::index<i_timestamp>::type::iterator entry =
         m_seqTimeouts.get<i_timestamp> ().begin ();
-      if (entry->time + m_rto <= now) // timeout expired?
+      if (entry->time + rto <= now) // timeout expired?
         {
-          m_retxSeqs.insert (entry->seq);
-          m_seqTimeouts.get<i_timestamp> ().modify (entry,
-                                                    ll::bind(&SeqTimeout::time, ll::_1) = now);
+          uint32_t seqNo = entry->seq;
+          m_seqTimeouts.get<i_timestamp> ().erase (entry);
+          OnTimeout (seqNo);
         }
       else
         break; // nothing else to do. All later packets need not be retransmitted
     }
 
-  if (m_retxSeqs.size () > 0)
-    {
-      ScheduleNextPacket ();
-    }
-  
   m_retxEvent = Simulator::Schedule (m_retxTimer,
                                      &CcnxConsumer::CheckRetxTimeout, this); 
 }
 
-void
-CcnxConsumer::UpdateMean ()
-{
-  double mean = 8.0 * m_payloadSize / m_desiredRate.GetBitRate ();
-  m_randExp = ExponentialVariable (mean, 10000 * mean); // set upper limit to inter-arrival time
-}
-
-void
-CcnxConsumer::SetPayloadSize (uint32_t payload)
-{
-  m_payloadSize = payload;
-  UpdateMean ();
-}
-
-uint32_t
-CcnxConsumer::GetPayloadSize () const
-{
-  return m_payloadSize;
-}
-
-void
-CcnxConsumer::SetDesiredRate (DataRate rate)
-{
-  m_desiredRate = rate;
-  UpdateMean ();
-}
-
-DataRate
-CcnxConsumer::GetDesiredRate () const
-{
-  return m_desiredRate;
-}
-
-double
-CcnxConsumer::GetMaxSize () const
-{
-  if (m_seqMax == 0)
-    return -1.0;
-
-  return m_seqMax * m_payloadSize / 1024.0 / 1024.0;
-}
-
-void
-CcnxConsumer::SetMaxSize (double size)
-{
-  if (size < 0)
-    {
-      m_seqMax = 0;
-      return;
-    }
-
-  m_seqMax = floor(1.0 + size * 1024.0 * 1024.0 / m_payloadSize);
-  NS_LOG_DEBUG ("MaxSeqNo: " << m_seqMax);
-}
-
-
-void
-CcnxConsumer::ScheduleNextPacket ()
-{
-  if (!m_sendEvent.IsRunning ())
-    m_sendEvent = Simulator::Schedule (
-                                       Seconds(m_randExp.GetValue ()),
-                                       &CcnxConsumer::SendPacket, this);
-}
-
 // Application Methods
 void 
 CcnxConsumer::StartApplication () // Called at time specified by Start
@@ -273,20 +186,29 @@
 
   NS_LOG_FUNCTION_NOARGS ();
 
-  boost::mutex::scoped_lock (m_seqTimeoutsGuard);
+  uint32_t seq=std::numeric_limits<uint32_t>::max (); //invalid
 
-  uint32_t seq;
+  // std::cout << Simulator::Now ().ToDouble (Time::S) << "s max -> " << m_seqMax << "\n";
   
-  if (m_retxSeqs.size () != 0)
+  while (m_retxSeqs.size ())
     {
       seq = *m_retxSeqs.begin ();
-      NS_LOG_INFO ("Before: " << m_retxSeqs.size ());
       m_retxSeqs.erase (m_retxSeqs.begin ());
-      NS_LOG_INFO ("After: " << m_retxSeqs.size ());
+
+      // NS_ASSERT (m_seqLifetimes.find (seq) != m_seqLifetimes.end ());
+      // if (m_seqLifetimes.find (seq)->time <= Simulator::Now ())
+      //   {
+          
+      //     NS_LOG_DEBUG ("Expire " << seq);
+      //     m_seqLifetimes.erase (seq); // lifetime expired. Trying to find another unexpired sequence number
+      //     continue;
+      //   }
+      break;
     }
-  else
+
+  if (seq == std::numeric_limits<uint32_t>::max ())
     {
-      if (m_seqMax > 0)
+      if (m_seqMax != std::numeric_limits<uint32_t>::max ())
         {
           if (m_seq >= m_seqMax)
             {
@@ -297,6 +219,8 @@
       seq = m_seq++;
     }
   
+  // std::cout << Simulator::Now ().ToDouble (Time::S) << "s -> " << seq << "\n";
+  
   //
   Ptr<CcnxNameComponents> nameWithSequence = Create<CcnxNameComponents> (m_interestName);
   (*nameWithSequence) (seq);
@@ -315,7 +239,7 @@
   interestHeader.SetMinSuffixComponents (m_minSuffixComponents);
         
   // NS_LOG_INFO ("Requesting Interest: \n" << interestHeader);
-  NS_LOG_DEBUG ("node("<< GetNode()->GetId() <<") sending Interest for sequence " << seq);
+  NS_LOG_INFO ("> Interest for " << seq);
 
   Ptr<Packet> packet = Create<Packet> ();
   packet->AddHeader (interestHeader);
@@ -324,15 +248,11 @@
 
   NS_LOG_DEBUG ("Trying to add " << seq << " with " << Simulator::Now () << ". already " << m_seqTimeouts.size () << " items");  
   
-  std::pair<SeqTimeoutsContainer::iterator, bool>
-    res = m_seqTimeouts.insert (SeqTimeout (seq, Simulator::Now ()));
-  
-  if (!res.second)
-    m_seqTimeouts.modify (res.first,
-                          ll::bind(&SeqTimeout::time, ll::_1) = Simulator::Now ());
-  
+  m_seqTimeouts.insert (SeqTimeout (seq, Simulator::Now ()));
+  m_seqLifetimes.insert (SeqTimeout (seq, Simulator::Now () + m_interestLifeTime)); // only one insert will work. if entry exists, nothing will happen... nothing should happen
   m_transmittedInterests (&interestHeader, this, m_face);
 
+  m_rtt->SentSeq (SequenceNumber32 (seq), 1);
   ScheduleNextPacket ();
 }
 
@@ -343,7 +263,7 @@
 
 void
 CcnxConsumer::OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
-                               const Ptr<const Packet> &payload)
+                               Ptr<Packet> payload)
 {
   if (!m_active) return;
 
@@ -354,10 +274,8 @@
   // NS_LOG_INFO ("Received content object: " << boost::cref(*contentObject));
   
   uint32_t seq = boost::lexical_cast<uint32_t> (contentObject->GetName ().GetComponents ().back ());
-  NS_LOG_INFO ("node("<< GetNode()->GetId() <<") get DATA for sequence " << seq);
+  NS_LOG_INFO ("< DATA for " << seq);
 
-  boost::mutex::scoped_lock (m_seqTimeoutsGuard);
-  
   // SeqTimeoutsContainer::iterator entry = m_seqTimeouts.find (seq);
 
   //  NS_ASSERT_MSG (entry != m_seqTimeouts.end (),
@@ -366,32 +284,56 @@
   // if (entry != m_seqTimeouts.end ())
   //   m_seqTimeouts.erase (entry);
 
+  m_seqLifetimes.erase (seq);
   m_seqTimeouts.erase (seq);
   m_retxSeqs.erase (seq);
+
+  m_rtt->AckSeq (SequenceNumber32 (seq));
+
+  Ptr<const WeightsPathStretchTag> tag = payload->RemovePacketTag<WeightsPathStretchTag> ();
+  if (tag != 0)
+    {
+      // Notify trace about path weights vector (e.g., for path-stretch calculation)
+      m_pathWeightsTrace (GetNode (), tag->GetSourceNode (), seq, tag->GetTotalWeight ());
+      // if (Names::FindName (GetNode ()) == "36")// || Names::FindName (GetNode ()) == "40"|| Names::FindName (GetNode ()) == "5")
+      //   std::cout << Simulator::Now () << "\t" << boost::cref(*tag) << " = " << tag->GetTotalWeight () << "\n";
+}
 }
 
 void
-CcnxConsumer::OnNack (const Ptr<const CcnxInterestHeader> &interest)
+CcnxConsumer::OnNack (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> origPacket)
 {
   if (!m_active) return;
   
-  CcnxApp::OnNack (interest); // tracing inside
+  CcnxApp::OnNack (interest, origPacket); // tracing inside
   
   NS_LOG_DEBUG ("Nack type: " << interest->GetNack ());
-  boost::mutex::scoped_lock (m_seqTimeoutsGuard);
 
   NS_LOG_FUNCTION (this << interest);
 
   // NS_LOG_INFO ("Received NACK: " << boost::cref(*interest));
   uint32_t seq = boost::lexical_cast<uint32_t> (interest->GetName ().GetComponents ().back ());
-  NS_LOG_DEBUG ("node("<< GetNode()->GetId() <<") < NACK for " << seq);
+  NS_LOG_INFO ("< NACK for " << seq);
+  // std::cout << Simulator::Now ().ToDouble (Time::S) << "s -> " << "NACK for " << seq << "\n"; 
 
   // put in the queue of interests to be retransmitted
   NS_LOG_INFO ("Before: " << m_retxSeqs.size ());
   m_retxSeqs.insert (seq);
   NS_LOG_INFO ("After: " << m_retxSeqs.size ());
 
+  // m_rtt->IncreaseMultiplier ();             // Double the next RTO ??
   ScheduleNextPacket ();
 }
 
+void
+CcnxConsumer::OnTimeout (uint32_t sequenceNumber)
+{
+  // std::cout << Simulator::Now () << ", TO: " << sequenceNumber << ", current RTO: " << m_rtt->RetransmitTimeout ().ToDouble (Time::S) << "s\n";
+
+  // m_rtt->IncreaseMultiplier ();             // Double the next RTO
+  m_rtt->SentSeq (SequenceNumber32 (sequenceNumber), 1); // make sure to disable RTT calculation for this sample
+  m_retxSeqs.insert (sequenceNumber);
+  ScheduleNextPacket (); 
+}
+
 } // namespace ns3
diff --git a/apps/ccnx-consumer.h b/apps/ccnx-consumer.h
index 9b28a2c..0709a40 100644
--- a/apps/ccnx-consumer.h
+++ b/apps/ccnx-consumer.h
@@ -27,6 +27,8 @@
 #include "ns3/ccnx-name-components.h"
 #include "ns3/nstime.h"
 #include "ns3/data-rate.h"
+#include "../../internet/model/rtt-estimator.h"
+//#include "ns3/internet-module.h"
 
 #include <set>
 
@@ -35,8 +37,6 @@
 #include <boost/multi_index/ordered_index.hpp>
 #include <boost/multi_index/member.hpp>
 
-#include <boost/thread/mutex.hpp>
-
 namespace ns3 
 {
 
@@ -60,12 +60,19 @@
   // OnInterest (const Ptr<const CcnxInterestHeader> &interest);
 
   virtual void
-  OnNack (const Ptr<const CcnxInterestHeader> &interest);
+  OnNack (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> packet);
 
   virtual void
   OnContentObject (const Ptr<const CcnxContentObjectHeader> &contentObject,
-                   const Ptr<const Packet> &payload);
+                   Ptr<Packet> payload);
 
+  virtual void
+  OnTimeout (uint32_t sequenceNumber);
+
+  // Simulator::Schedule doesn't work with protected members???
+  void
+  SendPacket ();
+  
 protected:
   // from CcnxApp
   virtual void
@@ -74,31 +81,12 @@
   virtual void
   StopApplication ();
   
-private:
   /**
    * \brief Constructs the Interest packet and sends it using a callback to the underlying CCNx protocol
    */
-  void
-  ScheduleNextPacket ();
-
-  void
-  UpdateMean ();
-
-  void
-  SetPayloadSize (uint32_t payload);
-
-  uint32_t
-  GetPayloadSize () const;
-
-  void
-  SetDesiredRate (DataRate rate);
-
-  DataRate
-  GetDesiredRate () const;
+  virtual void
+  ScheduleNextPacket () = 0;
   
-  void
-  SendPacket ();
-
   /**
    * \brief Checks if the packet need to be retransmitted becuase of retransmission timer expiration
    */
@@ -119,28 +107,16 @@
   Time
   GetRetxTimer () const;
   
-  double
-  GetMaxSize () const;
-
-  void
-  SetMaxSize (double size);
-  
 protected:
   UniformVariable m_rand; // nonce generator
 
-  ExponentialVariable m_randExp; // packet inter-arrival time generation (Poisson process)
-  DataRate            m_desiredRate;    // Desired data packet rate
-  uint32_t            m_payloadSize; // expected payload size
-  
   uint32_t        m_seq;
   uint32_t        m_seqMax;    // maximum number of sequence number
   EventId         m_sendEvent; // Eventid of pending "send packet" event
   Time            m_retxTimer;
   EventId         m_retxEvent; // Event to check whether or not retransmission should be performed
 
-  Time            m_rto;        ///< \brief Retransmission timeout
-  Time            m_rttVar;     ///< \brief RTT variance
-  Time            m_sRtt;       ///< \brief smoothed RTT
+  Ptr<RttEstimator> m_rtt;
   
   Time               m_offTime;             ///< \brief Time interval between packets
   CcnxNameComponents m_interestName;        ///< \brief CcnxName of the Interest (use CcnxNameComponents)
@@ -191,13 +167,15 @@
     > { } ;
 
   SeqTimeoutsContainer m_seqTimeouts;       ///< \brief multi-index for the set of SeqTimeout structs
-  boost::mutex m_seqTimeoutsGuard;          ///< \brief mutex for safe work with the m_seqTimeouts
+  SeqTimeoutsContainer m_seqLifetimes;
 
   /**
    * \brief A trace that is called after each transmitted Interest packet
    */
   TracedCallback<Ptr<const CcnxInterestHeader>,
                  Ptr<CcnxApp>, Ptr<CcnxFace> > m_transmittedInterests;
+  
+  TracedCallback<Ptr<Node>, Ptr<Node>, uint32_t, uint32_t > m_pathWeightsTrace;
 };
 
 } // namespace ns3
diff --git a/apps/ccnx-producer.cc b/apps/ccnx-producer.cc
index 9a41c82..37209b3 100644
--- a/apps/ccnx-producer.cc
+++ b/apps/ccnx-producer.cc
@@ -23,6 +23,7 @@
 #include "ns3/log.h"
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/ccnx-content-object-header.h"
+// #include "ns3/ccnx-path-stretch-tag.h"
 #include "ns3/string.h"
 #include "ns3/uinteger.h"
 #include "ns3/packet.h"
@@ -31,6 +32,9 @@
 #include "ns3/ccnx-fib.h"
 
 #include <boost/ref.hpp>
+#include <boost/lambda/lambda.hpp>
+#include <boost/lambda/bind.hpp>
+namespace ll = boost::lambda;
 
 NS_LOG_COMPONENT_DEFINE ("CcnxProducer");
 
@@ -75,7 +79,13 @@
 
   CcnxApp::StartApplication ();
 
-  GetNode ()->GetObject<CcnxFib> ()->Add (m_prefix, m_face, 0);
+  Ptr<CcnxFib> fib = GetNode ()->GetObject<CcnxFib> ();
+  CcnxFibEntryContainer::type::iterator fibEntry = fib->Add (m_prefix, m_face, 0);
+
+  // make face green, so it will be used primarily
+  fib->m_fib.modify (fibEntry,
+                     ll::bind (&CcnxFibEntry::UpdateStatus,
+                               ll::_1, m_face, CcnxFibFaceMetric::NDN_FIB_GREEN));
 }
 
 void
@@ -89,9 +99,9 @@
 
 
 void
-CcnxProducer::OnInterest (const Ptr<const CcnxInterestHeader> &interest)
+CcnxProducer::OnInterest (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> origPacket)
 {
-  CcnxApp::OnInterest (interest); // tracing inside
+  CcnxApp::OnInterest (interest, origPacket); // tracing inside
 
   NS_LOG_FUNCTION (this << interest);
 
@@ -104,7 +114,19 @@
   NS_LOG_INFO ("node("<< GetNode()->GetId() <<") respodning with ContentObject:\n" << boost::cref(*header));
   
   Ptr<Packet> packet = Create<Packet> (m_virtualPayloadSize);
+  // Ptr<const WeightsPathStretchTag> tag = origPacket->RemovePacketTag<WeightsPathStretchTag> ();
+  // if (tag != 0)
+  //   {
+  //     // std::cout << Simulator::Now () << ", " << m_app->GetInstanceTypeId ().GetName () << "\n";
 
+  //     // echo back WeightsPathStretchTag
+  //     packet->AddPacketTag (CreateObject<WeightsPathStretchTag> (*tag));
+
+  //     // \todo
+  //     // packet->AddPacketTag should actually accept Ptr<const WeightsPathStretchTag> instead of
+  //     // Ptr<WeightsPathStretchTag>.  Echoing will be simplified after change is done
+  //   }
+  
   m_transmittedContentObjects (header, packet, this, m_face);
   
   packet->AddHeader (*header);
diff --git a/apps/ccnx-producer.h b/apps/ccnx-producer.h
index a239d84..45794b2 100644
--- a/apps/ccnx-producer.h
+++ b/apps/ccnx-producer.h
@@ -39,7 +39,7 @@
   CcnxProducer ();
 
   // inherited from CcnxApp
-  void OnInterest (const Ptr<const CcnxInterestHeader> &interest);
+  void OnInterest (const Ptr<const CcnxInterestHeader> &interest, Ptr<Packet> packet);
 
 protected:
   // inherited from Application base class.
diff --git a/apps/stupid-interest-generator.cc b/apps/stupid-interest-generator.cc
deleted file mode 100644
index 8606117..0000000
--- a/apps/stupid-interest-generator.cc
+++ /dev/null
@@ -1,177 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-//
-//  ndn_stupidinterestgenerator.cpp
-//  Abstraction
-//
-//  Created by Ilya Moiseenko on 05.08.11.
-//  Copyright 2011 UCLA. All rights reserved.
-//
-
-#include "stupid-interest-generator.h"
-
-#include "ns3/socket-factory.h"
-#include "ns3/simulator.h"
-
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/ccnx-content-object-header.h"
-
-NS_LOG_COMPONENT_DEFINE ("StupidInterestGenerator");
-
-namespace ns3
-{
-    
-NS_OBJECT_ENSURE_REGISTERED (StupidInterestGenerator);
-    
-TypeId
-StupidInterestGenerator::GetTypeId (void)
-{
-	static TypeId tid = TypeId ("ns3::StupidInterestGenerator")
-        .SetParent<Application> ()
-        .AddConstructor<StupidInterestGenerator> ()
-        .AddAttribute ("Remote", "The address of the destination",
-                       AddressValue (),
-                       MakeAddressAccessor (&StupidInterestGenerator::m_peer),
-                       MakeAddressChecker ())
-        .AddAttribute ("OffTime", "Time interval between packets",
-                       TimeValue (Seconds (0.1)),
-                       MakeTimeAccessor (&StupidInterestGenerator::m_offTime),
-                       MakeTimeChecker ())
-        .AddAttribute ("Protocol", "The type of protocol to use.",
-                       TypeIdValue (UdpSocketFactory::GetTypeId ()),
-                       MakeTypeIdAccessor (&StupidInterestGenerator::m_tid),
-                       MakeTypeIdChecker ())
-        ;
-	return tid;
-}
-
-StupidInterestGenerator::StupidInterestGenerator ()
-{
-	NS_LOG_FUNCTION_NOARGS ();
-	m_socket = 0;
-	//m_connected = false;
-	//m_residualBits = 0;
-	//m_lastStartTime = Seconds (0);
-	//m_totBytes = 0;
-}
-    
-StupidInterestGenerator::~StupidInterestGenerator()
-{
-	NS_LOG_FUNCTION_NOARGS ();
-}
-    
-void
-StupidInterestGenerator::DoDispose (void)
-{
-	NS_LOG_FUNCTION_NOARGS ();
-        
-	m_socket = 0;
-	// chain up
-	Application::DoDispose ();
-}
-    
-// Application Methods
-void StupidInterestGenerator::StartApplication () // Called at time specified by Start
-{
-	NS_LOG_FUNCTION_NOARGS ();
-        
-	// Create the socket if not already
-	if (!m_socket)
-	{
-		m_socket = Socket::CreateSocket (GetNode (), m_tid);
-		m_socket->Bind ();
-		m_socket->Connect (m_peer);
-		m_socket->SetAllowBroadcast (true);
-		m_socket->ShutdownRecv ();
-	}
-	// Insure no pending event
-	CancelEvents ();
-	// If we are not yet connected, there is nothing to do here
-	// The ConnectionComplete upcall will start timers at that time
-	//if (!m_connected) return;
-	ScheduleStartEvent ();
-}
-    
-void StupidInterestGenerator::StopApplication () // Called at time specified by Stop
-{
-	NS_LOG_FUNCTION_NOARGS ();
-        
-	CancelEvents ();
-	if(m_socket != 0)
-	{
-		m_socket->Close ();
-	}
-	else
-	{
-		NS_LOG_WARN ("OnOffApplication found null socket to close in StopApplication");
-	}
-}
-    
-void StupidInterestGenerator::CancelEvents ()
-{
-	NS_LOG_FUNCTION_NOARGS ();
-        
-	Simulator::Cancel (m_sendEvent);
-	Simulator::Cancel (m_startStopEvent);
-}
-
-void StupidInterestGenerator::ScheduleStartEvent ()
-{  // Schedules the event to start sending data (switch to the "On" state)
-	NS_LOG_FUNCTION_NOARGS ();
-        
-	Time offInterval = Seconds (m_offTime);
-	NS_LOG_LOGIC ("start at " << offInterval);
-	m_startStopEvent = Simulator::Schedule (offInterval, &StupidInterestGenerator::StartSending, this);
-}
-    
-// Event handlers
-void StupidInterestGenerator::StartSending ()
-{
-	NS_LOG_FUNCTION_NOARGS ();
-	//m_lastStartTime = Simulator::Now ();
-	ScheduleNextTx ();  // Schedule the send packet event
-	//ScheduleStopEvent ();
-}
-    
-void StupidInterestGenerator::StopSending ()
-{
-	NS_LOG_FUNCTION_NOARGS ();
-	CancelEvents ();
-        
-	ScheduleStartEvent ();
-}
-    
-// Private helpers
-void StupidInterestGenerator::ScheduleNextTx ()
-{
-	NS_LOG_FUNCTION_NOARGS ();
-        
-
-	Time nextTime = Seconds(0.); //send now
-	m_sendEvent = Simulator::Schedule (nextTime,
-									   &StupidInterestGenerator::SendPacket, this);
-}
-
-        
-void StupidInterestGenerator::SendPacket ()
-{
-	// NS_LOG_FUNCTION_NOARGS ();
-	// NS_LOG_LOGIC ("sending packet at " << Simulator::Now ());
-	// NS_ASSERT (m_sendEvent.IsExpired ());
-        
-	// NameBuilder name;
-	// name("prefix1")("prefix2")("filename");
-	CcnxInterestHeader ();
-
-	CcnxContentObjectHeader ();
-		
-	// const ccn_charbuf *output = name.GetName();
-	// Ptr<InterestPacket> packet = Create<InterestPacket>(name,(uint32_t)output->length);
-	// packet->AddTimeout(4000);
-	// UniformVariable var;
-	// packet->AddNonce(var.GetInteger(1,10000));
-	// m_socket->Send(packet);
-        
-	// ScheduleStartEvent();
-}
-
-}
diff --git a/apps/stupid-interest-generator.h b/apps/stupid-interest-generator.h
deleted file mode 100644
index f4fb287..0000000
--- a/apps/stupid-interest-generator.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-//
-//  ndn_stupidinterestgenerator.h
-//  Abstraction
-//
-//  Created by Ilya Moiseenko on 05.08.11.
-//  Copyright 2011 UCLA. All rights reserved.
-//
-
-#include "ns3/application.h"
-#include "ns3/log.h"
-#include "ns3/address.h"
-#include "ns3/random-variable.h"
-#include "ns3/nstime.h"
-#include "ns3/event-id.h"
-#include "ns3/ptr.h"
-#include "ns3/udp-socket-factory.h"
-#include "ns3/socket.h"
-
-namespace ns3 
-{
-
-//namespace NDNabstraction
-//{
-    class Socket; //dynamic linking works in a somehow strange way
-    
-    class StupidInterestGenerator: public Application
-    {
-    public: 
-        static TypeId GetTypeId (void);
-        
-        StupidInterestGenerator ();
-        
-        virtual ~StupidInterestGenerator();
-        
-                
-    protected:
-        virtual void DoDispose (void);
-    private:
-        // inherited from Application base class.
-        virtual void StartApplication (void);    // Called at time specified by Start
-        virtual void StopApplication (void);     // Called at time specified by Stop
-        
-        //Time m_onTime;
-        Time m_offTime;
-        
-        Address         m_peer;         // Peer address
-        Ptr<Socket>     m_socket;
-        EventId         m_startStopEvent;     // Event id for next start or stop event
-        EventId         m_sendEvent;    // Eventid of pending "send packet" event
-        TypeId          m_tid;
-        
-        //helpers
-        void CancelEvents ();
-        
-        void Construct (Ptr<Node> n,
-                        const Address &remote,
-                        std::string tid,
-                        const RandomVariable& ontime,
-                        const RandomVariable& offtime,
-                        uint32_t size);
-        
-        // Event handlers
-        void StartSending ();
-        void StopSending ();
-        void SendPacket ();
-        
-    private:
-        void ScheduleNextTx ();
-        void ScheduleStartEvent ();
-        void ScheduleStopEvent ();
-        void ConnectionSucceeded (Ptr<Socket>);
-        void ConnectionFailed (Ptr<Socket>);
-        void Ignore (Ptr<Socket>);
-
-    };
-//}
-}
diff --git a/apps/stupid-interest-sink.cc b/apps/stupid-interest-sink.cc
deleted file mode 100644
index c9b166e..0000000
--- a/apps/stupid-interest-sink.cc
+++ /dev/null
@@ -1,189 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-//
-//  stupid-interest-sink.cpp
-//  Abstraction
-//
-//  Created by Ilya Moiseenko on 10.08.11.
-//  Copyright 2011 UCLA. All rights reserved.
-//
-
-#include "stupid-interest-sink.h"
-
-#include "ns3/address.h"
-#include "ns3/address-utils.h"
-#include "ns3/log.h"
-#include "ns3/inet-socket-address.h"
-#include "ns3/node.h"
-#include "ns3/socket.h"
-#include "ns3/udp-socket.h"
-#include "ns3/simulator.h"
-#include "ns3/socket-factory.h"
-#include "ns3/packet.h"
-#include "ns3/trace-source-accessor.h"
-#include "ns3/udp-socket-factory.h"
-
-using namespace std;
-
-namespace ns3 {
-    
-    NS_LOG_COMPONENT_DEFINE ("StupidInterestSink");
-    NS_OBJECT_ENSURE_REGISTERED (StupidInterestSink);
-    
-    TypeId 
-    StupidInterestSink::GetTypeId (void)
-    {
-        static TypeId tid = TypeId ("ns3::StupidInterestSink")
-        .SetParent<Application> ()
-        .AddConstructor<StupidInterestSink> ()
-        .AddAttribute ("Local", "The Address on which to Bind the rx socket.",
-                       AddressValue (),
-                       MakeAddressAccessor (&StupidInterestSink::m_local),
-                       MakeAddressChecker ())
-        .AddAttribute ("Protocol", "The type id of the protocol to use for the rx socket.",
-                       TypeIdValue (UdpSocketFactory::GetTypeId ()),
-                       MakeTypeIdAccessor (&StupidInterestSink::m_tid),
-                       MakeTypeIdChecker ())
-        .AddTraceSource ("Rx", "A packet has been received",
-                         MakeTraceSourceAccessor (&StupidInterestSink::m_rxTrace))
-        ;
-        return tid;
-    }
-    
-    StupidInterestSink::StupidInterestSink ()
-    {
-        NS_LOG_FUNCTION (this);
-        m_socket = 0;
-        m_totalRx = 0;
-    }
-    
-    StupidInterestSink::~StupidInterestSink()
-    {
-        NS_LOG_FUNCTION (this);
-    }
-    
-    uint32_t StupidInterestSink::GetTotalRx () const
-    {
-        return m_totalRx;
-    }
-    
-    Ptr<Socket>
-    StupidInterestSink::GetListeningSocket (void) const
-    {
-        NS_LOG_FUNCTION (this);
-        return m_socket;
-    }
-    
-    std::list<Ptr<Socket> >
-    StupidInterestSink::GetAcceptedSockets (void) const
-    {
-        NS_LOG_FUNCTION (this);
-        return m_socketList;
-    }
-    
-    void StupidInterestSink::DoDispose (void)
-    {
-        NS_LOG_FUNCTION (this);
-        m_socket = 0;
-        m_socketList.clear ();
-        
-        // chain up
-        Application::DoDispose ();
-    }
-    
-    
-    // Application Methods
-    void StupidInterestSink::StartApplication ()    // Called at time specified by Start
-    {
-        NS_LOG_FUNCTION (this);
-        // Create the socket if not already
-        if (!m_socket)
-        {
-            m_socket = Socket::CreateSocket (GetNode (), m_tid);
-            m_socket->Bind (m_local);
-            m_socket->Listen ();
-            m_socket->ShutdownSend ();
-            if (addressUtils::IsMulticast (m_local))
-            {
-                Ptr<UdpSocket> udpSocket = DynamicCast<UdpSocket> (m_socket);
-                if (udpSocket)
-                {
-                    // equivalent to setsockopt (MCAST_JOIN_GROUP)
-                    udpSocket->MulticastJoinGroup (0, m_local);
-                }
-                else
-                {
-                    NS_FATAL_ERROR ("Error: joining multicast on a non-UDP socket");
-                }
-            }
-        }
-        
-        m_socket->SetRecvCallback (MakeCallback (&StupidInterestSink::HandleRead, this));
-        m_socket->SetAcceptCallback (
-                                     MakeNullCallback<bool, Ptr<Socket>, const Address &> (),
-                                     MakeCallback (&StupidInterestSink::HandleAccept, this));
-        m_socket->SetCloseCallbacks (
-                                     MakeCallback (&StupidInterestSink::HandlePeerClose, this),
-                                     MakeCallback (&StupidInterestSink::HandlePeerError, this));
-    }
-    
-    void StupidInterestSink::StopApplication ()     // Called at time specified by Stop
-    {
-        NS_LOG_FUNCTION (this);
-        while(!m_socketList.empty ()) //these are accepted sockets, close them
-        {
-            Ptr<Socket> acceptedSocket = m_socketList.front ();
-            m_socketList.pop_front ();
-            acceptedSocket->Close ();
-        }
-        if (m_socket) 
-        {
-            m_socket->Close ();
-            m_socket->SetRecvCallback (MakeNullCallback<void, Ptr<Socket> > ());
-        }
-    }
-    
-    void StupidInterestSink::HandleRead (Ptr<Socket> socket)
-    {
-        NS_LOG_FUNCTION (this << socket);
-        Ptr<Packet> packet;
-        Address from;
-        while (packet = socket->RecvFrom (from))
-        {
-            if (packet->GetSize () == 0)
-            { //EOF
-                break;
-            }
-            if (InetSocketAddress::IsMatchingType (from))
-            {
-                m_totalRx += packet->GetSize ();
-                InetSocketAddress address = InetSocketAddress::ConvertFrom (from);
-                NS_LOG_INFO ("Received " << packet->GetSize () << " bytes from " <<
-                             address.GetIpv4 () << " [" << address << "]"
-                             << " total Rx " << m_totalRx);
-                //cast address to void , to suppress 'address' set but not used 
-                //compiler warning in optimized builds
-                (void) address;
-            }
-            m_rxTrace (packet, from);
-        }
-    }
-    
-    void StupidInterestSink::HandlePeerClose (Ptr<Socket> socket)
-    {
-        NS_LOG_INFO ("PktSink, peerClose");
-    }
-    
-    void StupidInterestSink::HandlePeerError (Ptr<Socket> socket)
-    {
-        NS_LOG_INFO ("PktSink, peerError");
-    }
-    
-    
-    void StupidInterestSink::HandleAccept (Ptr<Socket> s, const Address& from)
-    {
-        NS_LOG_FUNCTION (this << s << from);
-        s->SetRecvCallback (MakeCallback (&StupidInterestSink::HandleRead, this));
-        m_socketList.push_back (s);
-    }
-    
-} // Namespace ns3
diff --git a/apps/stupid-interest-sink.h b/apps/stupid-interest-sink.h
deleted file mode 100644
index b750907..0000000
--- a/apps/stupid-interest-sink.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-//
-//  stupid-interest-sink.h
-//  Abstraction
-//
-//  Created by Ilya Moiseenko on 10.08.11.
-//  Copyright 2011 UCLA. All rights reserved.
-//
-
-#include "ns3/application.h"
-#include "ns3/event-id.h"
-#include "ns3/ptr.h"
-#include "ns3/traced-callback.h"
-#include "ns3/address.h"
-
-namespace ns3 
-{
-    
-    class Address;
-    class Socket;
-    class Packet;
-
-    class StupidInterestSink : public Application
-    {
-    public:
-        static TypeId GetTypeId (void);
-        StupidInterestSink ();
-        
-        virtual ~StupidInterestSink ();
-        
-        /**
-         * \return the total bytes received in this sink app
-         */
-        uint32_t GetTotalRx () const;
-        
-        /**
-         * \return pointer to listening socket
-         */
-        Ptr<Socket> GetListeningSocket (void) const;
-        
-        /**
-         * \return list of pointers to accepted sockets
-         */
-        std::list<Ptr<Socket> > GetAcceptedSockets (void) const;
-        
-    protected:
-        virtual void DoDispose (void);
-    private:
-        // inherited from Application base class.
-        virtual void StartApplication (void);    // Called at time specified by Start
-        virtual void StopApplication (void);     // Called at time specified by Stop
-        
-        void HandleRead (Ptr<Socket>);
-        void HandleAccept (Ptr<Socket>, const Address& from);
-        void HandlePeerClose (Ptr<Socket>);
-        void HandlePeerError (Ptr<Socket>);
-        
-        // In the case of TCP, each socket accept returns a new socket, so the 
-        // listening socket is stored seperately from the accepted sockets
-        Ptr<Socket>     m_socket;       // Listening socket
-        std::list<Ptr<Socket> > m_socketList; //the accepted sockets
-        
-        Address         m_local;        // Local address to bind to
-        uint32_t        m_totalRx;      // Total bytes received
-        TypeId          m_tid;          // Protocol TypeId
-        TracedCallback<Ptr<const Packet>, const Address &> m_rxTrace;
-    };
-}
diff --git a/bindings/callbacks_list.py b/bindings/callbacks_list.py
index 01ba5ff..73e61b2 100644
--- a/bindings/callbacks_list.py
+++ b/bindings/callbacks_list.py
@@ -1,4 +1,8 @@
 callback_classes = [
+    ['void', 'ns3::Ptr<ns3::Socket>', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::Ptr<ns3::Socket>', 'unsigned int', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['void', 'ns3::Ptr<ns3::Socket>', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
+    ['bool', 'ns3::Ptr<ns3::Socket>', 'ns3::Address const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['void', 'ns3::Ptr<ns3::CcnxFace> const&', 'ns3::Ptr<ns3::Packet const> const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
     ['bool', 'ns3::Ptr<ns3::Packet const> const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', '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 --git a/bindings/modulegen__gcc_ILP32.py b/bindings/modulegen__gcc_ILP32.py
index 2030e69..0b0cd40 100644
--- a/bindings/modulegen__gcc_ILP32.py
+++ b/bindings/modulegen__gcc_ILP32.py
@@ -76,6 +76,10 @@
     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-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress [class]
+    module.add_class('Ipv4InterfaceAddress', import_from_module='ns.internet')
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e [enumeration]
+    module.add_enum('InterfaceAddressScope_e', ['HOST', 'LINK', 'GLOBAL'], outer_class=root_module['ns3::Ipv4InterfaceAddress'], import_from_module='ns.internet')
     ## 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]
@@ -102,14 +106,6 @@
     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'])
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## random-variable.h (module 'core'): ns3::SeedManager [class]
@@ -120,10 +116,10 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Chunk', 'ns3::ObjectBase', 'ns3::DefaultDeleter<ns3::Chunk>'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## 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')
     ## spring-mobility-helper.h (module 'NDNabstraction'): ns3::SpringMobilityHelper [class]
     module.add_class('SpringMobilityHelper')
-    ## 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')
     ## random-variable.h (module 'core'): ns3::TriangularVariable [class]
@@ -170,6 +166,12 @@
     module.add_class('Header', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
     ## random-variable.h (module 'core'): ns3::IntEmpiricalVariable [class]
     module.add_class('IntEmpiricalVariable', import_from_module='ns.core', parent=root_module['ns3::EmpiricalVariable'])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header [class]
+    module.add_class('Ipv4Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::DscpType [enumeration]
+    module.add_enum('DscpType', ['DscpDefault', 'CS1', 'AF11', 'AF12', 'AF13', 'CS2', 'AF21', 'AF22', 'AF23', 'CS3', 'AF31', 'AF32', 'AF33', 'CS4', 'AF41', 'AF42', 'AF43', 'CS5', 'EF', 'CS6', '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', ['NotECT', 'ECT1', 'ECT0', 'CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## random-variable.h (module 'core'): ns3::LogNormalVariable [class]
     module.add_class('LogNormalVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## random-variable.h (module 'core'): ns3::NormalVariable [class]
@@ -198,16 +200,38 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::CcnxL3Tracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CcnxL3Tracer>'], 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::CcnxNameComponents, ns3::empty, ns3::DefaultDeleter<ns3::CcnxNameComponents> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::CcnxNameComponents', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CcnxNameComponents>'], 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::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::CcnxPathWeightTracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CcnxPathWeightTracer>'], 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::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::Ipv4AppTracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4AppTracer>'], 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::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::Ipv4L3Tracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4L3Tracer>'], 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]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4MulticastRoute', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4MulticastRoute>'], 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::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4Route', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4Route>'], 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::TopologyReader, ns3::empty, ns3::DefaultDeleter<ns3::TopologyReader> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::TopologyReader', 'ns3::empty', 'ns3::DefaultDeleter<ns3::TopologyReader>'], 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'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::WindowTracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::WindowTracer>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## socket.h (module 'network'): ns3::Socket [class]
+    module.add_class('Socket', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## socket.h (module 'network'): ns3::Socket::SocketErrno [enumeration]
+    module.add_enum('SocketErrno', ['ERROR_NOTERROR', 'ERROR_ISCONN', 'ERROR_NOTCONN', 'ERROR_MSGSIZE', 'ERROR_AGAIN', 'ERROR_SHUTDOWN', 'ERROR_OPNOTSUPP', 'ERROR_AFNOSUPPORT', 'ERROR_INVAL', 'ERROR_BADF', 'ERROR_NOROUTETOHOST', 'ERROR_NODEV', 'ERROR_ADDRNOTAVAIL', 'ERROR_ADDRINUSE', 'SOCKET_ERRNO_LAST'], outer_class=root_module['ns3::Socket'], import_from_module='ns.network')
+    ## socket.h (module 'network'): ns3::Socket::SocketType [enumeration]
+    module.add_enum('SocketType', ['NS3_SOCK_STREAM', 'NS3_SOCK_SEQPACKET', 'NS3_SOCK_DGRAM', 'NS3_SOCK_RAW'], outer_class=root_module['ns3::Socket'], import_from_module='ns.network')
+    ## tag.h (module 'network'): ns3::Tag [class]
+    module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::Object'])
     ## nstime.h (module 'core'): ns3::Time [class]
     module.add_class('Time', import_from_module='ns.core')
     ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
@@ -222,6 +246,12 @@
     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'])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag [class]
+    module.add_class('WeightsPathStretchTag', parent=root_module['ns3::Tag'])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair [struct]
+    module.add_class('NodeWeightPair', outer_class=root_module['ns3::WeightsPathStretchTag'])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::WindowTracer [class]
+    module.add_class('WindowTracer', parent=root_module['ns3::SimpleRefCount< ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >'])
     ## annotated-topology-reader.h (module 'NDNabstraction'): ns3::AnnotatedTopologyReader [class]
     module.add_class('AnnotatedTopologyReader', parent=root_module['ns3::TopologyReader'])
     ## application.h (module 'network'): ns3::Application [class]
@@ -232,6 +262,10 @@
     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> >'])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesChecker [class]
+    module.add_class('BatchesChecker', parent=root_module['ns3::AttributeChecker'])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue [class]
+    module.add_class('BatchesValue', parent=root_module['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]
@@ -246,6 +280,8 @@
     module.add_class('CcnxApp', parent=root_module['ns3::Application'])
     ## ccnx-app-tracer.h (module 'NDNabstraction'): ns3::CcnxAppTracer [class]
     module.add_class('CcnxAppTracer', parent=root_module['ns3::SimpleRefCount< ns3::CcnxAppTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxAppTracer> >'])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::CcnxConsumerWindowTracer [class]
+    module.add_class('CcnxConsumerWindowTracer', parent=root_module['ns3::WindowTracer'])
     ## ccnx-content-object-header.h (module 'NDNabstraction'): ns3::CcnxContentObjectHeader [class]
     module.add_class('CcnxContentObjectHeader', parent=root_module['ns3::Header'])
     ## ccnx-content-object-header.h (module 'NDNabstraction'): ns3::CcnxContentObjectTail [class]
@@ -272,20 +308,42 @@
     module.add_class('CcnxNameComponentsChecker', parent=root_module['ns3::AttributeChecker'])
     ## ccnx-name-components.h (module 'NDNabstraction'): ns3::CcnxNameComponentsValue [class]
     module.add_class('CcnxNameComponentsValue', parent=root_module['ns3::AttributeValue'])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): ns3::CcnxPathWeightTracer [class]
+    module.add_class('CcnxPathWeightTracer', parent=root_module['ns3::SimpleRefCount< ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >'])
     ## 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> >'])
     ## integer.h (module 'core'): ns3::IntegerValue [class]
     module.add_class('IntegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## 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]
     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-app-tracer.h (module 'NDNabstraction'): ns3::Ipv4AppTracer [class]
+    module.add_class('Ipv4AppTracer', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >'])
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol [class]
+    module.add_class('Ipv4L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv4'])
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol::DropReason [enumeration]
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_BAD_CHECKSUM', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv4L3Protocol'], import_from_module='ns.internet')
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): ns3::Ipv4L3Tracer [class]
+    module.add_class('Ipv4L3Tracer', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >'])
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol [class]
+    module.add_class('Ipv4L4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::RxStatus [enumeration]
+    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::Ipv4L4Protocol'], import_from_module='ns.internet')
     ## 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'])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute [class]
+    module.add_class('Ipv4MulticastRoute', import_from_module='ns.internet', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >'])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Route [class]
+    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-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]
@@ -308,6 +366,8 @@
     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> >'])
     ## random-variable.h (module 'core'): ns3::RandomVariableChecker [class]
@@ -318,8 +378,16 @@
     module.add_class('RocketfuelWeightsReader', parent=root_module['ns3::AnnotatedTopologyReader'])
     ## rocketfuel-weights-reader.h (module 'NDNabstraction'): ns3::RocketfuelWeightsReader [enumeration]
     module.add_enum('', ['WEIGHTS', 'LATENCIES', 'POSITIONS'], outer_class=root_module['ns3::RocketfuelWeightsReader'])
+    ## socket.h (module 'network'): ns3::SocketAddressTag [class]
+    module.add_class('SocketAddressTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+    ## socket.h (module 'network'): ns3::SocketIpTtlTag [class]
+    module.add_class('SocketIpTtlTag', 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'])
     ## spring-mobility-model.h (module 'NDNabstraction'): ns3::SpringMobilityModel [class]
     module.add_class('SpringMobilityModel', parent=root_module['ns3::MobilityModel'])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::TcpCongestionWindowTracer [class]
+    module.add_class('TcpCongestionWindowTracer', parent=root_module['ns3::WindowTracer'])
     ## nstime.h (module 'core'): ns3::TimeChecker [class]
     module.add_class('TimeChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## nstime.h (module 'core'): ns3::TimeValue [class]
@@ -341,8 +409,11 @@
     ## 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::list< ns3::WeightsPathStretchTag::NodeWeightPair >', 'ns3::WeightsPathStretchTag::NodeWeightPair', container_type='list')
+    module.add_container('std::list< ns3::TopologyReader::Link >', 'ns3::TopologyReader::Link', container_type='list')
     module.add_container('std::list< boost::reference_wrapper< std::string const > >', 'boost::reference_wrapper< std::basic_string< char, std::char_traits< char >, std::allocator< char > > const >', container_type='list')
     module.add_container('std::list< std::string >', 'std::string', container_type='list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
     typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
     typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
     typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
@@ -401,6 +472,7 @@
     register_Ns3CcnxUnknownHeaderException_methods(root_module, root_module['ns3::CcnxUnknownHeaderException'])
     register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
     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_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
@@ -412,17 +484,13 @@
     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_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
     register_Ns3SimpleRefCount__Ns3Chunk_Ns3ObjectBase_Ns3DefaultDeleter__lt__ns3Chunk__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Chunk, ns3::ObjectBase, ns3::DefaultDeleter<ns3::Chunk> >'])
     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_Ns3SpringMobilityHelper_methods(root_module, root_module['ns3::SpringMobilityHelper'])
-    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3TriangularVariable_methods(root_module, root_module['ns3::TriangularVariable'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -445,6 +513,7 @@
     register_Ns3GammaVariable_methods(root_module, root_module['ns3::GammaVariable'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3IntEmpiricalVariable_methods(root_module, root_module['ns3::IntEmpiricalVariable'])
+    register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
     register_Ns3LogNormalVariable_methods(root_module, root_module['ns3::LogNormalVariable'])
     register_Ns3NormalVariable_methods(root_module, root_module['ns3::NormalVariable'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
@@ -459,27 +528,42 @@
     register_Ns3SimpleRefCount__Ns3CcnxFibEntry_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxFibEntry__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxFibEntry, ns3::empty, ns3::DefaultDeleter<ns3::CcnxFibEntry> >'])
     register_Ns3SimpleRefCount__Ns3CcnxL3Tracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxL3Tracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxL3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxL3Tracer> >'])
     register_Ns3SimpleRefCount__Ns3CcnxNameComponents_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxNameComponents__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxNameComponents, ns3::empty, ns3::DefaultDeleter<ns3::CcnxNameComponents> >'])
+    register_Ns3SimpleRefCount__Ns3CcnxPathWeightTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxPathWeightTracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >'])
     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__Ns3Ipv4AppTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4AppTracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >'])
+    register_Ns3SimpleRefCount__Ns3Ipv4L3Tracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4L3Tracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >'])
+    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> >'])
     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__Ns3TopologyReader_Ns3Empty_Ns3DefaultDeleter__lt__ns3TopologyReader__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::TopologyReader, ns3::empty, ns3::DefaultDeleter<ns3::TopologyReader> >'])
     register_Ns3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
+    register_Ns3SimpleRefCount__Ns3WindowTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3WindowTracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >'])
+    register_Ns3Socket_methods(root_module, root_module['ns3::Socket'])
+    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3Time_methods(root_module, root_module['ns3::Time'])
     register_Ns3TopologyReader_methods(root_module, root_module['ns3::TopologyReader'])
     register_Ns3TopologyReaderLink_methods(root_module, root_module['ns3::TopologyReader::Link'])
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
+    register_Ns3WeightsPathStretchTag_methods(root_module, root_module['ns3::WeightsPathStretchTag'])
+    register_Ns3WeightsPathStretchTagNodeWeightPair_methods(root_module, root_module['ns3::WeightsPathStretchTag::NodeWeightPair'])
+    register_Ns3WindowTracer_methods(root_module, root_module['ns3::WindowTracer'])
     register_Ns3AnnotatedTopologyReader_methods(root_module, root_module['ns3::AnnotatedTopologyReader'])
     register_Ns3Application_methods(root_module, root_module['ns3::Application'])
     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_Ns3BatchesChecker_methods(root_module, root_module['ns3::BatchesChecker'])
+    register_Ns3BatchesValue_methods(root_module, root_module['ns3::BatchesValue'])
     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_Ns3Ccnx_methods(root_module, root_module['ns3::Ccnx'])
     register_Ns3CcnxApp_methods(root_module, root_module['ns3::CcnxApp'])
     register_Ns3CcnxAppTracer_methods(root_module, root_module['ns3::CcnxAppTracer'])
+    register_Ns3CcnxConsumerWindowTracer_methods(root_module, root_module['ns3::CcnxConsumerWindowTracer'])
     register_Ns3CcnxContentObjectHeader_methods(root_module, root_module['ns3::CcnxContentObjectHeader'])
     register_Ns3CcnxContentObjectTail_methods(root_module, root_module['ns3::CcnxContentObjectTail'])
     register_Ns3CcnxFace_methods(root_module, root_module['ns3::CcnxFace'])
@@ -492,13 +576,22 @@
     register_Ns3CcnxNameComponents_methods(root_module, root_module['ns3::CcnxNameComponents'])
     register_Ns3CcnxNameComponentsChecker_methods(root_module, root_module['ns3::CcnxNameComponentsChecker'])
     register_Ns3CcnxNameComponentsValue_methods(root_module, root_module['ns3::CcnxNameComponentsValue'])
+    register_Ns3CcnxPathWeightTracer_methods(root_module, root_module['ns3::CcnxPathWeightTracer'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
+    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'])
+    register_Ns3Ipv4AppTracer_methods(root_module, root_module['ns3::Ipv4AppTracer'])
+    register_Ns3Ipv4L3Protocol_methods(root_module, root_module['ns3::Ipv4L3Protocol'])
+    register_Ns3Ipv4L3Tracer_methods(root_module, root_module['ns3::Ipv4L3Tracer'])
+    register_Ns3Ipv4L4Protocol_methods(root_module, root_module['ns3::Ipv4L4Protocol'])
     register_Ns3Ipv4MaskChecker_methods(root_module, root_module['ns3::Ipv4MaskChecker'])
     register_Ns3Ipv4MaskValue_methods(root_module, root_module['ns3::Ipv4MaskValue'])
+    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_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'])
@@ -509,11 +602,16 @@
     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_Ns3RandomVariableChecker_methods(root_module, root_module['ns3::RandomVariableChecker'])
     register_Ns3RandomVariableValue_methods(root_module, root_module['ns3::RandomVariableValue'])
     register_Ns3RocketfuelWeightsReader_methods(root_module, root_module['ns3::RocketfuelWeightsReader'])
+    register_Ns3SocketAddressTag_methods(root_module, root_module['ns3::SocketAddressTag'])
+    register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
+    register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
     register_Ns3SpringMobilityModel_methods(root_module, root_module['ns3::SpringMobilityModel'])
+    register_Ns3TcpCongestionWindowTracer_methods(root_module, root_module['ns3::TcpCongestionWindowTracer'])
     register_Ns3TimeChecker_methods(root_module, root_module['ns3::TimeChecker'])
     register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
@@ -1109,8 +1207,8 @@
     cls.add_binary_comparison_operator('<')
     ## ccnx-fib.h (module 'NDNabstraction'): ns3::CcnxFibFaceMetric::CcnxFibFaceMetric(ns3::CcnxFibFaceMetric const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::CcnxFibFaceMetric const &', 'arg0')])
-    ## ccnx-fib.h (module 'NDNabstraction'): ns3::CcnxFibFaceMetric::CcnxFibFaceMetric(ns3::Ptr<ns3::CcnxFace> face, int cost) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::CcnxFace >', 'face'), param('int', 'cost')])
+    ## ccnx-fib.h (module 'NDNabstraction'): ns3::CcnxFibFaceMetric::CcnxFibFaceMetric(ns3::Ptr<ns3::CcnxFace> face, int32_t cost) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::CcnxFace >', 'face'), param('int32_t', 'cost')])
     ## ccnx-fib.h (module 'NDNabstraction'): ns3::Ptr<ns3::CcnxFace> ns3::CcnxFibFaceMetric::GetFace() const [member function]
     cls.add_method('GetFace', 
                    'ns3::Ptr< ns3::CcnxFace >', 
@@ -1189,32 +1287,45 @@
                    'ns3::Ptr< ns3::CcnxFaceContainer >', 
                    [], 
                    is_const=True)
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::AddRoute(std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric) const [member function]
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::AddRoute(std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric) [member function]
     cls.add_method('AddRoute', 
                    'void', 
                    [param('std::string', 'nodeName'), param('std::string', 'prefix'), param('uint32_t', 'faceId'), param('int32_t', 'metric')], 
-                   is_const=True)
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::AddRoute(ns3::Ptr<ns3::Node> node, std::string prefix, ns3::Ptr<ns3::CcnxFace> face, int32_t metric) const [member function]
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::AddRoute(ns3::Ptr<ns3::Node> node, std::string prefix, ns3::Ptr<ns3::CcnxFace> face, int32_t metric) [member function]
     cls.add_method('AddRoute', 
                    'void', 
                    [param('ns3::Ptr< ns3::Node >', 'node'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::CcnxFace >', 'face'), param('int32_t', 'metric')], 
-                   is_const=True)
+                   is_static=True)
     ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::SetDefaultRoutes(bool needSet) [member function]
     cls.add_method('SetDefaultRoutes', 
                    'void', 
                    [param('bool', 'needSet')])
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::InstallFakeGlobalRoutes() [member function]
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallFakeGlobalRoutes() [member function]
     cls.add_method('InstallFakeGlobalRoutes', 
                    'void', 
-                   [])
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::InstallRouteTo(ns3::Ptr<ns3::Node> node) [member function]
+                   [], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallFakeGlobalRoutesImpl() [member function]
+    cls.add_method('InstallFakeGlobalRoutesImpl', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallRouteTo(ns3::Ptr<ns3::Node> node) [member function]
     cls.add_method('InstallRouteTo', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::InstallRoutesToAll() [member function]
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallRouteTo(std::string const & prefix, ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('InstallRouteTo', 
+                   'void', 
+                   [param('std::string const &', 'prefix'), param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallRoutesToAll() [member function]
     cls.add_method('InstallRoutesToAll', 
                    'void', 
-                   [])
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3CcnxTraceHelper_methods(root_module, cls):
@@ -1230,10 +1341,34 @@
     cls.add_method('EnableAggregateL3All', 
                    'void', 
                    [])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableIpv4RateL3All(std::string const & ipv4RateTrace="ipv4-rate.log") [member function]
+    cls.add_method('EnableIpv4RateL3All', 
+                   'void', 
+                   [param('std::string const &', 'ipv4RateTrace', default_value='"ipv4-rate.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableIpv4SeqsAppAll(std::string const & appSeqsTrace="app-seqs.log") [member function]
+    cls.add_method('EnableIpv4SeqsAppAll', 
+                   'void', 
+                   [param('std::string const &', 'appSeqsTrace', default_value='"app-seqs.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnablePathWeights(std::string const & pathWeights) [member function]
+    cls.add_method('EnablePathWeights', 
+                   'void', 
+                   [param('std::string const &', 'pathWeights')])
     ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableRateL3All(std::string const & l3RateTrace="l3-rate.log") [member function]
     cls.add_method('EnableRateL3All', 
                    'void', 
                    [param('std::string const &', 'l3RateTrace', default_value='"l3-rate.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableSeqsAppAll(std::string const & app, std::string const & appSeqsTrace="app-seqs.log") [member function]
+    cls.add_method('EnableSeqsAppAll', 
+                   'void', 
+                   [param('std::string const &', 'app'), param('std::string const &', 'appSeqsTrace', default_value='"app-seqs.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableWindowsAll(std::string const & windowTrace="windows.log") [member function]
+    cls.add_method('EnableWindowsAll', 
+                   'void', 
+                   [param('std::string const &', 'windowTrace', default_value='"windows.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableWindowsTcpAll(std::string const & windowTrace) [member function]
+    cls.add_method('EnableWindowsTcpAll', 
+                   'void', 
+                   [param('std::string const &', 'windowTrace')])
     ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::SetAppTraceFile(std::string const & appTrace="apps.log") [member function]
     cls.add_method('SetAppTraceFile', 
                    'void', 
@@ -1242,6 +1377,10 @@
     cls.add_method('SetL3TraceFile', 
                    'void', 
                    [param('std::string const &', 'l3Trace', default_value='"l3.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::TcpConnect(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('TcpConnect', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
     return
 
 def register_Ns3CcnxUnknownHeaderException_methods(root_module, cls):
@@ -1404,6 +1543,67 @@
                    [param('char const *', 'address')])
     return
 
+def register_Ns3Ipv4InterfaceAddress_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress() [constructor]
+    cls.add_constructor([])
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress(ns3::Ipv4Address local, ns3::Ipv4Mask mask) [constructor]
+    cls.add_constructor([param('ns3::Ipv4Address', 'local'), param('ns3::Ipv4Mask', 'mask')])
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress(ns3::Ipv4InterfaceAddress const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4InterfaceAddress const &', 'o')])
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4InterfaceAddress::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4InterfaceAddress::GetLocal() const [member function]
+    cls.add_method('GetLocal', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4Mask ns3::Ipv4InterfaceAddress::GetMask() const [member function]
+    cls.add_method('GetMask', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e ns3::Ipv4InterfaceAddress::GetScope() const [member function]
+    cls.add_method('GetScope', 
+                   'ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): bool ns3::Ipv4InterfaceAddress::IsSecondary() const [member function]
+    cls.add_method('IsSecondary', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetBroadcast(ns3::Ipv4Address broadcast) [member function]
+    cls.add_method('SetBroadcast', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'broadcast')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetLocal(ns3::Ipv4Address local) [member function]
+    cls.add_method('SetLocal', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'local')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetMask(ns3::Ipv4Mask mask) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::Ipv4Mask', 'mask')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetPrimary() [member function]
+    cls.add_method('SetPrimary', 
+                   'void', 
+                   [])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetScope(ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e scope) [member function]
+    cls.add_method('SetScope', 
+                   'void', 
+                   [param('ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 'scope')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetSecondary() [member function]
+    cls.add_method('SetSecondary', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3Ipv4Mask_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2025,80 +2225,6 @@
                    [])
     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', 
-                   [])
-    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_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -2182,6 +2308,96 @@
                    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::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True, deprecated=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::RunOneEvent() [member function]
+    cls.add_method('RunOneEvent', 
+                   'void', 
+                   [], 
+                   is_static=True, deprecated=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_Ns3SpringMobilityHelper_methods(root_module, cls):
     ## spring-mobility-helper.h (module 'NDNabstraction'): ns3::SpringMobilityHelper::SpringMobilityHelper() [constructor]
     cls.add_constructor([])
@@ -2199,38 +2415,6 @@
                    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')])
@@ -2832,6 +3016,178 @@
     cls.add_constructor([])
     return
 
+def register_Ns3Ipv4Header_methods(root_module, cls):
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::Ipv4Header(ns3::Ipv4Header const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Header const &', 'arg0')])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::Ipv4Header() [constructor]
+    cls.add_constructor([])
+    ## ipv4-header.h (module 'internet'): uint32_t ns3::Ipv4Header::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## ipv4-header.h (module 'internet'): std::string ns3::Ipv4Header::DscpTypeToString(ns3::Ipv4Header::DscpType dscp) const [member function]
+    cls.add_method('DscpTypeToString', 
+                   'std::string', 
+                   [param('ns3::Ipv4Header::DscpType', 'dscp')], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): std::string ns3::Ipv4Header::EcnTypeToString(ns3::Ipv4Header::EcnType ecn) const [member function]
+    cls.add_method('EcnTypeToString', 
+                   'std::string', 
+                   [param('ns3::Ipv4Header::EcnType', 'ecn')], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::EnableChecksum() [member function]
+    cls.add_method('EnableChecksum', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Header::GetDestination() const [member function]
+    cls.add_method('GetDestination', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::DscpType ns3::Ipv4Header::GetDscp() const [member function]
+    cls.add_method('GetDscp', 
+                   'ns3::Ipv4Header::DscpType', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType ns3::Ipv4Header::GetEcn() const [member function]
+    cls.add_method('GetEcn', 
+                   'ns3::Ipv4Header::EcnType', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint16_t ns3::Ipv4Header::GetFragmentOffset() const [member function]
+    cls.add_method('GetFragmentOffset', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint16_t ns3::Ipv4Header::GetIdentification() const [member function]
+    cls.add_method('GetIdentification', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): ns3::TypeId ns3::Ipv4Header::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): uint16_t ns3::Ipv4Header::GetPayloadSize() const [member function]
+    cls.add_method('GetPayloadSize', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint8_t ns3::Ipv4Header::GetProtocol() const [member function]
+    cls.add_method('GetProtocol', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint32_t ns3::Ipv4Header::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Header::GetSource() const [member function]
+    cls.add_method('GetSource', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint8_t ns3::Ipv4Header::GetTos() const [member function]
+    cls.add_method('GetTos', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint8_t ns3::Ipv4Header::GetTtl() const [member function]
+    cls.add_method('GetTtl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): static ns3::TypeId ns3::Ipv4Header::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-header.h (module 'internet'): bool ns3::Ipv4Header::IsChecksumOk() const [member function]
+    cls.add_method('IsChecksumOk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): bool ns3::Ipv4Header::IsDontFragment() const [member function]
+    cls.add_method('IsDontFragment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): bool ns3::Ipv4Header::IsLastFragment() const [member function]
+    cls.add_method('IsLastFragment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetDestination(ns3::Ipv4Address destination) [member function]
+    cls.add_method('SetDestination', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'destination')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetDontFragment() [member function]
+    cls.add_method('SetDontFragment', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetDscp(ns3::Ipv4Header::DscpType dscp) [member function]
+    cls.add_method('SetDscp', 
+                   'void', 
+                   [param('ns3::Ipv4Header::DscpType', 'dscp')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetEcn(ns3::Ipv4Header::EcnType ecn) [member function]
+    cls.add_method('SetEcn', 
+                   'void', 
+                   [param('ns3::Ipv4Header::EcnType', 'ecn')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetFragmentOffset(uint16_t offsetBytes) [member function]
+    cls.add_method('SetFragmentOffset', 
+                   'void', 
+                   [param('uint16_t', 'offsetBytes')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetIdentification(uint16_t identification) [member function]
+    cls.add_method('SetIdentification', 
+                   'void', 
+                   [param('uint16_t', 'identification')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetLastFragment() [member function]
+    cls.add_method('SetLastFragment', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetMayFragment() [member function]
+    cls.add_method('SetMayFragment', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetMoreFragments() [member function]
+    cls.add_method('SetMoreFragments', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetPayloadSize(uint16_t size) [member function]
+    cls.add_method('SetPayloadSize', 
+                   'void', 
+                   [param('uint16_t', 'size')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetProtocol(uint8_t num) [member function]
+    cls.add_method('SetProtocol', 
+                   'void', 
+                   [param('uint8_t', 'num')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetSource(ns3::Ipv4Address source) [member function]
+    cls.add_method('SetSource', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'source')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetTos(uint8_t tos) [member function]
+    cls.add_method('SetTos', 
+                   'void', 
+                   [param('uint8_t', 'tos')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetTtl(uint8_t ttl) [member function]
+    cls.add_method('SetTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    return
+
 def register_Ns3LogNormalVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::LogNormalVariable::LogNormalVariable(ns3::LogNormalVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogNormalVariable const &', 'arg0')])
@@ -3041,6 +3397,18 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3CcnxPathWeightTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxPathWeightTracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter< ns3::CcnxPathWeightTracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >::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([])
@@ -3053,6 +3421,54 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3Ipv4AppTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4AppTracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4AppTracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Ipv4L3Tracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4L3Tracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4L3Tracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Ipv4MulticastRoute_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4MulticastRoute__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4MulticastRoute > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Ipv4Route_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4Route__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4Route > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >::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([])
@@ -3065,6 +3481,18 @@
                    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([])
@@ -3101,6 +3529,278 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3WindowTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3WindowTracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter< ns3::WindowTracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3Socket_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::Socket::Socket(ns3::Socket const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Socket const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::Socket::Socket() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): int ns3::Socket::Bind(ns3::Address const & address) [member function]
+    cls.add_method('Bind', 
+                   'int', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Bind() [member function]
+    cls.add_method('Bind', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::BindToNetDevice(ns3::Ptr<ns3::NetDevice> netdevice) [member function]
+    cls.add_method('BindToNetDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'netdevice')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Close() [member function]
+    cls.add_method('Close', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Connect(ns3::Address const & address) [member function]
+    cls.add_method('Connect', 
+                   'int', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): static ns3::Ptr<ns3::Socket> ns3::Socket::CreateSocket(ns3::Ptr<ns3::Node> node, ns3::TypeId tid) [member function]
+    cls.add_method('CreateSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
+                   is_static=True)
+    ## socket.h (module 'network'): bool ns3::Socket::GetAllowBroadcast() const [member function]
+    cls.add_method('GetAllowBroadcast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::NetDevice> ns3::Socket::GetBoundNetDevice() [member function]
+    cls.add_method('GetBoundNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [])
+    ## socket.h (module 'network'): ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
+    cls.add_method('GetErrno', 
+                   'ns3::Socket::SocketErrno', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::Socket::GetRxAvailable() const [member function]
+    cls.add_method('GetRxAvailable', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::GetSockName(ns3::Address & address) const [member function]
+    cls.add_method('GetSockName', 
+                   'int', 
+                   [param('ns3::Address &', 'address')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Socket::SocketType ns3::Socket::GetSocketType() const [member function]
+    cls.add_method('GetSocketType', 
+                   'ns3::Socket::SocketType', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::Socket::GetTxAvailable() const [member function]
+    cls.add_method('GetTxAvailable', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): bool ns3::Socket::IsRecvPktInfo() const [member function]
+    cls.add_method('IsRecvPktInfo', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## socket.h (module 'network'): int ns3::Socket::Listen() [member function]
+    cls.add_method('Listen', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::Recv(uint32_t maxSize, uint32_t flags) [member function]
+    cls.add_method('Recv', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'maxSize'), param('uint32_t', 'flags')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::Recv() [member function]
+    cls.add_method('Recv', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [])
+    ## socket.h (module 'network'): int ns3::Socket::Recv(uint8_t * buf, uint32_t size, uint32_t flags) [member function]
+    cls.add_method('Recv', 
+                   'int', 
+                   [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags')])
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::RecvFrom(uint32_t maxSize, uint32_t flags, ns3::Address & fromAddress) [member function]
+    cls.add_method('RecvFrom', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'maxSize'), param('uint32_t', 'flags'), param('ns3::Address &', 'fromAddress')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::RecvFrom(ns3::Address & fromAddress) [member function]
+    cls.add_method('RecvFrom', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('ns3::Address &', 'fromAddress')])
+    ## socket.h (module 'network'): int ns3::Socket::RecvFrom(uint8_t * buf, uint32_t size, uint32_t flags, ns3::Address & fromAddress) [member function]
+    cls.add_method('RecvFrom', 
+                   'int', 
+                   [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address &', 'fromAddress')])
+    ## socket.h (module 'network'): int ns3::Socket::Send(ns3::Ptr<ns3::Packet> p, uint32_t flags) [member function]
+    cls.add_method('Send', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Send(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('Send', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## socket.h (module 'network'): int ns3::Socket::Send(uint8_t const * buf, uint32_t size, uint32_t flags) [member function]
+    cls.add_method('Send', 
+                   'int', 
+                   [param('uint8_t const *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags')])
+    ## socket.h (module 'network'): int ns3::Socket::SendTo(ns3::Ptr<ns3::Packet> p, uint32_t flags, ns3::Address const & toAddress) [member function]
+    cls.add_method('SendTo', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags'), param('ns3::Address const &', 'toAddress')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::SendTo(uint8_t const * buf, uint32_t size, uint32_t flags, ns3::Address const & address) [member function]
+    cls.add_method('SendTo', 
+                   'int', 
+                   [param('uint8_t const *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address const &', 'address')])
+    ## socket.h (module 'network'): void ns3::Socket::SetAcceptCallback(ns3::Callback<bool, ns3::Ptr<ns3::Socket>, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionRequest, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> newConnectionCreated) [member function]
+    cls.add_method('SetAcceptCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::Socket >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionRequest'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'newConnectionCreated')])
+    ## socket.h (module 'network'): bool ns3::Socket::SetAllowBroadcast(bool allowBroadcast) [member function]
+    cls.add_method('SetAllowBroadcast', 
+                   'bool', 
+                   [param('bool', 'allowBroadcast')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::SetCloseCallbacks(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> normalClose, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> errorClose) [member function]
+    cls.add_method('SetCloseCallbacks', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'normalClose'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'errorClose')])
+    ## socket.h (module 'network'): void ns3::Socket::SetConnectCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionSucceeded, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionFailed) [member function]
+    cls.add_method('SetConnectCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionSucceeded'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionFailed')])
+    ## socket.h (module 'network'): void ns3::Socket::SetDataSentCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> dataSent) [member function]
+    cls.add_method('SetDataSentCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')])
+    ## socket.h (module 'network'): void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
+    cls.add_method('SetRecvCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'arg0')])
+    ## socket.h (module 'network'): void ns3::Socket::SetRecvPktInfo(bool flag) [member function]
+    cls.add_method('SetRecvPktInfo', 
+                   'void', 
+                   [param('bool', 'flag')])
+    ## socket.h (module 'network'): void ns3::Socket::SetSendCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> sendCb) [member function]
+    cls.add_method('SetSendCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'sendCb')])
+    ## socket.h (module 'network'): int ns3::Socket::ShutdownRecv() [member function]
+    cls.add_method('ShutdownRecv', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::ShutdownSend() [member function]
+    cls.add_method('ShutdownSend', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::NotifyConnectionFailed() [member function]
+    cls.add_method('NotifyConnectionFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): bool ns3::Socket::NotifyConnectionRequest(ns3::Address const & from) [member function]
+    cls.add_method('NotifyConnectionRequest', 
+                   'bool', 
+                   [param('ns3::Address const &', 'from')], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyConnectionSucceeded() [member function]
+    cls.add_method('NotifyConnectionSucceeded', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyDataRecv() [member function]
+    cls.add_method('NotifyDataRecv', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyDataSent(uint32_t size) [member function]
+    cls.add_method('NotifyDataSent', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyErrorClose() [member function]
+    cls.add_method('NotifyErrorClose', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyNewConnectionCreated(ns3::Ptr<ns3::Socket> socket, ns3::Address const & from) [member function]
+    cls.add_method('NotifyNewConnectionCreated', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket'), param('ns3::Address const &', 'from')], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyNormalClose() [member function]
+    cls.add_method('NotifyNormalClose', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifySend(uint32_t spaceAvailable) [member function]
+    cls.add_method('NotifySend', 
+                   'void', 
+                   [param('uint32_t', 'spaceAvailable')], 
+                   visibility='protected')
+    return
+
+def register_Ns3Tag_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## 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_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
@@ -3303,6 +4003,8 @@
 def register_Ns3TopologyReaderLink_methods(root_module, cls):
     ## topology-reader.h (module 'topology-read'): ns3::TopologyReader::Link::Link(ns3::TopologyReader::Link const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TopologyReader::Link const &', 'arg0')])
+    ## topology-reader.h (module 'topology-read'): ns3::TopologyReader::Link::Link() [constructor]
+    cls.add_constructor([])
     ## topology-reader.h (module 'topology-read'): ns3::TopologyReader::Link::Link(ns3::Ptr<ns3::Node> fromPtr, std::string const & fromName, ns3::Ptr<ns3::Node> toPtr, std::string const & toName) [constructor]
     cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'fromPtr'), param('std::string const &', 'fromName'), param('ns3::Ptr< ns3::Node >', 'toPtr'), param('std::string const &', 'toName')])
     ## topology-reader.h (module 'topology-read'): std::_Rb_tree_const_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ns3::TopologyReader::Link::AttributesBegin() [member function]
@@ -3423,6 +4125,92 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3WeightsPathStretchTag_methods(root_module, cls):
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::WeightsPathStretchTag(ns3::WeightsPathStretchTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WeightsPathStretchTag const &', 'arg0')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::WeightsPathStretchTag() [constructor]
+    cls.add_constructor([])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::AddPathInfo(ns3::Ptr<ns3::Node> node, uint32_t weight) [member function]
+    cls.add_method('AddPathInfo', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('uint32_t', 'weight')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::WeightsPathStretchTag::GetDestinationNode() const [member function]
+    cls.add_method('GetDestinationNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): std::list<ns3::WeightsPathStretchTag::NodeWeightPair, std::allocator<ns3::WeightsPathStretchTag::NodeWeightPair> > const & ns3::WeightsPathStretchTag::GetInfos() const [member function]
+    cls.add_method('GetInfos', 
+                   'std::list< ns3::WeightsPathStretchTag::NodeWeightPair > const &', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): uint32_t ns3::WeightsPathStretchTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::WeightsPathStretchTag::GetSourceNode() const [member function]
+    cls.add_method('GetSourceNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): uint64_t ns3::WeightsPathStretchTag::GetTotalWeight() const [member function]
+    cls.add_method('GetTotalWeight', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): static ns3::TypeId ns3::WeightsPathStretchTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    return
+
+def register_Ns3WeightsPathStretchTagNodeWeightPair_methods(root_module, cls):
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::NodeWeightPair(ns3::WeightsPathStretchTag::NodeWeightPair const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WeightsPathStretchTag::NodeWeightPair const &', 'arg0')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::NodeWeightPair() [constructor]
+    cls.add_constructor([])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::NodeWeightPair(ns3::Ptr<ns3::Node> _node, uint32_t _weight) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', '_node'), param('uint32_t', '_weight')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::node [variable]
+    cls.add_instance_attribute('node', 'ns3::Ptr< ns3::Node >', is_const=False)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::weight [variable]
+    cls.add_instance_attribute('weight', 'uint32_t', is_const=False)
+    return
+
+def register_Ns3WindowTracer_methods(root_module, cls):
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::WindowTracer::WindowTracer(ns3::WindowTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WindowTracer const &', 'arg0')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::WindowTracer::WindowTracer(std::ostream & os, ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): static void ns3::WindowTracer::PrintHeader(std::ostream & os) [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_static=True)
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): void ns3::WindowTracer::OnWindowChange(std::string context, uint32_t oldValue, uint32_t newValue) [member function]
+    cls.add_method('OnWindowChange', 
+                   'void', 
+                   [param('std::string', 'context'), param('uint32_t', 'oldValue'), param('uint32_t', 'newValue')], 
+                   is_virtual=True)
+    return
+
 def register_Ns3AnnotatedTopologyReader_methods(root_module, cls):
     ## annotated-topology-reader.h (module 'NDNabstraction'): ns3::AnnotatedTopologyReader::AnnotatedTopologyReader(std::string const & path="", double scale=1.0e+0) [constructor]
     cls.add_constructor([param('std::string const &', 'path', default_value='""'), param('double', 'scale', default_value='1.0e+0')])
@@ -3436,6 +4224,11 @@
                    'ns3::NodeContainer', 
                    [], 
                    is_const=True)
+    ## annotated-topology-reader.h (module 'NDNabstraction'): std::list<ns3::TopologyReader::Link, std::allocator<ns3::TopologyReader::Link> > const & ns3::AnnotatedTopologyReader::GetLinks() const [member function]
+    cls.add_method('GetLinks', 
+                   'std::list< ns3::TopologyReader::Link > const &', 
+                   [], 
+                   is_const=True)
     ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::AssignIpv4Addresses(ns3::Ipv4Address base) [member function]
     cls.add_method('AssignIpv4Addresses', 
                    'void', 
@@ -3448,6 +4241,15 @@
     cls.add_method('SetMobilityModel', 
                    'void', 
                    [param('std::string const &', 'model')])
+    ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::ApplyOspfMetric() [member function]
+    cls.add_method('ApplyOspfMetric', 
+                   'void', 
+                   [])
+    ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::SavePositions(std::string const & file) const [member function]
+    cls.add_method('SavePositions', 
+                   'void', 
+                   [param('std::string const &', 'file')], 
+                   is_const=True)
     ## annotated-topology-reader.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::AnnotatedTopologyReader::CreateNode(std::string const name) [member function]
     cls.add_method('CreateNode', 
                    'ns3::Ptr< ns3::Node >', 
@@ -3463,11 +4265,6 @@
                    'void', 
                    [], 
                    visibility='protected')
-    ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::ApplyOspfMetric() [member function]
-    cls.add_method('ApplyOspfMetric', 
-                   'void', 
-                   [], 
-                   visibility='protected')
     return
 
 def register_Ns3Application_methods(root_module, cls):
@@ -3610,6 +4407,46 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3BatchesChecker_methods(root_module, cls):
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesChecker::BatchesChecker() [constructor]
+    cls.add_constructor([])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesChecker::BatchesChecker(ns3::BatchesChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BatchesChecker const &', 'arg0')])
+    return
+
+def register_Ns3BatchesValue_methods(root_module, cls):
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue::BatchesValue() [constructor]
+    cls.add_constructor([])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue::BatchesValue(ns3::BatchesValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BatchesValue const &', 'arg0')])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue::BatchesValue(ns3::Batches const & value) [constructor]
+    cls.add_constructor([param('ns3::Batches const &', 'value')])
+    ## batches.h (module 'NDNabstraction'): ns3::Ptr<ns3::AttributeValue> ns3::BatchesValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## batches.h (module 'NDNabstraction'): bool ns3::BatchesValue::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)
+    ## batches.h (module 'NDNabstraction'): ns3::Batches ns3::BatchesValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Batches', 
+                   [], 
+                   is_const=True)
+    ## batches.h (module 'NDNabstraction'): std::string ns3::BatchesValue::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)
+    ## batches.h (module 'NDNabstraction'): void ns3::BatchesValue::Set(ns3::Batches const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Batches const &', 'value')])
+    return
+
 def register_Ns3CallbackChecker_methods(root_module, cls):
     ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker() [constructor]
     cls.add_constructor([])
@@ -3714,20 +4551,20 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnContentObject(ns3::Ptr<const ns3::CcnxContentObjectHeader> const & contentObject, ns3::Ptr<const ns3::Packet> const & payload) [member function]
+    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnContentObject(ns3::Ptr<const ns3::CcnxContentObjectHeader> const & contentObject, ns3::Ptr<ns3::Packet> payload) [member function]
     cls.add_method('OnContentObject', 
                    'void', 
-                   [param('ns3::Ptr< ns3::CcnxContentObjectHeader const > const &', 'contentObject'), param('ns3::Ptr< ns3::Packet const > const &', 'payload')], 
+                   [param('ns3::Ptr< ns3::CcnxContentObjectHeader const > const &', 'contentObject'), param('ns3::Ptr< ns3::Packet >', 'payload')], 
                    is_virtual=True)
-    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnInterest(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest) [member function]
+    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnInterest(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest, ns3::Ptr<ns3::Packet> packet) [member function]
     cls.add_method('OnInterest', 
                    'void', 
-                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest')], 
+                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest'), param('ns3::Ptr< ns3::Packet >', 'packet')], 
                    is_virtual=True)
-    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnNack(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest) [member function]
+    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnNack(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest, ns3::Ptr<ns3::Packet> packet) [member function]
     cls.add_method('OnNack', 
                    'void', 
-                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest')], 
+                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest'), param('ns3::Ptr< ns3::Packet >', 'packet')], 
                    is_virtual=True)
     ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::RegisterProtocolHandler(ns3::Callback<bool, ns3::Ptr<ns3::Packet const> const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> handler) [member function]
     cls.add_method('RegisterProtocolHandler', 
@@ -3799,6 +4636,17 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3CcnxConsumerWindowTracer_methods(root_module, cls):
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::CcnxConsumerWindowTracer::CcnxConsumerWindowTracer(ns3::CcnxConsumerWindowTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CcnxConsumerWindowTracer const &', 'arg0')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::CcnxConsumerWindowTracer::CcnxConsumerWindowTracer(std::ostream & os, ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): void ns3::CcnxConsumerWindowTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3CcnxContentObjectHeader_methods(root_module, cls):
     ## ccnx-content-object-header.h (module 'NDNabstraction'): ns3::CcnxContentObjectHeader::CcnxContentObjectHeader(ns3::CcnxContentObjectHeader const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::CcnxContentObjectHeader const &', 'arg0')])
@@ -3893,6 +4741,16 @@
                    'uint32_t', 
                    [], 
                    is_const=True)
+    ## ccnx-face.h (module 'NDNabstraction'): uint16_t ns3::CcnxFace::GetMetric() const [member function]
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ccnx-face.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::CcnxFace::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
     ## ccnx-face.h (module 'NDNabstraction'): static ns3::TypeId ns3::CcnxFace::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -3941,6 +4799,11 @@
     cls.add_method('SetId', 
                    'void', 
                    [param('uint32_t', 'id')])
+    ## ccnx-face.h (module 'NDNabstraction'): void ns3::CcnxFace::SetMetric(uint16_t metric) [member function]
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint16_t', 'metric')], 
+                   is_virtual=True)
     ## ccnx-face.h (module 'NDNabstraction'): void ns3::CcnxFace::SetUp(bool up=true) [member function]
     cls.add_method('SetUp', 
                    'void', 
@@ -4304,6 +5167,11 @@
                    'std::list< std::string > const &', 
                    [], 
                    is_const=True)
+    ## ccnx-name-components.h (module 'NDNabstraction'): std::string ns3::CcnxNameComponents::GetLastComponent() const [member function]
+    cls.add_method('GetLastComponent', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## ccnx-name-components.h (module 'NDNabstraction'): std::list<boost::reference_wrapper<std::string const>, std::allocator<boost::reference_wrapper<std::string const> > > ns3::CcnxNameComponents::GetSubComponents(size_t num) const [member function]
     cls.add_method('GetSubComponents', 
                    'std::list< boost::reference_wrapper< std::string const > >', 
@@ -4361,6 +5229,27 @@
                    [param('ns3::CcnxNameComponents const &', 'value')])
     return
 
+def register_Ns3CcnxPathWeightTracer_methods(root_module, cls):
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): ns3::CcnxPathWeightTracer::CcnxPathWeightTracer(ns3::CcnxPathWeightTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CcnxPathWeightTracer const &', 'arg0')])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): ns3::CcnxPathWeightTracer::CcnxPathWeightTracer(std::ostream & os, ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): void ns3::CcnxPathWeightTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): static void ns3::CcnxPathWeightTracer::PrintHeader(std::ostream & os) [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_static=True)
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): void ns3::CcnxPathWeightTracer::InLocalFace(std::string context, ns3::Ptr<ns3::Node> src, ns3::Ptr<ns3::Node> dst, uint32_t seqno, uint32_t weight) [member function]
+    cls.add_method('InLocalFace', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ptr< ns3::Node >', 'src'), param('ns3::Ptr< ns3::Node >', 'dst'), param('uint32_t', 'seqno'), param('uint32_t', 'weight')], 
+                   is_virtual=True)
+    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')])
@@ -4440,6 +5329,160 @@
                    [param('int64_t const &', 'value')])
     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')])
+    ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4() [constructor]
+    cls.add_constructor([])
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::AddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): uint32_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): ns3::Ipv4InterfaceAddress ns3::Ipv4::GetAddress(uint32_t interface, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4InterfaceAddress', 
+                   [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): int32_t ns3::Ipv4::GetInterfaceForAddress(ns3::Ipv4Address address) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'address')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): int32_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): int32_t ns3::Ipv4::GetInterfaceForPrefix(ns3::Ipv4Address address, ns3::Ipv4Mask mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'address'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): uint16_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): uint16_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): uint32_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): uint32_t ns3::Ipv4::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv4RoutingProtocol >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): static ns3::TypeId ns3::Ipv4::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::Insert(ns3::Ptr<ns3::Ipv4L4Protocol> protocol) [member function]
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4L4Protocol >', 'protocol')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+    cls.add_method('IsDestinationAddress', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4::SelectSourceAddress(ns3::Ptr<const ns3::NetDevice> device, ns3::Ipv4Address dst, ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e scope) [member function]
+    cls.add_method('SelectSourceAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device'), param('ns3::Ipv4Address', 'dst'), param('ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 'scope')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol, ns3::Ptr<ns3::Ipv4Route> route) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol'), param('ns3::Ptr< ns3::Ipv4Route >', 'route')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetDown(uint32_t interface) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetUp(uint32_t interface) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): ns3::Ipv4::IF_ANY [variable]
+    cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::GetWeakEsModel() const [member function]
+    cls.add_method('GetWeakEsModel', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
+                   'void', 
+                   [param('bool', 'forward')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetWeakEsModel(bool model) [member function]
+    cls.add_method('SetWeakEsModel', 
+                   'void', 
+                   [param('bool', 'model')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker::Ipv4AddressChecker() [constructor]
     cls.add_constructor([])
@@ -4480,6 +5523,312 @@
                    [param('ns3::Ipv4Address const &', 'value')])
     return
 
+def register_Ns3Ipv4AppTracer_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): ns3::Ipv4AppTracer::Ipv4AppTracer(ns3::Ipv4AppTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4AppTracer const &', 'arg0')])
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): ns3::Ipv4AppTracer::Ipv4AppTracer(ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::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)
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::PrintHeader(std::ostream & os) const [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::Rx(std::string context, ns3::Ipv4Header const & arg1, ns3::Ptr<const ns3::Packet> arg2, uint32_t arg3) [member function]
+    cls.add_method('Rx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ipv4Header const &', 'arg1'), param('ns3::Ptr< ns3::Packet const >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::Tx(std::string context, ns3::Ipv4Header const & arg1, ns3::Ptr<const ns3::Packet> arg2, uint32_t arg3) [member function]
+    cls.add_method('Tx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ipv4Header const &', 'arg1'), param('ns3::Ptr< ns3::Packet const >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3Ipv4L3Protocol_methods(root_module, cls):
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol::Ipv4L3Protocol() [constructor]
+    cls.add_constructor([])
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::AddAddress(uint32_t i, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv4L3Protocol::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv4L3Protocol::CreateRawSocket() [member function]
+    cls.add_method('CreateRawSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::DeleteRawSocket(ns3::Ptr<ns3::Socket> socket) [member function]
+    cls.add_method('DeleteRawSocket', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket')])
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4InterfaceAddress ns3::Ipv4L3Protocol::GetAddress(uint32_t interfaceIndex, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4InterfaceAddress', 
+                   [param('uint32_t', 'interfaceIndex'), param('uint32_t', 'addressIndex')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4Interface> ns3::Ipv4L3Protocol::GetInterface(uint32_t i) const [member function]
+    cls.add_method('GetInterface', 
+                   'ns3::Ptr< ns3::Ipv4Interface >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## ipv4-l3-protocol.h (module 'internet'): int32_t ns3::Ipv4L3Protocol::GetInterfaceForAddress(ns3::Ipv4Address addr) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'addr')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): int32_t ns3::Ipv4L3Protocol::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)
+    ## ipv4-l3-protocol.h (module 'internet'): int32_t ns3::Ipv4L3Protocol::GetInterfaceForPrefix(ns3::Ipv4Address addr, ns3::Ipv4Mask mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv4L3Protocol::GetMetric(uint32_t i) const [member function]
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv4L3Protocol::GetMtu(uint32_t i) const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv4L3Protocol::GetNAddresses(uint32_t interface) const [member function]
+    cls.add_method('GetNAddresses', 
+                   'uint32_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv4L3Protocol::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv4L3Protocol::GetNetDevice(uint32_t i) [member function]
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4L4Protocol> ns3::Ipv4L3Protocol::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::Ipv4L4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_const=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4L3Protocol::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv4RoutingProtocol >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv4L3Protocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::Insert(ns3::Ptr<ns3::Ipv4L4Protocol> protocol) [member function]
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4L4Protocol >', 'protocol')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+    cls.add_method('IsDestinationAddress', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsForwarding(uint32_t i) const [member function]
+    cls.add_method('IsForwarding', 
+                   'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::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')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::Remove(ns3::Ptr<ns3::Ipv4L4Protocol> protocol) [member function]
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4L4Protocol >', 'protocol')])
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::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)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4L3Protocol::SelectSourceAddress(ns3::Ptr<const ns3::NetDevice> device, ns3::Ipv4Address dst, ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e scope) [member function]
+    cls.add_method('SelectSourceAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device'), param('ns3::Ipv4Address', 'dst'), param('ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 'scope')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol, ns3::Ptr<ns3::Ipv4Route> route) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol'), param('ns3::Ptr< ns3::Ipv4Route >', 'route')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SendWithHeader(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Header ipHeader, ns3::Ptr<ns3::Ipv4Route> route) [member function]
+    cls.add_method('SendWithHeader', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Header', 'ipHeader'), param('ns3::Ptr< ns3::Ipv4Route >', 'route')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetDefaultTtl(uint8_t ttl) [member function]
+    cls.add_method('SetDefaultTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetDown(uint32_t i) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetForwarding(uint32_t i, bool val) [member function]
+    cls.add_method('SetForwarding', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('bool', 'val')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::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)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetUp(uint32_t i) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol::PROT_NUMBER [variable]
+    cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::NotifyNewAggregate() [member function]
+    cls.add_method('NotifyNewAggregate', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::GetWeakEsModel() const [member function]
+    cls.add_method('GetWeakEsModel', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
+                   'void', 
+                   [param('bool', 'forward')], 
+                   visibility='private', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetWeakEsModel(bool model) [member function]
+    cls.add_method('SetWeakEsModel', 
+                   'void', 
+                   [param('bool', 'model')], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3Ipv4L3Tracer_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): ns3::Ipv4L3Tracer::Ipv4L3Tracer(ns3::Ipv4L3Tracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4L3Tracer const &', 'arg0')])
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): ns3::Ipv4L3Tracer::Ipv4L3Tracer(ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Drop(std::string context, ns3::Ipv4Header const & arg1, ns3::Ptr<const ns3::Packet> arg2, ns3::Ipv4L3Protocol::DropReason arg3, ns3::Ptr<ns3::Ipv4> arg4, uint32_t arg5) [member function]
+    cls.add_method('Drop', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ipv4Header const &', 'arg1'), param('ns3::Ptr< ns3::Packet const >', 'arg2'), param('ns3::Ipv4L3Protocol::DropReason', 'arg3'), param('ns3::Ptr< ns3::Ipv4 >', 'arg4'), param('uint32_t', 'arg5')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::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)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::PrintHeader(std::ostream & os) const [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Rx(std::string context, ns3::Ptr<const ns3::Packet> arg1, ns3::Ptr<ns3::Ipv4> arg2, uint32_t arg3) [member function]
+    cls.add_method('Rx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'arg1'), param('ns3::Ptr< ns3::Ipv4 >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Tx(std::string context, ns3::Ptr<const ns3::Packet> arg1, ns3::Ptr<ns3::Ipv4> arg2, uint32_t arg3) [member function]
+    cls.add_method('Tx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'arg1'), param('ns3::Ptr< ns3::Ipv4 >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3Ipv4L4Protocol_methods(root_module, cls):
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::Ipv4L4Protocol() [constructor]
+    cls.add_constructor([])
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::Ipv4L4Protocol(ns3::Ipv4L4Protocol const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4L4Protocol const &', 'arg0')])
+    ## ipv4-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::Ipv4L4Protocol::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)
+    ## ipv4-l4-protocol.h (module 'internet'): int ns3::Ipv4L4Protocol::GetProtocolNumber() const [member function]
+    cls.add_method('GetProtocolNumber', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv4L4Protocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::RxStatus ns3::Ipv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
+    cls.add_method('Receive', 
+                   'ns3::Ipv4L4Protocol::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)
+    ## ipv4-l4-protocol.h (module 'internet'): void ns3::Ipv4L4Protocol::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)
+    ## ipv4-l4-protocol.h (module 'internet'): void ns3::Ipv4L4Protocol::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)
+    return
+
 def register_Ns3Ipv4MaskChecker_methods(root_module, cls):
     ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker::Ipv4MaskChecker() [constructor]
     cls.add_constructor([])
@@ -4520,6 +5869,154 @@
                    [param('ns3::Ipv4Mask const &', 'value')])
     return
 
+def register_Ns3Ipv4MulticastRoute_methods(root_module, cls):
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4MulticastRoute const &', 'arg0')])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::Ipv4MulticastRoute() [constructor]
+    cls.add_constructor([])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetGroup() const [member function]
+    cls.add_method('GetGroup', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetOrigin() const [member function]
+    cls.add_method('GetOrigin', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): uint32_t ns3::Ipv4MulticastRoute::GetOutputTtl(uint32_t oif) [member function]
+    cls.add_method('GetOutputTtl', 
+                   'uint32_t', 
+                   [param('uint32_t', 'oif')], 
+                   deprecated=True)
+    ## ipv4-route.h (module 'internet'): std::map<unsigned int, unsigned int, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int> > > ns3::Ipv4MulticastRoute::GetOutputTtlMap() const [member function]
+    cls.add_method('GetOutputTtlMap', 
+                   'std::map< unsigned int, unsigned int >', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): uint32_t ns3::Ipv4MulticastRoute::GetParent() const [member function]
+    cls.add_method('GetParent', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetGroup(ns3::Ipv4Address const group) [member function]
+    cls.add_method('SetGroup', 
+                   'void', 
+                   [param('ns3::Ipv4Address const', 'group')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetOrigin(ns3::Ipv4Address const origin) [member function]
+    cls.add_method('SetOrigin', 
+                   'void', 
+                   [param('ns3::Ipv4Address const', 'origin')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetOutputTtl(uint32_t oif, uint32_t ttl) [member function]
+    cls.add_method('SetOutputTtl', 
+                   'void', 
+                   [param('uint32_t', 'oif'), param('uint32_t', 'ttl')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetParent(uint32_t iif) [member function]
+    cls.add_method('SetParent', 
+                   'void', 
+                   [param('uint32_t', 'iif')])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::MAX_INTERFACES [variable]
+    cls.add_static_attribute('MAX_INTERFACES', 'uint32_t const', is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::MAX_TTL [variable]
+    cls.add_static_attribute('MAX_TTL', 'uint32_t const', is_const=True)
+    return
+
+def register_Ns3Ipv4Route_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Route const &', 'arg0')])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Route::Ipv4Route() [constructor]
+    cls.add_constructor([])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Route::GetDestination() const [member function]
+    cls.add_method('GetDestination', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Route::GetGateway() const [member function]
+    cls.add_method('GetGateway', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv4Route::GetOutputDevice() const [member function]
+    cls.add_method('GetOutputDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Route::GetSource() const [member function]
+    cls.add_method('GetSource', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetDestination(ns3::Ipv4Address dest) [member function]
+    cls.add_method('SetDestination', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetGateway(ns3::Ipv4Address gw) [member function]
+    cls.add_method('SetGateway', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'gw')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetOutputDevice(ns3::Ptr<ns3::NetDevice> outputDevice) [member function]
+    cls.add_method('SetOutputDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'outputDevice')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetSource(ns3::Ipv4Address src) [member function]
+    cls.add_method('SetSource', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'src')])
+    return
+
+def register_Ns3Ipv4RoutingProtocol_methods(root_module, cls):
+    ## ipv4-routing-protocol.h (module 'internet'): ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol() [constructor]
+    cls.add_constructor([])
+    ## ipv4-routing-protocol.h (module 'internet'): ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol(ns3::Ipv4RoutingProtocol const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4RoutingProtocol const &', 'arg0')])
+    ## ipv4-routing-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv4RoutingProtocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyAddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('NotifyAddAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyInterfaceDown(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyInterfaceUp(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyRemoveAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('NotifyRemoveAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::PrintRoutingTable(ns3::Ptr<ns3::OutputStreamWrapper> stream) const [member function]
+    cls.add_method('PrintRoutingTable', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): bool ns3::Ipv4RoutingProtocol::RouteInput(ns3::Ptr<const ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,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::Ipv4Header&,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::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header 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::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
+    cls.add_method('RouteOutput', 
+                   'ns3::Ptr< ns3::Ipv4Route >', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
+    cls.add_method('SetIpv4', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
 def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
     cls.add_constructor([])
@@ -4955,6 +6452,19 @@
                    [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]
@@ -4980,11 +6490,10 @@
     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]
+    ## packet.h (module 'network'): void ns3::Packet::AddPacketTag(ns3::Ptr<const ns3::Tag> tag) [member function]
     cls.add_method('AddPacketTag', 
                    'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
+                   [param('ns3::Ptr< ns3::Tag const >', 'tag')])
     ## packet.h (module 'network'): void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
     cls.add_method('AddPaddingAtEnd', 
                    'void', 
@@ -5043,11 +6552,6 @@
                    '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', 
@@ -5073,10 +6577,10 @@
                    'uint32_t', 
                    [param('ns3::Header &', 'header')], 
                    is_const=True)
-    ## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
+    ## packet.h (module 'network'): ns3::Ptr<const ns3::Tag> ns3::Packet::PeekPacketTag(ns3::TypeId tagType) const [member function]
     cls.add_method('PeekPacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
+                   'ns3::Ptr< ns3::Tag const >', 
+                   [param('ns3::TypeId', 'tagType')], 
                    is_const=True)
     ## packet.h (module 'network'): uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
     cls.add_method('PeekTrailer', 
@@ -5117,10 +6621,10 @@
     cls.add_method('RemoveHeader', 
                    'uint32_t', 
                    [param('ns3::Header &', 'header')])
-    ## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
+    ## packet.h (module 'network'): ns3::Ptr<const ns3::Tag> ns3::Packet::RemovePacketTag(ns3::TypeId tagType) [member function]
     cls.add_method('RemovePacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')])
+                   'ns3::Ptr< ns3::Tag const >', 
+                   [param('ns3::TypeId', 'tagType')])
     ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
     cls.add_method('RemoveTrailer', 
                    'uint32_t', 
@@ -5192,11 +6696,148 @@
     cls.add_method('Commit', 
                    'void', 
                    [])
-    ## rocketfuel-weights-reader.h (module 'NDNabstraction'): void ns3::RocketfuelWeightsReader::SavePositions(std::string const & file) const [member function]
-    cls.add_method('SavePositions', 
+    return
+
+def register_Ns3SocketAddressTag_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::SocketAddressTag::SocketAddressTag(ns3::SocketAddressTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SocketAddressTag const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::SocketAddressTag::SocketAddressTag() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
                    'void', 
-                   [param('std::string const &', 'file')], 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): ns3::Address ns3::SocketAddressTag::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
                    is_const=True)
+    ## socket.h (module 'network'): ns3::TypeId ns3::SocketAddressTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::SocketAddressTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): static ns3::TypeId ns3::SocketAddressTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::SetAddress(ns3::Address addr) [member function]
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'addr')])
+    return
+
+def register_Ns3SocketIpTtlTag_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpTtlTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::SocketIpTtlTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint8_t ns3::SocketIpTtlTag::GetTtl() const [member function]
+    cls.add_method('GetTtl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpTtlTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::SetTtl(uint8_t ttl) [member function]
+    cls.add_method('SetTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    return
+
+def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Disable() [member function]
+    cls.add_method('Disable', 
+                   'void', 
+                   [])
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Enable() [member function]
+    cls.add_method('Enable', 
+                   'void', 
+                   [])
+    ## socket.h (module 'network'): ns3::TypeId ns3::SocketSetDontFragmentTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::SocketSetDontFragmentTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): static ns3::TypeId ns3::SocketSetDontFragmentTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## socket.h (module 'network'): bool ns3::SocketSetDontFragmentTag::IsEnabled() const [member function]
+    cls.add_method('IsEnabled', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3SpringMobilityModel_methods(root_module, cls):
@@ -5235,6 +6876,17 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3TcpCongestionWindowTracer_methods(root_module, cls):
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::TcpCongestionWindowTracer::TcpCongestionWindowTracer(ns3::TcpCongestionWindowTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TcpCongestionWindowTracer const &', 'arg0')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::TcpCongestionWindowTracer::TcpCongestionWindowTracer(std::ostream & os, ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): void ns3::TcpCongestionWindowTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3TimeChecker_methods(root_module, cls):
     ## nstime.h (module 'core'): ns3::TimeChecker::TimeChecker() [constructor]
     cls.add_constructor([])
@@ -5437,6 +7089,10 @@
 
 def register_functions(root_module):
     module = root_module
+    ## batches.h (module 'NDNabstraction'): extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeBatchesChecker() [free function]
+    module.add_function('MakeBatchesChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## ccnx-name-components.h (module 'NDNabstraction'): extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeCcnxNameComponentsChecker() [free function]
     module.add_function('MakeCcnxNameComponentsChecker', 
                         'ns3::Ptr< ns3::AttributeChecker const >', 
diff --git a/bindings/modulegen__gcc_LP64.py b/bindings/modulegen__gcc_LP64.py
index 2030e69..0b0cd40 100644
--- a/bindings/modulegen__gcc_LP64.py
+++ b/bindings/modulegen__gcc_LP64.py
@@ -76,6 +76,10 @@
     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-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress [class]
+    module.add_class('Ipv4InterfaceAddress', import_from_module='ns.internet')
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e [enumeration]
+    module.add_enum('InterfaceAddressScope_e', ['HOST', 'LINK', 'GLOBAL'], outer_class=root_module['ns3::Ipv4InterfaceAddress'], import_from_module='ns.internet')
     ## 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]
@@ -102,14 +106,6 @@
     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'])
     ## random-variable.h (module 'core'): ns3::RandomVariable [class]
     module.add_class('RandomVariable', import_from_module='ns.core')
     ## random-variable.h (module 'core'): ns3::SeedManager [class]
@@ -120,10 +116,10 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Chunk', 'ns3::ObjectBase', 'ns3::DefaultDeleter<ns3::Chunk>'], parent=root_module['ns3::ObjectBase'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
     ## 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')
     ## spring-mobility-helper.h (module 'NDNabstraction'): ns3::SpringMobilityHelper [class]
     module.add_class('SpringMobilityHelper')
-    ## 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')
     ## random-variable.h (module 'core'): ns3::TriangularVariable [class]
@@ -170,6 +166,12 @@
     module.add_class('Header', import_from_module='ns.network', parent=root_module['ns3::Chunk'])
     ## random-variable.h (module 'core'): ns3::IntEmpiricalVariable [class]
     module.add_class('IntEmpiricalVariable', import_from_module='ns.core', parent=root_module['ns3::EmpiricalVariable'])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header [class]
+    module.add_class('Ipv4Header', import_from_module='ns.internet', parent=root_module['ns3::Header'])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::DscpType [enumeration]
+    module.add_enum('DscpType', ['DscpDefault', 'CS1', 'AF11', 'AF12', 'AF13', 'CS2', 'AF21', 'AF22', 'AF23', 'CS3', 'AF31', 'AF32', 'AF33', 'CS4', 'AF41', 'AF42', 'AF43', 'CS5', 'EF', 'CS6', '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', ['NotECT', 'ECT1', 'ECT0', 'CE'], outer_class=root_module['ns3::Ipv4Header'], import_from_module='ns.internet')
     ## random-variable.h (module 'core'): ns3::LogNormalVariable [class]
     module.add_class('LogNormalVariable', import_from_module='ns.core', parent=root_module['ns3::RandomVariable'])
     ## random-variable.h (module 'core'): ns3::NormalVariable [class]
@@ -198,16 +200,38 @@
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::CcnxL3Tracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CcnxL3Tracer>'], 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::CcnxNameComponents, ns3::empty, ns3::DefaultDeleter<ns3::CcnxNameComponents> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::CcnxNameComponents', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CcnxNameComponents>'], 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::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::CcnxPathWeightTracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::CcnxPathWeightTracer>'], 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::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::Ipv4AppTracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4AppTracer>'], 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::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::Ipv4L3Tracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4L3Tracer>'], 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]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4MulticastRoute', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4MulticastRoute>'], 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::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::Ipv4Route', 'ns3::empty', 'ns3::DefaultDeleter<ns3::Ipv4Route>'], 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::TopologyReader, ns3::empty, ns3::DefaultDeleter<ns3::TopologyReader> > [class]
     module.add_class('SimpleRefCount', automatic_type_narrowing=True, import_from_module='ns.core', template_parameters=['ns3::TopologyReader', 'ns3::empty', 'ns3::DefaultDeleter<ns3::TopologyReader>'], 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'))
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> > [class]
+    module.add_class('SimpleRefCount', automatic_type_narrowing=True, template_parameters=['ns3::WindowTracer', 'ns3::empty', 'ns3::DefaultDeleter<ns3::WindowTracer>'], parent=root_module['ns3::empty'], memory_policy=cppclass.ReferenceCountingMethodsPolicy(incref_method='Ref', decref_method='Unref', peekref_method='GetReferenceCount'))
+    ## socket.h (module 'network'): ns3::Socket [class]
+    module.add_class('Socket', import_from_module='ns.network', parent=root_module['ns3::Object'])
+    ## socket.h (module 'network'): ns3::Socket::SocketErrno [enumeration]
+    module.add_enum('SocketErrno', ['ERROR_NOTERROR', 'ERROR_ISCONN', 'ERROR_NOTCONN', 'ERROR_MSGSIZE', 'ERROR_AGAIN', 'ERROR_SHUTDOWN', 'ERROR_OPNOTSUPP', 'ERROR_AFNOSUPPORT', 'ERROR_INVAL', 'ERROR_BADF', 'ERROR_NOROUTETOHOST', 'ERROR_NODEV', 'ERROR_ADDRNOTAVAIL', 'ERROR_ADDRINUSE', 'SOCKET_ERRNO_LAST'], outer_class=root_module['ns3::Socket'], import_from_module='ns.network')
+    ## socket.h (module 'network'): ns3::Socket::SocketType [enumeration]
+    module.add_enum('SocketType', ['NS3_SOCK_STREAM', 'NS3_SOCK_SEQPACKET', 'NS3_SOCK_DGRAM', 'NS3_SOCK_RAW'], outer_class=root_module['ns3::Socket'], import_from_module='ns.network')
+    ## tag.h (module 'network'): ns3::Tag [class]
+    module.add_class('Tag', import_from_module='ns.network', parent=root_module['ns3::Object'])
     ## nstime.h (module 'core'): ns3::Time [class]
     module.add_class('Time', import_from_module='ns.core')
     ## nstime.h (module 'core'): ns3::Time::Unit [enumeration]
@@ -222,6 +246,12 @@
     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'])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag [class]
+    module.add_class('WeightsPathStretchTag', parent=root_module['ns3::Tag'])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair [struct]
+    module.add_class('NodeWeightPair', outer_class=root_module['ns3::WeightsPathStretchTag'])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::WindowTracer [class]
+    module.add_class('WindowTracer', parent=root_module['ns3::SimpleRefCount< ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >'])
     ## annotated-topology-reader.h (module 'NDNabstraction'): ns3::AnnotatedTopologyReader [class]
     module.add_class('AnnotatedTopologyReader', parent=root_module['ns3::TopologyReader'])
     ## application.h (module 'network'): ns3::Application [class]
@@ -232,6 +262,10 @@
     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> >'])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesChecker [class]
+    module.add_class('BatchesChecker', parent=root_module['ns3::AttributeChecker'])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue [class]
+    module.add_class('BatchesValue', parent=root_module['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]
@@ -246,6 +280,8 @@
     module.add_class('CcnxApp', parent=root_module['ns3::Application'])
     ## ccnx-app-tracer.h (module 'NDNabstraction'): ns3::CcnxAppTracer [class]
     module.add_class('CcnxAppTracer', parent=root_module['ns3::SimpleRefCount< ns3::CcnxAppTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxAppTracer> >'])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::CcnxConsumerWindowTracer [class]
+    module.add_class('CcnxConsumerWindowTracer', parent=root_module['ns3::WindowTracer'])
     ## ccnx-content-object-header.h (module 'NDNabstraction'): ns3::CcnxContentObjectHeader [class]
     module.add_class('CcnxContentObjectHeader', parent=root_module['ns3::Header'])
     ## ccnx-content-object-header.h (module 'NDNabstraction'): ns3::CcnxContentObjectTail [class]
@@ -272,20 +308,42 @@
     module.add_class('CcnxNameComponentsChecker', parent=root_module['ns3::AttributeChecker'])
     ## ccnx-name-components.h (module 'NDNabstraction'): ns3::CcnxNameComponentsValue [class]
     module.add_class('CcnxNameComponentsValue', parent=root_module['ns3::AttributeValue'])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): ns3::CcnxPathWeightTracer [class]
+    module.add_class('CcnxPathWeightTracer', parent=root_module['ns3::SimpleRefCount< ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >'])
     ## 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> >'])
     ## integer.h (module 'core'): ns3::IntegerValue [class]
     module.add_class('IntegerValue', import_from_module='ns.core', parent=root_module['ns3::AttributeValue'])
+    ## 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]
     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-app-tracer.h (module 'NDNabstraction'): ns3::Ipv4AppTracer [class]
+    module.add_class('Ipv4AppTracer', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >'])
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol [class]
+    module.add_class('Ipv4L3Protocol', import_from_module='ns.internet', parent=root_module['ns3::Ipv4'])
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol::DropReason [enumeration]
+    module.add_enum('DropReason', ['DROP_TTL_EXPIRED', 'DROP_NO_ROUTE', 'DROP_BAD_CHECKSUM', 'DROP_INTERFACE_DOWN', 'DROP_ROUTE_ERROR', 'DROP_FRAGMENT_TIMEOUT'], outer_class=root_module['ns3::Ipv4L3Protocol'], import_from_module='ns.internet')
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): ns3::Ipv4L3Tracer [class]
+    module.add_class('Ipv4L3Tracer', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >'])
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol [class]
+    module.add_class('Ipv4L4Protocol', import_from_module='ns.internet', parent=root_module['ns3::Object'])
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::RxStatus [enumeration]
+    module.add_enum('RxStatus', ['RX_OK', 'RX_CSUM_FAILED', 'RX_ENDPOINT_CLOSED', 'RX_ENDPOINT_UNREACH'], outer_class=root_module['ns3::Ipv4L4Protocol'], import_from_module='ns.internet')
     ## 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'])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute [class]
+    module.add_class('Ipv4MulticastRoute', import_from_module='ns.internet', parent=root_module['ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >'])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Route [class]
+    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-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]
@@ -308,6 +366,8 @@
     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> >'])
     ## random-variable.h (module 'core'): ns3::RandomVariableChecker [class]
@@ -318,8 +378,16 @@
     module.add_class('RocketfuelWeightsReader', parent=root_module['ns3::AnnotatedTopologyReader'])
     ## rocketfuel-weights-reader.h (module 'NDNabstraction'): ns3::RocketfuelWeightsReader [enumeration]
     module.add_enum('', ['WEIGHTS', 'LATENCIES', 'POSITIONS'], outer_class=root_module['ns3::RocketfuelWeightsReader'])
+    ## socket.h (module 'network'): ns3::SocketAddressTag [class]
+    module.add_class('SocketAddressTag', import_from_module='ns.network', parent=root_module['ns3::Tag'])
+    ## socket.h (module 'network'): ns3::SocketIpTtlTag [class]
+    module.add_class('SocketIpTtlTag', 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'])
     ## spring-mobility-model.h (module 'NDNabstraction'): ns3::SpringMobilityModel [class]
     module.add_class('SpringMobilityModel', parent=root_module['ns3::MobilityModel'])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::TcpCongestionWindowTracer [class]
+    module.add_class('TcpCongestionWindowTracer', parent=root_module['ns3::WindowTracer'])
     ## nstime.h (module 'core'): ns3::TimeChecker [class]
     module.add_class('TimeChecker', import_from_module='ns.core', parent=root_module['ns3::AttributeChecker'])
     ## nstime.h (module 'core'): ns3::TimeValue [class]
@@ -341,8 +409,11 @@
     ## 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::list< ns3::WeightsPathStretchTag::NodeWeightPair >', 'ns3::WeightsPathStretchTag::NodeWeightPair', container_type='list')
+    module.add_container('std::list< ns3::TopologyReader::Link >', 'ns3::TopologyReader::Link', container_type='list')
     module.add_container('std::list< boost::reference_wrapper< std::string const > >', 'boost::reference_wrapper< std::basic_string< char, std::char_traits< char >, std::allocator< char > > const >', container_type='list')
     module.add_container('std::list< std::string >', 'std::string', container_type='list')
+    module.add_container('std::map< unsigned int, unsigned int >', ('unsigned int', 'unsigned int'), container_type='map')
     typehandlers.add_type_alias('ns3::Vector3DChecker', 'ns3::VectorChecker')
     typehandlers.add_type_alias('ns3::Vector3DChecker*', 'ns3::VectorChecker*')
     typehandlers.add_type_alias('ns3::Vector3DChecker&', 'ns3::VectorChecker&')
@@ -401,6 +472,7 @@
     register_Ns3CcnxUnknownHeaderException_methods(root_module, root_module['ns3::CcnxUnknownHeaderException'])
     register_Ns3EventId_methods(root_module, root_module['ns3::EventId'])
     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_Ns3Ipv6Prefix_methods(root_module, root_module['ns3::Ipv6Prefix'])
@@ -412,17 +484,13 @@
     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_Ns3RandomVariable_methods(root_module, root_module['ns3::RandomVariable'])
     register_Ns3SeedManager_methods(root_module, root_module['ns3::SeedManager'])
     register_Ns3SequentialVariable_methods(root_module, root_module['ns3::SequentialVariable'])
     register_Ns3SimpleRefCount__Ns3Chunk_Ns3ObjectBase_Ns3DefaultDeleter__lt__ns3Chunk__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Chunk, ns3::ObjectBase, ns3::DefaultDeleter<ns3::Chunk> >'])
     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_Ns3SpringMobilityHelper_methods(root_module, root_module['ns3::SpringMobilityHelper'])
-    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3TagBuffer_methods(root_module, root_module['ns3::TagBuffer'])
     register_Ns3TriangularVariable_methods(root_module, root_module['ns3::TriangularVariable'])
     register_Ns3TypeId_methods(root_module, root_module['ns3::TypeId'])
@@ -445,6 +513,7 @@
     register_Ns3GammaVariable_methods(root_module, root_module['ns3::GammaVariable'])
     register_Ns3Header_methods(root_module, root_module['ns3::Header'])
     register_Ns3IntEmpiricalVariable_methods(root_module, root_module['ns3::IntEmpiricalVariable'])
+    register_Ns3Ipv4Header_methods(root_module, root_module['ns3::Ipv4Header'])
     register_Ns3LogNormalVariable_methods(root_module, root_module['ns3::LogNormalVariable'])
     register_Ns3NormalVariable_methods(root_module, root_module['ns3::NormalVariable'])
     register_Ns3Object_methods(root_module, root_module['ns3::Object'])
@@ -459,27 +528,42 @@
     register_Ns3SimpleRefCount__Ns3CcnxFibEntry_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxFibEntry__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxFibEntry, ns3::empty, ns3::DefaultDeleter<ns3::CcnxFibEntry> >'])
     register_Ns3SimpleRefCount__Ns3CcnxL3Tracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxL3Tracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxL3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxL3Tracer> >'])
     register_Ns3SimpleRefCount__Ns3CcnxNameComponents_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxNameComponents__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxNameComponents, ns3::empty, ns3::DefaultDeleter<ns3::CcnxNameComponents> >'])
+    register_Ns3SimpleRefCount__Ns3CcnxPathWeightTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxPathWeightTracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >'])
     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__Ns3Ipv4AppTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4AppTracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >'])
+    register_Ns3SimpleRefCount__Ns3Ipv4L3Tracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4L3Tracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >'])
+    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> >'])
     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__Ns3TopologyReader_Ns3Empty_Ns3DefaultDeleter__lt__ns3TopologyReader__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::TopologyReader, ns3::empty, ns3::DefaultDeleter<ns3::TopologyReader> >'])
     register_Ns3SimpleRefCount__Ns3TraceSourceAccessor_Ns3Empty_Ns3DefaultDeleter__lt__ns3TraceSourceAccessor__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::TraceSourceAccessor, ns3::empty, ns3::DefaultDeleter<ns3::TraceSourceAccessor> >'])
+    register_Ns3SimpleRefCount__Ns3WindowTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3WindowTracer__gt___methods(root_module, root_module['ns3::SimpleRefCount< ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >'])
+    register_Ns3Socket_methods(root_module, root_module['ns3::Socket'])
+    register_Ns3Tag_methods(root_module, root_module['ns3::Tag'])
     register_Ns3Time_methods(root_module, root_module['ns3::Time'])
     register_Ns3TopologyReader_methods(root_module, root_module['ns3::TopologyReader'])
     register_Ns3TopologyReaderLink_methods(root_module, root_module['ns3::TopologyReader::Link'])
     register_Ns3TraceSourceAccessor_methods(root_module, root_module['ns3::TraceSourceAccessor'])
     register_Ns3Trailer_methods(root_module, root_module['ns3::Trailer'])
+    register_Ns3WeightsPathStretchTag_methods(root_module, root_module['ns3::WeightsPathStretchTag'])
+    register_Ns3WeightsPathStretchTagNodeWeightPair_methods(root_module, root_module['ns3::WeightsPathStretchTag::NodeWeightPair'])
+    register_Ns3WindowTracer_methods(root_module, root_module['ns3::WindowTracer'])
     register_Ns3AnnotatedTopologyReader_methods(root_module, root_module['ns3::AnnotatedTopologyReader'])
     register_Ns3Application_methods(root_module, root_module['ns3::Application'])
     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_Ns3BatchesChecker_methods(root_module, root_module['ns3::BatchesChecker'])
+    register_Ns3BatchesValue_methods(root_module, root_module['ns3::BatchesValue'])
     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_Ns3Ccnx_methods(root_module, root_module['ns3::Ccnx'])
     register_Ns3CcnxApp_methods(root_module, root_module['ns3::CcnxApp'])
     register_Ns3CcnxAppTracer_methods(root_module, root_module['ns3::CcnxAppTracer'])
+    register_Ns3CcnxConsumerWindowTracer_methods(root_module, root_module['ns3::CcnxConsumerWindowTracer'])
     register_Ns3CcnxContentObjectHeader_methods(root_module, root_module['ns3::CcnxContentObjectHeader'])
     register_Ns3CcnxContentObjectTail_methods(root_module, root_module['ns3::CcnxContentObjectTail'])
     register_Ns3CcnxFace_methods(root_module, root_module['ns3::CcnxFace'])
@@ -492,13 +576,22 @@
     register_Ns3CcnxNameComponents_methods(root_module, root_module['ns3::CcnxNameComponents'])
     register_Ns3CcnxNameComponentsChecker_methods(root_module, root_module['ns3::CcnxNameComponentsChecker'])
     register_Ns3CcnxNameComponentsValue_methods(root_module, root_module['ns3::CcnxNameComponentsValue'])
+    register_Ns3CcnxPathWeightTracer_methods(root_module, root_module['ns3::CcnxPathWeightTracer'])
     register_Ns3EmptyAttributeValue_methods(root_module, root_module['ns3::EmptyAttributeValue'])
     register_Ns3EventImpl_methods(root_module, root_module['ns3::EventImpl'])
     register_Ns3IntegerValue_methods(root_module, root_module['ns3::IntegerValue'])
+    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'])
+    register_Ns3Ipv4AppTracer_methods(root_module, root_module['ns3::Ipv4AppTracer'])
+    register_Ns3Ipv4L3Protocol_methods(root_module, root_module['ns3::Ipv4L3Protocol'])
+    register_Ns3Ipv4L3Tracer_methods(root_module, root_module['ns3::Ipv4L3Tracer'])
+    register_Ns3Ipv4L4Protocol_methods(root_module, root_module['ns3::Ipv4L4Protocol'])
     register_Ns3Ipv4MaskChecker_methods(root_module, root_module['ns3::Ipv4MaskChecker'])
     register_Ns3Ipv4MaskValue_methods(root_module, root_module['ns3::Ipv4MaskValue'])
+    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_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'])
@@ -509,11 +602,16 @@
     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_Ns3RandomVariableChecker_methods(root_module, root_module['ns3::RandomVariableChecker'])
     register_Ns3RandomVariableValue_methods(root_module, root_module['ns3::RandomVariableValue'])
     register_Ns3RocketfuelWeightsReader_methods(root_module, root_module['ns3::RocketfuelWeightsReader'])
+    register_Ns3SocketAddressTag_methods(root_module, root_module['ns3::SocketAddressTag'])
+    register_Ns3SocketIpTtlTag_methods(root_module, root_module['ns3::SocketIpTtlTag'])
+    register_Ns3SocketSetDontFragmentTag_methods(root_module, root_module['ns3::SocketSetDontFragmentTag'])
     register_Ns3SpringMobilityModel_methods(root_module, root_module['ns3::SpringMobilityModel'])
+    register_Ns3TcpCongestionWindowTracer_methods(root_module, root_module['ns3::TcpCongestionWindowTracer'])
     register_Ns3TimeChecker_methods(root_module, root_module['ns3::TimeChecker'])
     register_Ns3TimeValue_methods(root_module, root_module['ns3::TimeValue'])
     register_Ns3TypeIdChecker_methods(root_module, root_module['ns3::TypeIdChecker'])
@@ -1109,8 +1207,8 @@
     cls.add_binary_comparison_operator('<')
     ## ccnx-fib.h (module 'NDNabstraction'): ns3::CcnxFibFaceMetric::CcnxFibFaceMetric(ns3::CcnxFibFaceMetric const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::CcnxFibFaceMetric const &', 'arg0')])
-    ## ccnx-fib.h (module 'NDNabstraction'): ns3::CcnxFibFaceMetric::CcnxFibFaceMetric(ns3::Ptr<ns3::CcnxFace> face, int cost) [constructor]
-    cls.add_constructor([param('ns3::Ptr< ns3::CcnxFace >', 'face'), param('int', 'cost')])
+    ## ccnx-fib.h (module 'NDNabstraction'): ns3::CcnxFibFaceMetric::CcnxFibFaceMetric(ns3::Ptr<ns3::CcnxFace> face, int32_t cost) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::CcnxFace >', 'face'), param('int32_t', 'cost')])
     ## ccnx-fib.h (module 'NDNabstraction'): ns3::Ptr<ns3::CcnxFace> ns3::CcnxFibFaceMetric::GetFace() const [member function]
     cls.add_method('GetFace', 
                    'ns3::Ptr< ns3::CcnxFace >', 
@@ -1189,32 +1287,45 @@
                    'ns3::Ptr< ns3::CcnxFaceContainer >', 
                    [], 
                    is_const=True)
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::AddRoute(std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric) const [member function]
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::AddRoute(std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric) [member function]
     cls.add_method('AddRoute', 
                    'void', 
                    [param('std::string', 'nodeName'), param('std::string', 'prefix'), param('uint32_t', 'faceId'), param('int32_t', 'metric')], 
-                   is_const=True)
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::AddRoute(ns3::Ptr<ns3::Node> node, std::string prefix, ns3::Ptr<ns3::CcnxFace> face, int32_t metric) const [member function]
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::AddRoute(ns3::Ptr<ns3::Node> node, std::string prefix, ns3::Ptr<ns3::CcnxFace> face, int32_t metric) [member function]
     cls.add_method('AddRoute', 
                    'void', 
                    [param('ns3::Ptr< ns3::Node >', 'node'), param('std::string', 'prefix'), param('ns3::Ptr< ns3::CcnxFace >', 'face'), param('int32_t', 'metric')], 
-                   is_const=True)
+                   is_static=True)
     ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::SetDefaultRoutes(bool needSet) [member function]
     cls.add_method('SetDefaultRoutes', 
                    'void', 
                    [param('bool', 'needSet')])
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::InstallFakeGlobalRoutes() [member function]
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallFakeGlobalRoutes() [member function]
     cls.add_method('InstallFakeGlobalRoutes', 
                    'void', 
-                   [])
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::InstallRouteTo(ns3::Ptr<ns3::Node> node) [member function]
+                   [], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallFakeGlobalRoutesImpl() [member function]
+    cls.add_method('InstallFakeGlobalRoutesImpl', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallRouteTo(ns3::Ptr<ns3::Node> node) [member function]
     cls.add_method('InstallRouteTo', 
                    'void', 
-                   [param('ns3::Ptr< ns3::Node >', 'node')])
-    ## ccnx-stack-helper.h (module 'NDNabstraction'): void ns3::CcnxStackHelper::InstallRoutesToAll() [member function]
+                   [param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallRouteTo(std::string const & prefix, ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('InstallRouteTo', 
+                   'void', 
+                   [param('std::string const &', 'prefix'), param('ns3::Ptr< ns3::Node >', 'node')], 
+                   is_static=True)
+    ## ccnx-stack-helper.h (module 'NDNabstraction'): static void ns3::CcnxStackHelper::InstallRoutesToAll() [member function]
     cls.add_method('InstallRoutesToAll', 
                    'void', 
-                   [])
+                   [], 
+                   is_static=True)
     return
 
 def register_Ns3CcnxTraceHelper_methods(root_module, cls):
@@ -1230,10 +1341,34 @@
     cls.add_method('EnableAggregateL3All', 
                    'void', 
                    [])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableIpv4RateL3All(std::string const & ipv4RateTrace="ipv4-rate.log") [member function]
+    cls.add_method('EnableIpv4RateL3All', 
+                   'void', 
+                   [param('std::string const &', 'ipv4RateTrace', default_value='"ipv4-rate.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableIpv4SeqsAppAll(std::string const & appSeqsTrace="app-seqs.log") [member function]
+    cls.add_method('EnableIpv4SeqsAppAll', 
+                   'void', 
+                   [param('std::string const &', 'appSeqsTrace', default_value='"app-seqs.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnablePathWeights(std::string const & pathWeights) [member function]
+    cls.add_method('EnablePathWeights', 
+                   'void', 
+                   [param('std::string const &', 'pathWeights')])
     ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableRateL3All(std::string const & l3RateTrace="l3-rate.log") [member function]
     cls.add_method('EnableRateL3All', 
                    'void', 
                    [param('std::string const &', 'l3RateTrace', default_value='"l3-rate.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableSeqsAppAll(std::string const & app, std::string const & appSeqsTrace="app-seqs.log") [member function]
+    cls.add_method('EnableSeqsAppAll', 
+                   'void', 
+                   [param('std::string const &', 'app'), param('std::string const &', 'appSeqsTrace', default_value='"app-seqs.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableWindowsAll(std::string const & windowTrace="windows.log") [member function]
+    cls.add_method('EnableWindowsAll', 
+                   'void', 
+                   [param('std::string const &', 'windowTrace', default_value='"windows.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::EnableWindowsTcpAll(std::string const & windowTrace) [member function]
+    cls.add_method('EnableWindowsTcpAll', 
+                   'void', 
+                   [param('std::string const &', 'windowTrace')])
     ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::SetAppTraceFile(std::string const & appTrace="apps.log") [member function]
     cls.add_method('SetAppTraceFile', 
                    'void', 
@@ -1242,6 +1377,10 @@
     cls.add_method('SetL3TraceFile', 
                    'void', 
                    [param('std::string const &', 'l3Trace', default_value='"l3.log"')])
+    ## ccnx-trace-helper.h (module 'NDNabstraction'): void ns3::CcnxTraceHelper::TcpConnect(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('TcpConnect', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
     return
 
 def register_Ns3CcnxUnknownHeaderException_methods(root_module, cls):
@@ -1404,6 +1543,67 @@
                    [param('char const *', 'address')])
     return
 
+def register_Ns3Ipv4InterfaceAddress_methods(root_module, cls):
+    cls.add_binary_comparison_operator('!=')
+    cls.add_output_stream_operator()
+    cls.add_binary_comparison_operator('==')
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress() [constructor]
+    cls.add_constructor([])
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress(ns3::Ipv4Address local, ns3::Ipv4Mask mask) [constructor]
+    cls.add_constructor([param('ns3::Ipv4Address', 'local'), param('ns3::Ipv4Mask', 'mask')])
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::Ipv4InterfaceAddress(ns3::Ipv4InterfaceAddress const & o) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4InterfaceAddress const &', 'o')])
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4InterfaceAddress::GetBroadcast() const [member function]
+    cls.add_method('GetBroadcast', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4InterfaceAddress::GetLocal() const [member function]
+    cls.add_method('GetLocal', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4Mask ns3::Ipv4InterfaceAddress::GetMask() const [member function]
+    cls.add_method('GetMask', 
+                   'ns3::Ipv4Mask', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e ns3::Ipv4InterfaceAddress::GetScope() const [member function]
+    cls.add_method('GetScope', 
+                   'ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): bool ns3::Ipv4InterfaceAddress::IsSecondary() const [member function]
+    cls.add_method('IsSecondary', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetBroadcast(ns3::Ipv4Address broadcast) [member function]
+    cls.add_method('SetBroadcast', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'broadcast')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetLocal(ns3::Ipv4Address local) [member function]
+    cls.add_method('SetLocal', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'local')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetMask(ns3::Ipv4Mask mask) [member function]
+    cls.add_method('SetMask', 
+                   'void', 
+                   [param('ns3::Ipv4Mask', 'mask')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetPrimary() [member function]
+    cls.add_method('SetPrimary', 
+                   'void', 
+                   [])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetScope(ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e scope) [member function]
+    cls.add_method('SetScope', 
+                   'void', 
+                   [param('ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 'scope')])
+    ## ipv4-interface-address.h (module 'internet'): void ns3::Ipv4InterfaceAddress::SetSecondary() [member function]
+    cls.add_method('SetSecondary', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3Ipv4Mask_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_output_stream_operator()
@@ -2025,80 +2225,6 @@
                    [])
     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', 
-                   [])
-    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_Ns3RandomVariable_methods(root_module, cls):
     cls.add_output_stream_operator()
     ## random-variable.h (module 'core'): ns3::RandomVariable::RandomVariable() [constructor]
@@ -2182,6 +2308,96 @@
                    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::Next() [member function]
+    cls.add_method('Next', 
+                   'ns3::Time', 
+                   [], 
+                   is_static=True, deprecated=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::RunOneEvent() [member function]
+    cls.add_method('RunOneEvent', 
+                   'void', 
+                   [], 
+                   is_static=True, deprecated=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_Ns3SpringMobilityHelper_methods(root_module, cls):
     ## spring-mobility-helper.h (module 'NDNabstraction'): ns3::SpringMobilityHelper::SpringMobilityHelper() [constructor]
     cls.add_constructor([])
@@ -2199,38 +2415,6 @@
                    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')])
@@ -2832,6 +3016,178 @@
     cls.add_constructor([])
     return
 
+def register_Ns3Ipv4Header_methods(root_module, cls):
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::Ipv4Header(ns3::Ipv4Header const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Header const &', 'arg0')])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::Ipv4Header() [constructor]
+    cls.add_constructor([])
+    ## ipv4-header.h (module 'internet'): uint32_t ns3::Ipv4Header::Deserialize(ns3::Buffer::Iterator start) [member function]
+    cls.add_method('Deserialize', 
+                   'uint32_t', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_virtual=True)
+    ## ipv4-header.h (module 'internet'): std::string ns3::Ipv4Header::DscpTypeToString(ns3::Ipv4Header::DscpType dscp) const [member function]
+    cls.add_method('DscpTypeToString', 
+                   'std::string', 
+                   [param('ns3::Ipv4Header::DscpType', 'dscp')], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): std::string ns3::Ipv4Header::EcnTypeToString(ns3::Ipv4Header::EcnType ecn) const [member function]
+    cls.add_method('EcnTypeToString', 
+                   'std::string', 
+                   [param('ns3::Ipv4Header::EcnType', 'ecn')], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::EnableChecksum() [member function]
+    cls.add_method('EnableChecksum', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Header::GetDestination() const [member function]
+    cls.add_method('GetDestination', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::DscpType ns3::Ipv4Header::GetDscp() const [member function]
+    cls.add_method('GetDscp', 
+                   'ns3::Ipv4Header::DscpType', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Header::EcnType ns3::Ipv4Header::GetEcn() const [member function]
+    cls.add_method('GetEcn', 
+                   'ns3::Ipv4Header::EcnType', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint16_t ns3::Ipv4Header::GetFragmentOffset() const [member function]
+    cls.add_method('GetFragmentOffset', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint16_t ns3::Ipv4Header::GetIdentification() const [member function]
+    cls.add_method('GetIdentification', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): ns3::TypeId ns3::Ipv4Header::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): uint16_t ns3::Ipv4Header::GetPayloadSize() const [member function]
+    cls.add_method('GetPayloadSize', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint8_t ns3::Ipv4Header::GetProtocol() const [member function]
+    cls.add_method('GetProtocol', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint32_t ns3::Ipv4Header::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Header::GetSource() const [member function]
+    cls.add_method('GetSource', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint8_t ns3::Ipv4Header::GetTos() const [member function]
+    cls.add_method('GetTos', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): uint8_t ns3::Ipv4Header::GetTtl() const [member function]
+    cls.add_method('GetTtl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): static ns3::TypeId ns3::Ipv4Header::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-header.h (module 'internet'): bool ns3::Ipv4Header::IsChecksumOk() const [member function]
+    cls.add_method('IsChecksumOk', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): bool ns3::Ipv4Header::IsDontFragment() const [member function]
+    cls.add_method('IsDontFragment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): bool ns3::Ipv4Header::IsLastFragment() const [member function]
+    cls.add_method('IsLastFragment', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::Serialize(ns3::Buffer::Iterator start) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::Buffer::Iterator', 'start')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetDestination(ns3::Ipv4Address destination) [member function]
+    cls.add_method('SetDestination', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'destination')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetDontFragment() [member function]
+    cls.add_method('SetDontFragment', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetDscp(ns3::Ipv4Header::DscpType dscp) [member function]
+    cls.add_method('SetDscp', 
+                   'void', 
+                   [param('ns3::Ipv4Header::DscpType', 'dscp')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetEcn(ns3::Ipv4Header::EcnType ecn) [member function]
+    cls.add_method('SetEcn', 
+                   'void', 
+                   [param('ns3::Ipv4Header::EcnType', 'ecn')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetFragmentOffset(uint16_t offsetBytes) [member function]
+    cls.add_method('SetFragmentOffset', 
+                   'void', 
+                   [param('uint16_t', 'offsetBytes')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetIdentification(uint16_t identification) [member function]
+    cls.add_method('SetIdentification', 
+                   'void', 
+                   [param('uint16_t', 'identification')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetLastFragment() [member function]
+    cls.add_method('SetLastFragment', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetMayFragment() [member function]
+    cls.add_method('SetMayFragment', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetMoreFragments() [member function]
+    cls.add_method('SetMoreFragments', 
+                   'void', 
+                   [])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetPayloadSize(uint16_t size) [member function]
+    cls.add_method('SetPayloadSize', 
+                   'void', 
+                   [param('uint16_t', 'size')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetProtocol(uint8_t num) [member function]
+    cls.add_method('SetProtocol', 
+                   'void', 
+                   [param('uint8_t', 'num')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetSource(ns3::Ipv4Address source) [member function]
+    cls.add_method('SetSource', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'source')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetTos(uint8_t tos) [member function]
+    cls.add_method('SetTos', 
+                   'void', 
+                   [param('uint8_t', 'tos')])
+    ## ipv4-header.h (module 'internet'): void ns3::Ipv4Header::SetTtl(uint8_t ttl) [member function]
+    cls.add_method('SetTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    return
+
 def register_Ns3LogNormalVariable_methods(root_module, cls):
     ## random-variable.h (module 'core'): ns3::LogNormalVariable::LogNormalVariable(ns3::LogNormalVariable const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::LogNormalVariable const &', 'arg0')])
@@ -3041,6 +3397,18 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3CcnxPathWeightTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3CcnxPathWeightTracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter< ns3::CcnxPathWeightTracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::CcnxPathWeightTracer, ns3::empty, ns3::DefaultDeleter<ns3::CcnxPathWeightTracer> >::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([])
@@ -3053,6 +3421,54 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3Ipv4AppTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4AppTracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4AppTracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4AppTracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4AppTracer> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Ipv4L3Tracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4L3Tracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4L3Tracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4L3Tracer, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4L3Tracer> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Ipv4MulticastRoute_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4MulticastRoute__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4MulticastRoute > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4MulticastRoute, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4MulticastRoute> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3SimpleRefCount__Ns3Ipv4Route_Ns3Empty_Ns3DefaultDeleter__lt__ns3Ipv4Route__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >::SimpleRefCount(ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter< ns3::Ipv4Route > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::Ipv4Route, ns3::empty, ns3::DefaultDeleter<ns3::Ipv4Route> >::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([])
@@ -3065,6 +3481,18 @@
                    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([])
@@ -3101,6 +3529,278 @@
                    is_static=True)
     return
 
+def register_Ns3SimpleRefCount__Ns3WindowTracer_Ns3Empty_Ns3DefaultDeleter__lt__ns3WindowTracer__gt___methods(root_module, cls):
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >::SimpleRefCount() [constructor]
+    cls.add_constructor([])
+    ## simple-ref-count.h (module 'core'): ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >::SimpleRefCount(ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> > const & o) [copy constructor]
+    cls.add_constructor([param('ns3::SimpleRefCount< ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter< ns3::WindowTracer > > const &', 'o')])
+    ## simple-ref-count.h (module 'core'): static void ns3::SimpleRefCount<ns3::WindowTracer, ns3::empty, ns3::DefaultDeleter<ns3::WindowTracer> >::Cleanup() [member function]
+    cls.add_method('Cleanup', 
+                   'void', 
+                   [], 
+                   is_static=True)
+    return
+
+def register_Ns3Socket_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::Socket::Socket(ns3::Socket const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Socket const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::Socket::Socket() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): int ns3::Socket::Bind(ns3::Address const & address) [member function]
+    cls.add_method('Bind', 
+                   'int', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Bind() [member function]
+    cls.add_method('Bind', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::BindToNetDevice(ns3::Ptr<ns3::NetDevice> netdevice) [member function]
+    cls.add_method('BindToNetDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'netdevice')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Close() [member function]
+    cls.add_method('Close', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Connect(ns3::Address const & address) [member function]
+    cls.add_method('Connect', 
+                   'int', 
+                   [param('ns3::Address const &', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): static ns3::Ptr<ns3::Socket> ns3::Socket::CreateSocket(ns3::Ptr<ns3::Node> node, ns3::TypeId tid) [member function]
+    cls.add_method('CreateSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('ns3::TypeId', 'tid')], 
+                   is_static=True)
+    ## socket.h (module 'network'): bool ns3::Socket::GetAllowBroadcast() const [member function]
+    cls.add_method('GetAllowBroadcast', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::NetDevice> ns3::Socket::GetBoundNetDevice() [member function]
+    cls.add_method('GetBoundNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [])
+    ## socket.h (module 'network'): ns3::Socket::SocketErrno ns3::Socket::GetErrno() const [member function]
+    cls.add_method('GetErrno', 
+                   'ns3::Socket::SocketErrno', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Node> ns3::Socket::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::Socket::GetRxAvailable() const [member function]
+    cls.add_method('GetRxAvailable', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::GetSockName(ns3::Address & address) const [member function]
+    cls.add_method('GetSockName', 
+                   'int', 
+                   [param('ns3::Address &', 'address')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Socket::SocketType ns3::Socket::GetSocketType() const [member function]
+    cls.add_method('GetSocketType', 
+                   'ns3::Socket::SocketType', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::Socket::GetTxAvailable() const [member function]
+    cls.add_method('GetTxAvailable', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): bool ns3::Socket::IsRecvPktInfo() const [member function]
+    cls.add_method('IsRecvPktInfo', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## socket.h (module 'network'): int ns3::Socket::Listen() [member function]
+    cls.add_method('Listen', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::Recv(uint32_t maxSize, uint32_t flags) [member function]
+    cls.add_method('Recv', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'maxSize'), param('uint32_t', 'flags')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::Recv() [member function]
+    cls.add_method('Recv', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [])
+    ## socket.h (module 'network'): int ns3::Socket::Recv(uint8_t * buf, uint32_t size, uint32_t flags) [member function]
+    cls.add_method('Recv', 
+                   'int', 
+                   [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags')])
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::RecvFrom(uint32_t maxSize, uint32_t flags, ns3::Address & fromAddress) [member function]
+    cls.add_method('RecvFrom', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('uint32_t', 'maxSize'), param('uint32_t', 'flags'), param('ns3::Address &', 'fromAddress')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): ns3::Ptr<ns3::Packet> ns3::Socket::RecvFrom(ns3::Address & fromAddress) [member function]
+    cls.add_method('RecvFrom', 
+                   'ns3::Ptr< ns3::Packet >', 
+                   [param('ns3::Address &', 'fromAddress')])
+    ## socket.h (module 'network'): int ns3::Socket::RecvFrom(uint8_t * buf, uint32_t size, uint32_t flags, ns3::Address & fromAddress) [member function]
+    cls.add_method('RecvFrom', 
+                   'int', 
+                   [param('uint8_t *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address &', 'fromAddress')])
+    ## socket.h (module 'network'): int ns3::Socket::Send(ns3::Ptr<ns3::Packet> p, uint32_t flags) [member function]
+    cls.add_method('Send', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::Send(ns3::Ptr<ns3::Packet> p) [member function]
+    cls.add_method('Send', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p')])
+    ## socket.h (module 'network'): int ns3::Socket::Send(uint8_t const * buf, uint32_t size, uint32_t flags) [member function]
+    cls.add_method('Send', 
+                   'int', 
+                   [param('uint8_t const *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags')])
+    ## socket.h (module 'network'): int ns3::Socket::SendTo(ns3::Ptr<ns3::Packet> p, uint32_t flags, ns3::Address const & toAddress) [member function]
+    cls.add_method('SendTo', 
+                   'int', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('uint32_t', 'flags'), param('ns3::Address const &', 'toAddress')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::SendTo(uint8_t const * buf, uint32_t size, uint32_t flags, ns3::Address const & address) [member function]
+    cls.add_method('SendTo', 
+                   'int', 
+                   [param('uint8_t const *', 'buf'), param('uint32_t', 'size'), param('uint32_t', 'flags'), param('ns3::Address const &', 'address')])
+    ## socket.h (module 'network'): void ns3::Socket::SetAcceptCallback(ns3::Callback<bool, ns3::Ptr<ns3::Socket>, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionRequest, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::Address const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> newConnectionCreated) [member function]
+    cls.add_method('SetAcceptCallback', 
+                   'void', 
+                   [param('ns3::Callback< bool, ns3::Ptr< ns3::Socket >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionRequest'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::Address const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'newConnectionCreated')])
+    ## socket.h (module 'network'): bool ns3::Socket::SetAllowBroadcast(bool allowBroadcast) [member function]
+    cls.add_method('SetAllowBroadcast', 
+                   'bool', 
+                   [param('bool', 'allowBroadcast')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::SetCloseCallbacks(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> normalClose, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> errorClose) [member function]
+    cls.add_method('SetCloseCallbacks', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'normalClose'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'errorClose')])
+    ## socket.h (module 'network'): void ns3::Socket::SetConnectCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionSucceeded, ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> connectionFailed) [member function]
+    cls.add_method('SetConnectCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionSucceeded'), param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'connectionFailed')])
+    ## socket.h (module 'network'): void ns3::Socket::SetDataSentCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> dataSent) [member function]
+    cls.add_method('SetDataSentCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'dataSent')])
+    ## socket.h (module 'network'): void ns3::Socket::SetRecvCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> arg0) [member function]
+    cls.add_method('SetRecvCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'arg0')])
+    ## socket.h (module 'network'): void ns3::Socket::SetRecvPktInfo(bool flag) [member function]
+    cls.add_method('SetRecvPktInfo', 
+                   'void', 
+                   [param('bool', 'flag')])
+    ## socket.h (module 'network'): void ns3::Socket::SetSendCallback(ns3::Callback<void, ns3::Ptr<ns3::Socket>, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> sendCb) [member function]
+    cls.add_method('SetSendCallback', 
+                   'void', 
+                   [param('ns3::Callback< void, ns3::Ptr< ns3::Socket >, unsigned int, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'sendCb')])
+    ## socket.h (module 'network'): int ns3::Socket::ShutdownRecv() [member function]
+    cls.add_method('ShutdownRecv', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): int ns3::Socket::ShutdownSend() [member function]
+    cls.add_method('ShutdownSend', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## socket.h (module 'network'): void ns3::Socket::NotifyConnectionFailed() [member function]
+    cls.add_method('NotifyConnectionFailed', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): bool ns3::Socket::NotifyConnectionRequest(ns3::Address const & from) [member function]
+    cls.add_method('NotifyConnectionRequest', 
+                   'bool', 
+                   [param('ns3::Address const &', 'from')], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyConnectionSucceeded() [member function]
+    cls.add_method('NotifyConnectionSucceeded', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyDataRecv() [member function]
+    cls.add_method('NotifyDataRecv', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyDataSent(uint32_t size) [member function]
+    cls.add_method('NotifyDataSent', 
+                   'void', 
+                   [param('uint32_t', 'size')], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyErrorClose() [member function]
+    cls.add_method('NotifyErrorClose', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyNewConnectionCreated(ns3::Ptr<ns3::Socket> socket, ns3::Address const & from) [member function]
+    cls.add_method('NotifyNewConnectionCreated', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket'), param('ns3::Address const &', 'from')], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifyNormalClose() [member function]
+    cls.add_method('NotifyNormalClose', 
+                   'void', 
+                   [], 
+                   visibility='protected')
+    ## socket.h (module 'network'): void ns3::Socket::NotifySend(uint32_t spaceAvailable) [member function]
+    cls.add_method('NotifySend', 
+                   'void', 
+                   [param('uint32_t', 'spaceAvailable')], 
+                   visibility='protected')
+    return
+
+def register_Ns3Tag_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## 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_Ns3Time_methods(root_module, cls):
     cls.add_binary_comparison_operator('!=')
     cls.add_inplace_numeric_operator('+=', param('ns3::Time const &', 'right'))
@@ -3303,6 +4003,8 @@
 def register_Ns3TopologyReaderLink_methods(root_module, cls):
     ## topology-reader.h (module 'topology-read'): ns3::TopologyReader::Link::Link(ns3::TopologyReader::Link const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::TopologyReader::Link const &', 'arg0')])
+    ## topology-reader.h (module 'topology-read'): ns3::TopologyReader::Link::Link() [constructor]
+    cls.add_constructor([])
     ## topology-reader.h (module 'topology-read'): ns3::TopologyReader::Link::Link(ns3::Ptr<ns3::Node> fromPtr, std::string const & fromName, ns3::Ptr<ns3::Node> toPtr, std::string const & toName) [constructor]
     cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'fromPtr'), param('std::string const &', 'fromName'), param('ns3::Ptr< ns3::Node >', 'toPtr'), param('std::string const &', 'toName')])
     ## topology-reader.h (module 'topology-read'): std::_Rb_tree_const_iterator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > ns3::TopologyReader::Link::AttributesBegin() [member function]
@@ -3423,6 +4125,92 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3WeightsPathStretchTag_methods(root_module, cls):
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::WeightsPathStretchTag(ns3::WeightsPathStretchTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WeightsPathStretchTag const &', 'arg0')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::WeightsPathStretchTag() [constructor]
+    cls.add_constructor([])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::AddPathInfo(ns3::Ptr<ns3::Node> node, uint32_t weight) [member function]
+    cls.add_method('AddPathInfo', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node'), param('uint32_t', 'weight')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::WeightsPathStretchTag::GetDestinationNode() const [member function]
+    cls.add_method('GetDestinationNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): std::list<ns3::WeightsPathStretchTag::NodeWeightPair, std::allocator<ns3::WeightsPathStretchTag::NodeWeightPair> > const & ns3::WeightsPathStretchTag::GetInfos() const [member function]
+    cls.add_method('GetInfos', 
+                   'std::list< ns3::WeightsPathStretchTag::NodeWeightPair > const &', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): uint32_t ns3::WeightsPathStretchTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::WeightsPathStretchTag::GetSourceNode() const [member function]
+    cls.add_method('GetSourceNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): uint64_t ns3::WeightsPathStretchTag::GetTotalWeight() const [member function]
+    cls.add_method('GetTotalWeight', 
+                   'uint64_t', 
+                   [], 
+                   is_const=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): static ns3::TypeId ns3::WeightsPathStretchTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): void ns3::WeightsPathStretchTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    return
+
+def register_Ns3WeightsPathStretchTagNodeWeightPair_methods(root_module, cls):
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::NodeWeightPair(ns3::WeightsPathStretchTag::NodeWeightPair const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WeightsPathStretchTag::NodeWeightPair const &', 'arg0')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::NodeWeightPair() [constructor]
+    cls.add_constructor([])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::NodeWeightPair(ns3::Ptr<ns3::Node> _node, uint32_t _weight) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', '_node'), param('uint32_t', '_weight')])
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::node [variable]
+    cls.add_instance_attribute('node', 'ns3::Ptr< ns3::Node >', is_const=False)
+    ## ccnx-path-stretch-tag.h (module 'NDNabstraction'): ns3::WeightsPathStretchTag::NodeWeightPair::weight [variable]
+    cls.add_instance_attribute('weight', 'uint32_t', is_const=False)
+    return
+
+def register_Ns3WindowTracer_methods(root_module, cls):
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::WindowTracer::WindowTracer(ns3::WindowTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::WindowTracer const &', 'arg0')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::WindowTracer::WindowTracer(std::ostream & os, ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): static void ns3::WindowTracer::PrintHeader(std::ostream & os) [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_static=True)
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): void ns3::WindowTracer::OnWindowChange(std::string context, uint32_t oldValue, uint32_t newValue) [member function]
+    cls.add_method('OnWindowChange', 
+                   'void', 
+                   [param('std::string', 'context'), param('uint32_t', 'oldValue'), param('uint32_t', 'newValue')], 
+                   is_virtual=True)
+    return
+
 def register_Ns3AnnotatedTopologyReader_methods(root_module, cls):
     ## annotated-topology-reader.h (module 'NDNabstraction'): ns3::AnnotatedTopologyReader::AnnotatedTopologyReader(std::string const & path="", double scale=1.0e+0) [constructor]
     cls.add_constructor([param('std::string const &', 'path', default_value='""'), param('double', 'scale', default_value='1.0e+0')])
@@ -3436,6 +4224,11 @@
                    'ns3::NodeContainer', 
                    [], 
                    is_const=True)
+    ## annotated-topology-reader.h (module 'NDNabstraction'): std::list<ns3::TopologyReader::Link, std::allocator<ns3::TopologyReader::Link> > const & ns3::AnnotatedTopologyReader::GetLinks() const [member function]
+    cls.add_method('GetLinks', 
+                   'std::list< ns3::TopologyReader::Link > const &', 
+                   [], 
+                   is_const=True)
     ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::AssignIpv4Addresses(ns3::Ipv4Address base) [member function]
     cls.add_method('AssignIpv4Addresses', 
                    'void', 
@@ -3448,6 +4241,15 @@
     cls.add_method('SetMobilityModel', 
                    'void', 
                    [param('std::string const &', 'model')])
+    ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::ApplyOspfMetric() [member function]
+    cls.add_method('ApplyOspfMetric', 
+                   'void', 
+                   [])
+    ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::SavePositions(std::string const & file) const [member function]
+    cls.add_method('SavePositions', 
+                   'void', 
+                   [param('std::string const &', 'file')], 
+                   is_const=True)
     ## annotated-topology-reader.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::AnnotatedTopologyReader::CreateNode(std::string const name) [member function]
     cls.add_method('CreateNode', 
                    'ns3::Ptr< ns3::Node >', 
@@ -3463,11 +4265,6 @@
                    'void', 
                    [], 
                    visibility='protected')
-    ## annotated-topology-reader.h (module 'NDNabstraction'): void ns3::AnnotatedTopologyReader::ApplyOspfMetric() [member function]
-    cls.add_method('ApplyOspfMetric', 
-                   'void', 
-                   [], 
-                   visibility='protected')
     return
 
 def register_Ns3Application_methods(root_module, cls):
@@ -3610,6 +4407,46 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3BatchesChecker_methods(root_module, cls):
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesChecker::BatchesChecker() [constructor]
+    cls.add_constructor([])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesChecker::BatchesChecker(ns3::BatchesChecker const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BatchesChecker const &', 'arg0')])
+    return
+
+def register_Ns3BatchesValue_methods(root_module, cls):
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue::BatchesValue() [constructor]
+    cls.add_constructor([])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue::BatchesValue(ns3::BatchesValue const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::BatchesValue const &', 'arg0')])
+    ## batches.h (module 'NDNabstraction'): ns3::BatchesValue::BatchesValue(ns3::Batches const & value) [constructor]
+    cls.add_constructor([param('ns3::Batches const &', 'value')])
+    ## batches.h (module 'NDNabstraction'): ns3::Ptr<ns3::AttributeValue> ns3::BatchesValue::Copy() const [member function]
+    cls.add_method('Copy', 
+                   'ns3::Ptr< ns3::AttributeValue >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## batches.h (module 'NDNabstraction'): bool ns3::BatchesValue::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)
+    ## batches.h (module 'NDNabstraction'): ns3::Batches ns3::BatchesValue::Get() const [member function]
+    cls.add_method('Get', 
+                   'ns3::Batches', 
+                   [], 
+                   is_const=True)
+    ## batches.h (module 'NDNabstraction'): std::string ns3::BatchesValue::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)
+    ## batches.h (module 'NDNabstraction'): void ns3::BatchesValue::Set(ns3::Batches const & value) [member function]
+    cls.add_method('Set', 
+                   'void', 
+                   [param('ns3::Batches const &', 'value')])
+    return
+
 def register_Ns3CallbackChecker_methods(root_module, cls):
     ## callback.h (module 'core'): ns3::CallbackChecker::CallbackChecker() [constructor]
     cls.add_constructor([])
@@ -3714,20 +4551,20 @@
                    'ns3::TypeId', 
                    [], 
                    is_static=True)
-    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnContentObject(ns3::Ptr<const ns3::CcnxContentObjectHeader> const & contentObject, ns3::Ptr<const ns3::Packet> const & payload) [member function]
+    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnContentObject(ns3::Ptr<const ns3::CcnxContentObjectHeader> const & contentObject, ns3::Ptr<ns3::Packet> payload) [member function]
     cls.add_method('OnContentObject', 
                    'void', 
-                   [param('ns3::Ptr< ns3::CcnxContentObjectHeader const > const &', 'contentObject'), param('ns3::Ptr< ns3::Packet const > const &', 'payload')], 
+                   [param('ns3::Ptr< ns3::CcnxContentObjectHeader const > const &', 'contentObject'), param('ns3::Ptr< ns3::Packet >', 'payload')], 
                    is_virtual=True)
-    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnInterest(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest) [member function]
+    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnInterest(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest, ns3::Ptr<ns3::Packet> packet) [member function]
     cls.add_method('OnInterest', 
                    'void', 
-                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest')], 
+                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest'), param('ns3::Ptr< ns3::Packet >', 'packet')], 
                    is_virtual=True)
-    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnNack(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest) [member function]
+    ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::OnNack(ns3::Ptr<const ns3::CcnxInterestHeader> const & interest, ns3::Ptr<ns3::Packet> packet) [member function]
     cls.add_method('OnNack', 
                    'void', 
-                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest')], 
+                   [param('ns3::Ptr< ns3::CcnxInterestHeader const > const &', 'interest'), param('ns3::Ptr< ns3::Packet >', 'packet')], 
                    is_virtual=True)
     ## ccnx-app.h (module 'NDNabstraction'): void ns3::CcnxApp::RegisterProtocolHandler(ns3::Callback<bool, ns3::Ptr<ns3::Packet const> const&, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty> handler) [member function]
     cls.add_method('RegisterProtocolHandler', 
@@ -3799,6 +4636,17 @@
                    is_pure_virtual=True, is_const=True, is_virtual=True)
     return
 
+def register_Ns3CcnxConsumerWindowTracer_methods(root_module, cls):
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::CcnxConsumerWindowTracer::CcnxConsumerWindowTracer(ns3::CcnxConsumerWindowTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CcnxConsumerWindowTracer const &', 'arg0')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::CcnxConsumerWindowTracer::CcnxConsumerWindowTracer(std::ostream & os, ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): void ns3::CcnxConsumerWindowTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3CcnxContentObjectHeader_methods(root_module, cls):
     ## ccnx-content-object-header.h (module 'NDNabstraction'): ns3::CcnxContentObjectHeader::CcnxContentObjectHeader(ns3::CcnxContentObjectHeader const & arg0) [copy constructor]
     cls.add_constructor([param('ns3::CcnxContentObjectHeader const &', 'arg0')])
@@ -3893,6 +4741,16 @@
                    'uint32_t', 
                    [], 
                    is_const=True)
+    ## ccnx-face.h (module 'NDNabstraction'): uint16_t ns3::CcnxFace::GetMetric() const [member function]
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ccnx-face.h (module 'NDNabstraction'): ns3::Ptr<ns3::Node> ns3::CcnxFace::GetNode() const [member function]
+    cls.add_method('GetNode', 
+                   'ns3::Ptr< ns3::Node >', 
+                   [], 
+                   is_const=True)
     ## ccnx-face.h (module 'NDNabstraction'): static ns3::TypeId ns3::CcnxFace::GetTypeId() [member function]
     cls.add_method('GetTypeId', 
                    'ns3::TypeId', 
@@ -3941,6 +4799,11 @@
     cls.add_method('SetId', 
                    'void', 
                    [param('uint32_t', 'id')])
+    ## ccnx-face.h (module 'NDNabstraction'): void ns3::CcnxFace::SetMetric(uint16_t metric) [member function]
+    cls.add_method('SetMetric', 
+                   'void', 
+                   [param('uint16_t', 'metric')], 
+                   is_virtual=True)
     ## ccnx-face.h (module 'NDNabstraction'): void ns3::CcnxFace::SetUp(bool up=true) [member function]
     cls.add_method('SetUp', 
                    'void', 
@@ -4304,6 +5167,11 @@
                    'std::list< std::string > const &', 
                    [], 
                    is_const=True)
+    ## ccnx-name-components.h (module 'NDNabstraction'): std::string ns3::CcnxNameComponents::GetLastComponent() const [member function]
+    cls.add_method('GetLastComponent', 
+                   'std::string', 
+                   [], 
+                   is_const=True)
     ## ccnx-name-components.h (module 'NDNabstraction'): std::list<boost::reference_wrapper<std::string const>, std::allocator<boost::reference_wrapper<std::string const> > > ns3::CcnxNameComponents::GetSubComponents(size_t num) const [member function]
     cls.add_method('GetSubComponents', 
                    'std::list< boost::reference_wrapper< std::string const > >', 
@@ -4361,6 +5229,27 @@
                    [param('ns3::CcnxNameComponents const &', 'value')])
     return
 
+def register_Ns3CcnxPathWeightTracer_methods(root_module, cls):
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): ns3::CcnxPathWeightTracer::CcnxPathWeightTracer(ns3::CcnxPathWeightTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::CcnxPathWeightTracer const &', 'arg0')])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): ns3::CcnxPathWeightTracer::CcnxPathWeightTracer(std::ostream & os, ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): void ns3::CcnxPathWeightTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): static void ns3::CcnxPathWeightTracer::PrintHeader(std::ostream & os) [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_static=True)
+    ## ccnx-path-weight-tracer.h (module 'NDNabstraction'): void ns3::CcnxPathWeightTracer::InLocalFace(std::string context, ns3::Ptr<ns3::Node> src, ns3::Ptr<ns3::Node> dst, uint32_t seqno, uint32_t weight) [member function]
+    cls.add_method('InLocalFace', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ptr< ns3::Node >', 'src'), param('ns3::Ptr< ns3::Node >', 'dst'), param('uint32_t', 'seqno'), param('uint32_t', 'weight')], 
+                   is_virtual=True)
+    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')])
@@ -4440,6 +5329,160 @@
                    [param('int64_t const &', 'value')])
     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')])
+    ## ipv4.h (module 'internet'): ns3::Ipv4::Ipv4() [constructor]
+    cls.add_constructor([])
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::AddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): uint32_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): ns3::Ipv4InterfaceAddress ns3::Ipv4::GetAddress(uint32_t interface, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4InterfaceAddress', 
+                   [param('uint32_t', 'interface'), param('uint32_t', 'addressIndex')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): int32_t ns3::Ipv4::GetInterfaceForAddress(ns3::Ipv4Address address) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'address')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): int32_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): int32_t ns3::Ipv4::GetInterfaceForPrefix(ns3::Ipv4Address address, ns3::Ipv4Mask mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'address'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): uint16_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): uint16_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): uint32_t ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): uint32_t ns3::Ipv4::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv4RoutingProtocol >', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): static ns3::TypeId ns3::Ipv4::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::Insert(ns3::Ptr<ns3::Ipv4L4Protocol> protocol) [member function]
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4L4Protocol >', 'protocol')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+    cls.add_method('IsDestinationAddress', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4::SelectSourceAddress(ns3::Ptr<const ns3::NetDevice> device, ns3::Ipv4Address dst, ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e scope) [member function]
+    cls.add_method('SelectSourceAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device'), param('ns3::Ipv4Address', 'dst'), param('ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 'scope')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol, ns3::Ptr<ns3::Ipv4Route> route) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol'), param('ns3::Ptr< ns3::Ipv4Route >', 'route')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetDown(uint32_t interface) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::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)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetUp(uint32_t interface) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4.h (module 'internet'): ns3::Ipv4::IF_ANY [variable]
+    cls.add_static_attribute('IF_ANY', 'uint32_t const', is_const=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv4.h (module 'internet'): bool ns3::Ipv4::GetWeakEsModel() const [member function]
+    cls.add_method('GetWeakEsModel', 
+                   'bool', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, visibility='private', is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
+                   'void', 
+                   [param('bool', 'forward')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    ## ipv4.h (module 'internet'): void ns3::Ipv4::SetWeakEsModel(bool model) [member function]
+    cls.add_method('SetWeakEsModel', 
+                   'void', 
+                   [param('bool', 'model')], 
+                   is_pure_virtual=True, visibility='private', is_virtual=True)
+    return
+
 def register_Ns3Ipv4AddressChecker_methods(root_module, cls):
     ## ipv4-address.h (module 'network'): ns3::Ipv4AddressChecker::Ipv4AddressChecker() [constructor]
     cls.add_constructor([])
@@ -4480,6 +5523,312 @@
                    [param('ns3::Ipv4Address const &', 'value')])
     return
 
+def register_Ns3Ipv4AppTracer_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): ns3::Ipv4AppTracer::Ipv4AppTracer(ns3::Ipv4AppTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4AppTracer const &', 'arg0')])
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): ns3::Ipv4AppTracer::Ipv4AppTracer(ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::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)
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::PrintHeader(std::ostream & os) const [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::Rx(std::string context, ns3::Ipv4Header const & arg1, ns3::Ptr<const ns3::Packet> arg2, uint32_t arg3) [member function]
+    cls.add_method('Rx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ipv4Header const &', 'arg1'), param('ns3::Ptr< ns3::Packet const >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-app-tracer.h (module 'NDNabstraction'): void ns3::Ipv4AppTracer::Tx(std::string context, ns3::Ipv4Header const & arg1, ns3::Ptr<const ns3::Packet> arg2, uint32_t arg3) [member function]
+    cls.add_method('Tx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ipv4Header const &', 'arg1'), param('ns3::Ptr< ns3::Packet const >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3Ipv4L3Protocol_methods(root_module, cls):
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol::Ipv4L3Protocol() [constructor]
+    cls.add_constructor([])
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::AddAddress(uint32_t i, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('AddAddress', 
+                   'bool', 
+                   [param('uint32_t', 'i'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv4L3Protocol::AddInterface(ns3::Ptr<ns3::NetDevice> device) [member function]
+    cls.add_method('AddInterface', 
+                   'uint32_t', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'device')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Socket> ns3::Ipv4L3Protocol::CreateRawSocket() [member function]
+    cls.add_method('CreateRawSocket', 
+                   'ns3::Ptr< ns3::Socket >', 
+                   [])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::DeleteRawSocket(ns3::Ptr<ns3::Socket> socket) [member function]
+    cls.add_method('DeleteRawSocket', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Socket >', 'socket')])
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4InterfaceAddress ns3::Ipv4L3Protocol::GetAddress(uint32_t interfaceIndex, uint32_t addressIndex) const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Ipv4InterfaceAddress', 
+                   [param('uint32_t', 'interfaceIndex'), param('uint32_t', 'addressIndex')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4Interface> ns3::Ipv4L3Protocol::GetInterface(uint32_t i) const [member function]
+    cls.add_method('GetInterface', 
+                   'ns3::Ptr< ns3::Ipv4Interface >', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True)
+    ## ipv4-l3-protocol.h (module 'internet'): int32_t ns3::Ipv4L3Protocol::GetInterfaceForAddress(ns3::Ipv4Address addr) const [member function]
+    cls.add_method('GetInterfaceForAddress', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'addr')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): int32_t ns3::Ipv4L3Protocol::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)
+    ## ipv4-l3-protocol.h (module 'internet'): int32_t ns3::Ipv4L3Protocol::GetInterfaceForPrefix(ns3::Ipv4Address addr, ns3::Ipv4Mask mask) const [member function]
+    cls.add_method('GetInterfaceForPrefix', 
+                   'int32_t', 
+                   [param('ns3::Ipv4Address', 'addr'), param('ns3::Ipv4Mask', 'mask')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv4L3Protocol::GetMetric(uint32_t i) const [member function]
+    cls.add_method('GetMetric', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint16_t ns3::Ipv4L3Protocol::GetMtu(uint32_t i) const [member function]
+    cls.add_method('GetMtu', 
+                   'uint16_t', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv4L3Protocol::GetNAddresses(uint32_t interface) const [member function]
+    cls.add_method('GetNAddresses', 
+                   'uint32_t', 
+                   [param('uint32_t', 'interface')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): uint32_t ns3::Ipv4L3Protocol::GetNInterfaces() const [member function]
+    cls.add_method('GetNInterfaces', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv4L3Protocol::GetNetDevice(uint32_t i) [member function]
+    cls.add_method('GetNetDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4L4Protocol> ns3::Ipv4L3Protocol::GetProtocol(int protocolNumber) const [member function]
+    cls.add_method('GetProtocol', 
+                   'ns3::Ptr< ns3::Ipv4L4Protocol >', 
+                   [param('int', 'protocolNumber')], 
+                   is_const=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4RoutingProtocol> ns3::Ipv4L3Protocol::GetRoutingProtocol() const [member function]
+    cls.add_method('GetRoutingProtocol', 
+                   'ns3::Ptr< ns3::Ipv4RoutingProtocol >', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv4L3Protocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::Insert(ns3::Ptr<ns3::Ipv4L4Protocol> protocol) [member function]
+    cls.add_method('Insert', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4L4Protocol >', 'protocol')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsDestinationAddress(ns3::Ipv4Address address, uint32_t iif) const [member function]
+    cls.add_method('IsDestinationAddress', 
+                   'bool', 
+                   [param('ns3::Ipv4Address', 'address'), param('uint32_t', 'iif')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsForwarding(uint32_t i) const [member function]
+    cls.add_method('IsForwarding', 
+                   'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::IsUp(uint32_t i) const [member function]
+    cls.add_method('IsUp', 
+                   'bool', 
+                   [param('uint32_t', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::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')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::Remove(ns3::Ptr<ns3::Ipv4L4Protocol> protocol) [member function]
+    cls.add_method('Remove', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4L4Protocol >', 'protocol')])
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::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)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4L3Protocol::SelectSourceAddress(ns3::Ptr<const ns3::NetDevice> device, ns3::Ipv4Address dst, ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e scope) [member function]
+    cls.add_method('SelectSourceAddress', 
+                   'ns3::Ipv4Address', 
+                   [param('ns3::Ptr< ns3::NetDevice const >', 'device'), param('ns3::Ipv4Address', 'dst'), param('ns3::Ipv4InterfaceAddress::InterfaceAddressScope_e', 'scope')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::Send(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Address source, ns3::Ipv4Address destination, uint8_t protocol, ns3::Ptr<ns3::Ipv4Route> route) [member function]
+    cls.add_method('Send', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Address', 'source'), param('ns3::Ipv4Address', 'destination'), param('uint8_t', 'protocol'), param('ns3::Ptr< ns3::Ipv4Route >', 'route')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SendWithHeader(ns3::Ptr<ns3::Packet> packet, ns3::Ipv4Header ipHeader, ns3::Ptr<ns3::Ipv4Route> route) [member function]
+    cls.add_method('SendWithHeader', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Packet >', 'packet'), param('ns3::Ipv4Header', 'ipHeader'), param('ns3::Ptr< ns3::Ipv4Route >', 'route')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetDefaultTtl(uint8_t ttl) [member function]
+    cls.add_method('SetDefaultTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetDown(uint32_t i) [member function]
+    cls.add_method('SetDown', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetForwarding(uint32_t i, bool val) [member function]
+    cls.add_method('SetForwarding', 
+                   'void', 
+                   [param('uint32_t', 'i'), param('bool', 'val')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::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)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetNode(ns3::Ptr<ns3::Node> node) [member function]
+    cls.add_method('SetNode', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetRoutingProtocol(ns3::Ptr<ns3::Ipv4RoutingProtocol> routingProtocol) [member function]
+    cls.add_method('SetRoutingProtocol', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4RoutingProtocol >', 'routingProtocol')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetUp(uint32_t i) [member function]
+    cls.add_method('SetUp', 
+                   'void', 
+                   [param('uint32_t', 'i')], 
+                   is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): ns3::Ipv4L3Protocol::PROT_NUMBER [variable]
+    cls.add_static_attribute('PROT_NUMBER', 'uint16_t const', is_const=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::DoDispose() [member function]
+    cls.add_method('DoDispose', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::NotifyNewAggregate() [member function]
+    cls.add_method('NotifyNewAggregate', 
+                   'void', 
+                   [], 
+                   visibility='protected', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::GetIpForward() const [member function]
+    cls.add_method('GetIpForward', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): bool ns3::Ipv4L3Protocol::GetWeakEsModel() const [member function]
+    cls.add_method('GetWeakEsModel', 
+                   'bool', 
+                   [], 
+                   is_const=True, visibility='private', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetIpForward(bool forward) [member function]
+    cls.add_method('SetIpForward', 
+                   'void', 
+                   [param('bool', 'forward')], 
+                   visibility='private', is_virtual=True)
+    ## ipv4-l3-protocol.h (module 'internet'): void ns3::Ipv4L3Protocol::SetWeakEsModel(bool model) [member function]
+    cls.add_method('SetWeakEsModel', 
+                   'void', 
+                   [param('bool', 'model')], 
+                   visibility='private', is_virtual=True)
+    return
+
+def register_Ns3Ipv4L3Tracer_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): ns3::Ipv4L3Tracer::Ipv4L3Tracer(ns3::Ipv4L3Tracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4L3Tracer const &', 'arg0')])
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): ns3::Ipv4L3Tracer::Ipv4L3Tracer(ns3::Ptr<ns3::Node> node) [constructor]
+    cls.add_constructor([param('ns3::Ptr< ns3::Node >', 'node')])
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Drop(std::string context, ns3::Ipv4Header const & arg1, ns3::Ptr<const ns3::Packet> arg2, ns3::Ipv4L3Protocol::DropReason arg3, ns3::Ptr<ns3::Ipv4> arg4, uint32_t arg5) [member function]
+    cls.add_method('Drop', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ipv4Header const &', 'arg1'), param('ns3::Ptr< ns3::Packet const >', 'arg2'), param('ns3::Ipv4L3Protocol::DropReason', 'arg3'), param('ns3::Ptr< ns3::Ipv4 >', 'arg4'), param('uint32_t', 'arg5')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::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)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::PrintHeader(std::ostream & os) const [member function]
+    cls.add_method('PrintHeader', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Rx(std::string context, ns3::Ptr<const ns3::Packet> arg1, ns3::Ptr<ns3::Ipv4> arg2, uint32_t arg3) [member function]
+    cls.add_method('Rx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'arg1'), param('ns3::Ptr< ns3::Ipv4 >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-l3-tracer.h (module 'NDNabstraction'): void ns3::Ipv4L3Tracer::Tx(std::string context, ns3::Ptr<const ns3::Packet> arg1, ns3::Ptr<ns3::Ipv4> arg2, uint32_t arg3) [member function]
+    cls.add_method('Tx', 
+                   'void', 
+                   [param('std::string', 'context'), param('ns3::Ptr< ns3::Packet const >', 'arg1'), param('ns3::Ptr< ns3::Ipv4 >', 'arg2'), param('uint32_t', 'arg3')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
+def register_Ns3Ipv4L4Protocol_methods(root_module, cls):
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::Ipv4L4Protocol() [constructor]
+    cls.add_constructor([])
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::Ipv4L4Protocol(ns3::Ipv4L4Protocol const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4L4Protocol const &', 'arg0')])
+    ## ipv4-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::Ipv4L4Protocol::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)
+    ## ipv4-l4-protocol.h (module 'internet'): int ns3::Ipv4L4Protocol::GetProtocolNumber() const [member function]
+    cls.add_method('GetProtocolNumber', 
+                   'int', 
+                   [], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-l4-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv4L4Protocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-l4-protocol.h (module 'internet'): ns3::Ipv4L4Protocol::RxStatus ns3::Ipv4L4Protocol::Receive(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::Ipv4Interface> incomingInterface) [member function]
+    cls.add_method('Receive', 
+                   'ns3::Ipv4L4Protocol::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)
+    ## ipv4-l4-protocol.h (module 'internet'): void ns3::Ipv4L4Protocol::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)
+    ## ipv4-l4-protocol.h (module 'internet'): void ns3::Ipv4L4Protocol::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)
+    return
+
 def register_Ns3Ipv4MaskChecker_methods(root_module, cls):
     ## ipv4-address.h (module 'network'): ns3::Ipv4MaskChecker::Ipv4MaskChecker() [constructor]
     cls.add_constructor([])
@@ -4520,6 +5869,154 @@
                    [param('ns3::Ipv4Mask const &', 'value')])
     return
 
+def register_Ns3Ipv4MulticastRoute_methods(root_module, cls):
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::Ipv4MulticastRoute(ns3::Ipv4MulticastRoute const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4MulticastRoute const &', 'arg0')])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::Ipv4MulticastRoute() [constructor]
+    cls.add_constructor([])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetGroup() const [member function]
+    cls.add_method('GetGroup', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4MulticastRoute::GetOrigin() const [member function]
+    cls.add_method('GetOrigin', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): uint32_t ns3::Ipv4MulticastRoute::GetOutputTtl(uint32_t oif) [member function]
+    cls.add_method('GetOutputTtl', 
+                   'uint32_t', 
+                   [param('uint32_t', 'oif')], 
+                   deprecated=True)
+    ## ipv4-route.h (module 'internet'): std::map<unsigned int, unsigned int, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, unsigned int> > > ns3::Ipv4MulticastRoute::GetOutputTtlMap() const [member function]
+    cls.add_method('GetOutputTtlMap', 
+                   'std::map< unsigned int, unsigned int >', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): uint32_t ns3::Ipv4MulticastRoute::GetParent() const [member function]
+    cls.add_method('GetParent', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetGroup(ns3::Ipv4Address const group) [member function]
+    cls.add_method('SetGroup', 
+                   'void', 
+                   [param('ns3::Ipv4Address const', 'group')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetOrigin(ns3::Ipv4Address const origin) [member function]
+    cls.add_method('SetOrigin', 
+                   'void', 
+                   [param('ns3::Ipv4Address const', 'origin')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetOutputTtl(uint32_t oif, uint32_t ttl) [member function]
+    cls.add_method('SetOutputTtl', 
+                   'void', 
+                   [param('uint32_t', 'oif'), param('uint32_t', 'ttl')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4MulticastRoute::SetParent(uint32_t iif) [member function]
+    cls.add_method('SetParent', 
+                   'void', 
+                   [param('uint32_t', 'iif')])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::MAX_INTERFACES [variable]
+    cls.add_static_attribute('MAX_INTERFACES', 'uint32_t const', is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4MulticastRoute::MAX_TTL [variable]
+    cls.add_static_attribute('MAX_TTL', 'uint32_t const', is_const=True)
+    return
+
+def register_Ns3Ipv4Route_methods(root_module, cls):
+    cls.add_output_stream_operator()
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Route::Ipv4Route(ns3::Ipv4Route const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4Route const &', 'arg0')])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Route::Ipv4Route() [constructor]
+    cls.add_constructor([])
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Route::GetDestination() const [member function]
+    cls.add_method('GetDestination', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Route::GetGateway() const [member function]
+    cls.add_method('GetGateway', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ptr<ns3::NetDevice> ns3::Ipv4Route::GetOutputDevice() const [member function]
+    cls.add_method('GetOutputDevice', 
+                   'ns3::Ptr< ns3::NetDevice >', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): ns3::Ipv4Address ns3::Ipv4Route::GetSource() const [member function]
+    cls.add_method('GetSource', 
+                   'ns3::Ipv4Address', 
+                   [], 
+                   is_const=True)
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetDestination(ns3::Ipv4Address dest) [member function]
+    cls.add_method('SetDestination', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'dest')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetGateway(ns3::Ipv4Address gw) [member function]
+    cls.add_method('SetGateway', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'gw')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetOutputDevice(ns3::Ptr<ns3::NetDevice> outputDevice) [member function]
+    cls.add_method('SetOutputDevice', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::NetDevice >', 'outputDevice')])
+    ## ipv4-route.h (module 'internet'): void ns3::Ipv4Route::SetSource(ns3::Ipv4Address src) [member function]
+    cls.add_method('SetSource', 
+                   'void', 
+                   [param('ns3::Ipv4Address', 'src')])
+    return
+
+def register_Ns3Ipv4RoutingProtocol_methods(root_module, cls):
+    ## ipv4-routing-protocol.h (module 'internet'): ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol() [constructor]
+    cls.add_constructor([])
+    ## ipv4-routing-protocol.h (module 'internet'): ns3::Ipv4RoutingProtocol::Ipv4RoutingProtocol(ns3::Ipv4RoutingProtocol const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::Ipv4RoutingProtocol const &', 'arg0')])
+    ## ipv4-routing-protocol.h (module 'internet'): static ns3::TypeId ns3::Ipv4RoutingProtocol::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyAddAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('NotifyAddAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyInterfaceDown(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceDown', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyInterfaceUp(uint32_t interface) [member function]
+    cls.add_method('NotifyInterfaceUp', 
+                   'void', 
+                   [param('uint32_t', 'interface')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::NotifyRemoveAddress(uint32_t interface, ns3::Ipv4InterfaceAddress address) [member function]
+    cls.add_method('NotifyRemoveAddress', 
+                   'void', 
+                   [param('uint32_t', 'interface'), param('ns3::Ipv4InterfaceAddress', 'address')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::PrintRoutingTable(ns3::Ptr<ns3::OutputStreamWrapper> stream) const [member function]
+    cls.add_method('PrintRoutingTable', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::OutputStreamWrapper >', 'stream')], 
+                   is_pure_virtual=True, is_const=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): bool ns3::Ipv4RoutingProtocol::RouteInput(ns3::Ptr<const ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<const ns3::NetDevice> idev, ns3::Callback<void,ns3::Ptr<ns3::Ipv4Route>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> ucb, ns3::Callback<void,ns3::Ptr<ns3::Ipv4MulticastRoute>,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty,ns3::empty> mcb, ns3::Callback<void,ns3::Ptr<const ns3::Packet>,const ns3::Ipv4Header&,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::Ipv4Header&,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::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice const >', 'idev'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4Route >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ucb'), param('ns3::Callback< void, ns3::Ptr< ns3::Ipv4MulticastRoute >, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header const &, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'mcb'), param('ns3::Callback< void, ns3::Ptr< ns3::Packet const >, ns3::Ipv4Header 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::Ipv4Header const &, ns3::Socket::SocketErrno, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty, ns3::empty >', 'ecb')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): ns3::Ptr<ns3::Ipv4Route> ns3::Ipv4RoutingProtocol::RouteOutput(ns3::Ptr<ns3::Packet> p, ns3::Ipv4Header const & header, ns3::Ptr<ns3::NetDevice> oif, ns3::Socket::SocketErrno & sockerr) [member function]
+    cls.add_method('RouteOutput', 
+                   'ns3::Ptr< ns3::Ipv4Route >', 
+                   [param('ns3::Ptr< ns3::Packet >', 'p'), param('ns3::Ipv4Header const &', 'header'), param('ns3::Ptr< ns3::NetDevice >', 'oif'), param('ns3::Socket::SocketErrno &', 'sockerr')], 
+                   is_pure_virtual=True, is_virtual=True)
+    ## ipv4-routing-protocol.h (module 'internet'): void ns3::Ipv4RoutingProtocol::SetIpv4(ns3::Ptr<ns3::Ipv4> ipv4) [member function]
+    cls.add_method('SetIpv4', 
+                   'void', 
+                   [param('ns3::Ptr< ns3::Ipv4 >', 'ipv4')], 
+                   is_pure_virtual=True, is_virtual=True)
+    return
+
 def register_Ns3Ipv6AddressChecker_methods(root_module, cls):
     ## ipv6-address.h (module 'network'): ns3::Ipv6AddressChecker::Ipv6AddressChecker() [constructor]
     cls.add_constructor([])
@@ -4955,6 +6452,19 @@
                    [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]
@@ -4980,11 +6490,10 @@
     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]
+    ## packet.h (module 'network'): void ns3::Packet::AddPacketTag(ns3::Ptr<const ns3::Tag> tag) [member function]
     cls.add_method('AddPacketTag', 
                    'void', 
-                   [param('ns3::Tag const &', 'tag')], 
-                   is_const=True)
+                   [param('ns3::Ptr< ns3::Tag const >', 'tag')])
     ## packet.h (module 'network'): void ns3::Packet::AddPaddingAtEnd(uint32_t size) [member function]
     cls.add_method('AddPaddingAtEnd', 
                    'void', 
@@ -5043,11 +6552,6 @@
                    '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', 
@@ -5073,10 +6577,10 @@
                    'uint32_t', 
                    [param('ns3::Header &', 'header')], 
                    is_const=True)
-    ## packet.h (module 'network'): bool ns3::Packet::PeekPacketTag(ns3::Tag & tag) const [member function]
+    ## packet.h (module 'network'): ns3::Ptr<const ns3::Tag> ns3::Packet::PeekPacketTag(ns3::TypeId tagType) const [member function]
     cls.add_method('PeekPacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')], 
+                   'ns3::Ptr< ns3::Tag const >', 
+                   [param('ns3::TypeId', 'tagType')], 
                    is_const=True)
     ## packet.h (module 'network'): uint32_t ns3::Packet::PeekTrailer(ns3::Trailer & trailer) [member function]
     cls.add_method('PeekTrailer', 
@@ -5117,10 +6621,10 @@
     cls.add_method('RemoveHeader', 
                    'uint32_t', 
                    [param('ns3::Header &', 'header')])
-    ## packet.h (module 'network'): bool ns3::Packet::RemovePacketTag(ns3::Tag & tag) [member function]
+    ## packet.h (module 'network'): ns3::Ptr<const ns3::Tag> ns3::Packet::RemovePacketTag(ns3::TypeId tagType) [member function]
     cls.add_method('RemovePacketTag', 
-                   'bool', 
-                   [param('ns3::Tag &', 'tag')])
+                   'ns3::Ptr< ns3::Tag const >', 
+                   [param('ns3::TypeId', 'tagType')])
     ## packet.h (module 'network'): uint32_t ns3::Packet::RemoveTrailer(ns3::Trailer & trailer) [member function]
     cls.add_method('RemoveTrailer', 
                    'uint32_t', 
@@ -5192,11 +6696,148 @@
     cls.add_method('Commit', 
                    'void', 
                    [])
-    ## rocketfuel-weights-reader.h (module 'NDNabstraction'): void ns3::RocketfuelWeightsReader::SavePositions(std::string const & file) const [member function]
-    cls.add_method('SavePositions', 
+    return
+
+def register_Ns3SocketAddressTag_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::SocketAddressTag::SocketAddressTag(ns3::SocketAddressTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SocketAddressTag const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::SocketAddressTag::SocketAddressTag() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
                    'void', 
-                   [param('std::string const &', 'file')], 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): ns3::Address ns3::SocketAddressTag::GetAddress() const [member function]
+    cls.add_method('GetAddress', 
+                   'ns3::Address', 
+                   [], 
                    is_const=True)
+    ## socket.h (module 'network'): ns3::TypeId ns3::SocketAddressTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::SocketAddressTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): static ns3::TypeId ns3::SocketAddressTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketAddressTag::SetAddress(ns3::Address addr) [member function]
+    cls.add_method('SetAddress', 
+                   'void', 
+                   [param('ns3::Address', 'addr')])
+    return
+
+def register_Ns3SocketIpTtlTag_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag(ns3::SocketIpTtlTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SocketIpTtlTag const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::SocketIpTtlTag::SocketIpTtlTag() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): ns3::TypeId ns3::SocketIpTtlTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::SocketIpTtlTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint8_t ns3::SocketIpTtlTag::GetTtl() const [member function]
+    cls.add_method('GetTtl', 
+                   'uint8_t', 
+                   [], 
+                   is_const=True)
+    ## socket.h (module 'network'): static ns3::TypeId ns3::SocketIpTtlTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketIpTtlTag::SetTtl(uint8_t ttl) [member function]
+    cls.add_method('SetTtl', 
+                   'void', 
+                   [param('uint8_t', 'ttl')])
+    return
+
+def register_Ns3SocketSetDontFragmentTag_methods(root_module, cls):
+    ## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag(ns3::SocketSetDontFragmentTag const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::SocketSetDontFragmentTag const &', 'arg0')])
+    ## socket.h (module 'network'): ns3::SocketSetDontFragmentTag::SocketSetDontFragmentTag() [constructor]
+    cls.add_constructor([])
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Deserialize(ns3::TagBuffer i) [member function]
+    cls.add_method('Deserialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Disable() [member function]
+    cls.add_method('Disable', 
+                   'void', 
+                   [])
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Enable() [member function]
+    cls.add_method('Enable', 
+                   'void', 
+                   [])
+    ## socket.h (module 'network'): ns3::TypeId ns3::SocketSetDontFragmentTag::GetInstanceTypeId() const [member function]
+    cls.add_method('GetInstanceTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): uint32_t ns3::SocketSetDontFragmentTag::GetSerializedSize() const [member function]
+    cls.add_method('GetSerializedSize', 
+                   'uint32_t', 
+                   [], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): static ns3::TypeId ns3::SocketSetDontFragmentTag::GetTypeId() [member function]
+    cls.add_method('GetTypeId', 
+                   'ns3::TypeId', 
+                   [], 
+                   is_static=True)
+    ## socket.h (module 'network'): bool ns3::SocketSetDontFragmentTag::IsEnabled() const [member function]
+    cls.add_method('IsEnabled', 
+                   'bool', 
+                   [], 
+                   is_const=True)
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Print(std::ostream & os) const [member function]
+    cls.add_method('Print', 
+                   'void', 
+                   [param('std::ostream &', 'os')], 
+                   is_const=True, is_virtual=True)
+    ## socket.h (module 'network'): void ns3::SocketSetDontFragmentTag::Serialize(ns3::TagBuffer i) const [member function]
+    cls.add_method('Serialize', 
+                   'void', 
+                   [param('ns3::TagBuffer', 'i')], 
+                   is_const=True, is_virtual=True)
     return
 
 def register_Ns3SpringMobilityModel_methods(root_module, cls):
@@ -5235,6 +6876,17 @@
                    visibility='private', is_virtual=True)
     return
 
+def register_Ns3TcpCongestionWindowTracer_methods(root_module, cls):
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::TcpCongestionWindowTracer::TcpCongestionWindowTracer(ns3::TcpCongestionWindowTracer const & arg0) [copy constructor]
+    cls.add_constructor([param('ns3::TcpCongestionWindowTracer const &', 'arg0')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): ns3::TcpCongestionWindowTracer::TcpCongestionWindowTracer(std::ostream & os, ns3::Ptr<ns3::Node> node, std::string const & appId="*") [constructor]
+    cls.add_constructor([param('std::ostream &', 'os'), param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'appId', default_value='"*"')])
+    ## ccnx-consumer-window-tracer.h (module 'NDNabstraction'): void ns3::TcpCongestionWindowTracer::Connect() [member function]
+    cls.add_method('Connect', 
+                   'void', 
+                   [])
+    return
+
 def register_Ns3TimeChecker_methods(root_module, cls):
     ## nstime.h (module 'core'): ns3::TimeChecker::TimeChecker() [constructor]
     cls.add_constructor([])
@@ -5437,6 +7089,10 @@
 
 def register_functions(root_module):
     module = root_module
+    ## batches.h (module 'NDNabstraction'): extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeBatchesChecker() [free function]
+    module.add_function('MakeBatchesChecker', 
+                        'ns3::Ptr< ns3::AttributeChecker const >', 
+                        [])
     ## ccnx-name-components.h (module 'NDNabstraction'): extern ns3::Ptr<ns3::AttributeChecker const> ns3::MakeCcnxNameComponentsChecker() [free function]
     module.add_function('MakeCcnxNameComponentsChecker', 
                         'ns3::Ptr< ns3::AttributeChecker const >', 
diff --git a/examples/abilene-topology-backup.txt b/examples/abilene-topology-backup.txt
deleted file mode 100644
index f4f1d43..0000000
--- a/examples/abilene-topology-backup.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-12  30
-1   2   9920000 1   1   100 100
-2   1   9920000 1   1   100 100
-2   5   9920000 1176    1   100 100
-2   6   2480000 587 1   100 100
-2   12  9920000 846 1   100 100
-3   6   9920000 260 1   100 100
-3   9   9920000 700 1   100 100
-4   7   9920000 639 1   100 100
-4   10  9920000 1295 1   100 100
-4   11  9920000 2095    1   100 100
-5   2   9920000 1176    1   100 100
-5   7   9920000 902 1   100 100
-5   8   9920000 1893 1   100 100
-6   2   9920000 587 1   100 100
-6   3   2480000 260 1   100 100
-6   7   9920000 548 1   100 100
-7   4   9920000 639 1   100 100
-7   5   9920000 902 1   100 100
-7   6   9920000 548 1   100 100
-8   5   9920000 1893 1   100 100
-8   10  9920000 366 1   100 100
-9   3   9920000 700 1   100 100
-9   12  9920000 233 1   100 100
-10  4   9920000 1295 1   100 100
-10  8   9920000 366 1   100 100
-10  11  9920000 861 1   100 100
-11  4   9920000 2095 1   100 100
-11  10  9920000 861 1   100 100
-12  2   9920000 846 1   100 100
-12  9   9920000 233 1   100 100
diff --git a/examples/abilene-topology.cc b/examples/abilene-topology.cc
index 48ad6db..ff7f52d 100644
--- a/examples/abilene-topology.cc
+++ b/examples/abilene-topology.cc
@@ -117,7 +117,7 @@
   ccnxHelper.InstallAll ();
     
   NS_LOG_INFO ("Installing Applications");
-  CcnxAppHelper consumerHelper ("ns3::CcnxConsumer");
+  CcnxAppHelper consumerHelper ("ns3::CcnxConsumerCbr");
   consumerHelper.SetPrefix ("/Data");
   consumerHelper.SetAttribute ("MeanRate", StringValue ("1Mbps"));
   ApplicationContainer consumers = consumerHelper.Install (Names::Find<Node> ("/abilene", "SNVAng"));
@@ -146,7 +146,7 @@
     }
 
   CcnxTraceHelper traceHelper;
-  traceHelper.EnableAggregateAppAll ("ns3::CcnxConsumer");
+  traceHelper.EnableAggregateAppAll ("ns3::CcnxConsumerCbr");
   traceHelper.EnableAggregateAppAll ("ns3::CcnxProducer");
   traceHelper.EnableAggregateL3All ();
   traceHelper.SetL3TraceFile ("trace-l3.log");
diff --git a/examples/annotated-topology-read-example.cc b/examples/annotated-topology-read-example.cc
index 450d8d1..d000d57 100644
--- a/examples/annotated-topology-read-example.cc
+++ b/examples/annotated-topology-read-example.cc
@@ -93,7 +93,7 @@
   Ptr<CcnxFaceContainer> cf = ccnx.Install (nodes);
      
   NS_LOG_INFO ("Installing Applications");
-  CcnxAppHelper helper ("ns3::CcnxConsumer");
+  CcnxAppHelper helper ("ns3::CcnxConsumerCbr");
   helper.SetPrefix ("/3");
   ApplicationContainer app = helper.Install ("1");
   app.Start (Seconds (1.0));
diff --git a/examples/base-experiment.h b/examples/base-experiment.h
new file mode 100644
index 0000000..4b3c052
--- /dev/null
+++ b/examples/base-experiment.h
@@ -0,0 +1,192 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011,2012 University of California, Los Angeles
+ *
+ * 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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef BASE_EXPERIMENT_H
+#define BASE_EXPERIMENT_H
+
+#include "ns3/rocketfuel-topology-reader.h"
+
+void PrintTime ()
+{
+  cout << "Progress: " << Simulator::Now ().ToDouble (Time::S) << "s" << endl;
+
+  Simulator::Schedule (Seconds (5.0), PrintTime);
+}
+
+class BaseExperiment
+{
+public:
+  BaseExperiment ()
+    : m_rand (0,52)
+    , reader (0)
+    , m_numNodes (52)
+  { }
+
+  ~BaseExperiment ()
+  {
+    if (reader != 0) delete reader;
+  }
+    
+  void
+  ConfigureTopology ()
+  {
+    Names::Clear ();
+    cout << "Configure Topology\n";
+    if (reader != 0) delete reader;
+    reader = new RocketfuelWeightsReader ("/sprint");
+    
+    string weights   ("./src/NDNabstraction/examples/sprint-pops.weights");
+    string latencies ("./src/NDNabstraction/examples/sprint-pops.latencies");
+    string positions ("./src/NDNabstraction/examples/sprint-pops.positions");
+  
+    reader->SetFileName (positions);
+    reader->SetFileType (RocketfuelWeightsReader::POSITIONS);
+    reader->Read ();
+  
+    reader->SetFileName (weights);
+    reader->SetFileType (RocketfuelWeightsReader::WEIGHTS);    
+    reader->Read ();
+
+    reader->SetFileName (latencies);
+    reader->SetFileType (RocketfuelWeightsReader::LATENCIES);    
+    reader->Read ();
+    
+    reader->Commit ();
+  }
+
+  void InstallCcnxStackImpl ()
+  {
+    InternetStackHelper stack;
+    Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
+    stack.SetRoutingHelper (ipv4RoutingHelper);
+    stack.Install (reader->GetNodes ());
+
+    reader->AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+    
+    // Install CCNx stack
+    cout << "Installing CCNx stack\n";
+    CcnxStackHelper ccnxHelper;
+    ccnxHelper.SetForwardingStrategy ("ns3::CcnxBestRouteStrategy");
+    ccnxHelper.EnableLimits (true, Seconds(0.1));
+    ccnxHelper.SetDefaultRoutes (false);
+    ccnxHelper.InstallAll ();
+
+    reader->ApplyOspfMetric ();
+  }
+  
+  void InstallCcnxStack (bool installFIBs = true)
+  {
+    InstallCcnxStackImpl ();
+
+    CcnxStackHelper ccnxHelper;
+    ccnxHelper.InstallFakeGlobalRoutes ();
+    if (installFIBs)
+      {
+        // // Populate FIB based on IPv4 global routing controller
+        ccnxHelper.InstallRoutesToAll ();
+      }
+  }
+  
+  void InstallIpStack ()
+  {
+    InternetStackHelper stack;
+    stack.Install (reader->GetNodes ());
+    reader->AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+    reader->ApplyOspfMetric ();
+
+    Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+  }
+
+  void
+  GenerateRandomPairs (uint16_t numStreams)
+  {
+    m_pairs.clear ();
+    // map<uint32_t, set<uint32_t> > streams;
+    m_usedNodes.clear ();
+    
+    uint16_t createdStreams = 0;
+    uint16_t guard = 0;
+    while (createdStreams < numStreams && guard < (numeric_limits<uint16_t>::max ()-1))
+      {
+        guard ++;
+
+        uint32_t node1_num = m_rand.GetValue (); //43;//
+        uint32_t node2_num = m_rand.GetValue (); //38;//
+
+        if (node1_num == node2_num)
+          continue;
+
+        if (m_usedNodes.count (node1_num) > 0 ||
+            m_usedNodes.count (node2_num) > 0 )
+          {
+            continue; // don't reuse nodes
+          }
+
+        m_usedNodes.insert (node1_num);
+        m_usedNodes.insert (node2_num);
+
+        m_pairs.push_back (make_tuple (node1_num, node2_num));
+        createdStreams ++;
+      }
+  }
+
+  void
+  SetPair (uint32_t pairId)
+  {
+    m_pairs.clear ();
+    m_usedNodes.clear ();
+
+    uint32_t i = 0;
+    for (uint32_t node1_num = 0; node1_num < 52; node1_num++)
+      for (uint32_t node2_num = 0; node2_num < 52; node2_num++)
+        {
+          if (node1_num == node2_num) continue;
+
+          // std::cout << "i = " << i << ", pairId = " << pairId << "\n";
+          if (i++ != pairId) continue;
+          
+          m_usedNodes.insert (node1_num);
+          m_usedNodes.insert (node2_num);
+
+          m_pairs.push_back (make_tuple (node1_num, node2_num));
+          return;
+        }
+  }
+
+  void
+  Run (const Time &finishTime)
+  {
+    cout << "Run Simulation.\n";
+    Simulator::Stop (finishTime);
+    Simulator::Schedule (Seconds (5.0), PrintTime);
+    Simulator::Run ();
+    Simulator::Destroy ();
+    cout << "Done.\n";
+  }
+
+  UniformVariable m_rand;
+  RocketfuelWeightsReader *reader;
+
+  list<tuple<uint32_t,uint32_t> > m_pairs;
+  set<uint32_t> m_usedNodes;
+  const int m_numNodes;
+};
+
+#endif
diff --git a/examples/blackhole-sprint.cc b/examples/blackhole-sprint.cc
new file mode 100644
index 0000000..c912ecb
--- /dev/null
+++ b/examples/blackhole-sprint.cc
@@ -0,0 +1,188 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+ 
+ 
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/random-variable.h"
+
+#include <sstream>
+#include <map>
+#include <list>
+#include <set>
+#include "ns3/rocketfuel-topology-reader.h"
+
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
+
+#include <boost/config.hpp>
+#include <iostream>
+#include <fstream>
+
+#include <boost/graph/graph_traits.hpp>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/dijkstra_shortest_paths.hpp>
+
+using namespace ns3;
+using namespace std;
+using namespace boost;
+
+NS_LOG_COMPONENT_DEFINE ("BlackholeSprint");
+
+#include "base-experiment.h"
+
+class Experiment : public BaseExperiment
+{
+public:
+  // hijacker is more than an application. just disable all faces
+  static void
+  InstallHijacker (std::string prefix, Ptr<Node> node)
+  {
+    Ptr<Ccnx> ccnx = node->GetObject<Ccnx> ();
+    for (uint32_t i = 0; i < ccnx->GetNFaces (); i++)
+      {
+        Ptr<CcnxFace> face = ccnx->GetFace (i);
+        face->SetUp (false);
+      }
+    CcnxStackHelper::InstallRouteTo (prefix, node);
+  }
+
+  //We are creating 10 pairs of producer-hijacker and everybody else is a consumer
+  ApplicationContainer
+  AddApplications ()
+  {
+    ApplicationContainer apps;
+
+    list<string> prefixes;
+
+    // Create Producers/Hijackers
+    uint32_t pair = 0;
+    for (list<tuple<uint32_t,uint32_t> >::iterator i = m_pairs.begin (); i != m_pairs.end (); i++)
+      {
+        uint32_t node1_num = i->get<0> ();
+        uint32_t node2_num = i->get<1> ();
+
+        cout << "Good: " << node1_num << ", bad: " << node2_num << "\n";
+        
+        Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (node1_num));
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (node2_num));
+
+        // node1 legitimate producer
+        // node2 "fake" producer
+
+        string prefix = "/bh/" + lexical_cast<string> (pair);
+        pair ++;
+
+        CcnxAppHelper legitimateProducerHelper ("ns3::CcnxProducer");
+        legitimateProducerHelper.SetPrefix (prefix);
+        apps.Add
+          (legitimateProducerHelper.Install (node1));
+        
+        // one more trick. Need to install route to hijacker (aka "hijacker announces itself as a legitimate producer")
+        CcnxStackHelper::InstallRouteTo (prefix, node1);
+        Simulator::Schedule (Seconds(10.0), Experiment::InstallHijacker, prefix, node2);
+
+        prefixes.push_back (prefix); // remember prefixes that consumers will be requesting
+      }
+    
+    // Create Consumers
+    NodeContainer nodes = reader->GetNodes ();
+    for (NodeContainer::Iterator node = nodes.Begin (); node != nodes.End (); node++)
+      {
+        uint32_t namedId = lexical_cast<uint32_t> (Names::FindName (*node));
+        if (m_usedNodes.count (namedId) > 0)
+          continue;
+
+        CcnxAppHelper consumerHelper ("ns3::CcnxConsumerBatches");
+        consumerHelper.SetAttribute ("LifeTime", StringValue("100s"));
+        consumerHelper.SetAttribute ("Batches", StringValue("0s 10 6s 1 20s 1"));
+        BOOST_FOREACH (const string &prefix, prefixes)
+          {
+            consumerHelper.SetPrefix (prefix + "/" + lexical_cast<string> (namedId)); // make sure we're requesting unique prefixes... this was a huge bug before                 
+
+            ApplicationContainer consumer = consumerHelper.Install (*node);
+            apps.Add (consumer);
+          }
+
+        // break;
+      }
+    return apps;
+  }
+};
+
+int 
+main (int argc, char *argv[])
+{
+  cout << "Begin blackhole scenario\n";
+  
+  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("100Mbps"));
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("2000"));
+  Config::SetDefault ("ns3::RttEstimator::InitialEstimation", StringValue ("0.5s"));
+
+  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
+  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
+  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+
+  uint32_t maxRuns = 1;
+  uint32_t startRun = 0;
+  CommandLine cmd;
+  cmd.AddValue ("start", "Initial run number", startRun);
+  cmd.AddValue ("runs", "Number of runs", maxRuns);
+  cmd.Parse (argc, argv);
+
+  // ConfigStore config;
+  // config.ConfigureDefaults ();
+
+  Experiment experiment;
+  for (uint32_t run = startRun; run < startRun + maxRuns; run++)
+    {
+      Config::SetGlobal ("RngRun", IntegerValue (run));
+      cout << "seed = " << SeedManager::GetSeed () << ", run = " << SeedManager::GetRun () << endl;
+
+      Experiment experiment;
+      // experiment.GenerateRandomPairs (1);
+      experiment.SetPair (run);
+      cout << "Run " << run << endl;
+      
+      string prefix = "blackhole-" + lexical_cast<string> (run) + "-";
+  
+      experiment.ConfigureTopology ();
+      experiment.InstallCcnxStack (false);
+      ApplicationContainer apps = experiment.AddApplications ();
+            
+      //tracing
+      CcnxTraceHelper traceHelper;
+      // traceHelper.EnableRateL3All (prefix + "rate-trace.log");
+      traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerBatches", prefix + "consumers-seqs.log");
+
+      // enable path weights some time from now (ensure that all faces are created)
+      Simulator::Schedule (Seconds (4.5), &CcnxTraceHelper::EnablePathWeights, &traceHelper, prefix + "weights.log");
+      std::cout << "Total " << apps.GetN () << " applications\n";
+
+      experiment.Run (Seconds(40.0));
+    }
+
+  cout << "Finish blackhole scenario\n";
+  return 0;
+}
diff --git a/examples/ccnx-grid.cc b/examples/ccnx-grid.cc
index a4255be..15898aa 100644
--- a/examples/ccnx-grid.cc
+++ b/examples/ccnx-grid.cc
@@ -115,7 +115,7 @@
   std::ostringstream prefix;
   prefix << "/" << producer->GetId ();
   
-  CcnxAppHelper consumerHelper ("ns3::CcnxConsumer");
+  CcnxAppHelper consumerHelper ("ns3::CcnxConsumerCbr");
   consumerHelper.SetPrefix (prefix.str ());
   consumerHelper.SetAttribute ("MeanRate", StringValue ("1Mbps"));
   ApplicationContainer consumers = consumerHelper.Install (consumerNodes);
diff --git a/examples/ccnx-test.cc b/examples/ccnx-test.cc
deleted file mode 100644
index cae2815..0000000
--- a/examples/ccnx-test.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-
-#include "ns3/core-module.h"
-#include "ns3/network-module.h"
-#include "ns3/point-to-point-module.h"
-#include "ns3/NDNabstraction-module.h"
-
-using namespace ns3;
-
-NS_LOG_COMPONENT_DEFINE ("CcnxTest");
-
-int 
-main (int argc, char *argv[])
-{
-  // LogComponentEnable ("CcnxTest", LOG_ALL);
-  // LogComponentEnable ("CcnxStackHelper", LOG_ALL);
-  // LogComponentEnable ("CcnxRit", LOG_ALL);
-  
-  // Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
-  // Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448kb/s"));
-
-  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("10Mbps"));
-  Config::SetDefault ("ns3::PointToPointChannel::Delay", StringValue ("1ms"));
-
-  Packet::EnableChecking();
-  Packet::EnablePrinting();
-  CommandLine cmd;
-  cmd.Parse (argc, argv);
-  
-  // Here, we will explicitly create seven nodes. 
-  NodeContainer c;
-  c.Create (3);
-  Names::Add ("1", c.Get (0));
-  Names::Add ("2", c.Get (1));
-  Names::Add ("3", c.Get (2));
-  
-  // NodeContainer n1 = NodeContainer ("1") ("2");
-  // NodeContainer n2 = NodeContainer ("2") ("3");
-  
-  NS_LOG_INFO ("Create channels.");
-  PointToPointHelper p2p;
-  p2p.Install ("1", "2");
-  p2p.Install ("2", "3");
-
-  NS_LOG_INFO ("Installing NDN stack");
-  CcnxStackHelper ccnx;
-  Ptr<CcnxFaceContainer> cf = ccnx.Install (c);
-
-  CcnxAppHelper helper ("ns3::CcnxConsumer");
-  helper.SetPrefix ("/3");
-  ApplicationContainer app = helper.Install ("1");
-  app.Start (Seconds (1.0));
-  app.Stop (Seconds (10.05));
-
-  CcnxAppHelper helper2 ("ns3::CcnxProducer");
-  helper2.SetPrefix ("/3");
-  helper2.SetAttribute ("PayloadSize", StringValue("1024"));
-  ApplicationContainer app2 = helper2.Install("3");
-  
-  app2.Start(Seconds(0.0));
-  app2.Stop(Seconds(15.0));
-  
-  /**
-   * \brief Add forwarding entry in FIB
-   *
-   * \param node Node
-   * \param prefix Routing prefix
-   * \param face Face index
-   * \param metric Routing metric
-   */
-  ccnx.AddRoute ("1", "/3", 0, 1);
-  ccnx.AddRoute ("2", "/3", 1, 1);
-  ccnx.AddRoute ("2", "/3", 0, 10000);
-  NS_LOG_INFO ("FIB dump:\n" << *c.Get(0)->GetObject<CcnxFib> ());
-  NS_LOG_INFO ("FIB dump:\n" << *c.Get(1)->GetObject<CcnxFib> ());
-
-  // Create the OnOff application to send UDP datagrams of size
-  // 210 bytes at a rate of 448 Kb/s from n0 to n4
-  // NS_LOG_INFO ("Create Applications.");
-  
-  // std::string sendsizeattr = "SendSize";
-  // //flow2 7-->2
-  // BulkSendHelper bulksend0 ("ns3::CcnxLocalFaceFactory", InetSocketAddress (i23.GetAddress (0), port));
-  // //bulksend0.SetAttribute(sendsizeattr, AttributeValue(ConstantVariable(2560)));
-  // bulksend0.SetAttribute("MaxBytes", UintegerValue(2560));
-  // ApplicationContainer apps = bulksend0.Install(c.Get(6));
-  // apps.Start(Seconds (1.0));
-  // apps.Stop(Seconds (10.0));
-
-  // AsciiTraceHelper ascii;
-  // p2p.EnableAsciiAll (ascii.CreateFileStream ("ccnx-test.tr"));
-  // p2p.EnablePcapAll ("ccnx-test");
-  
-  Simulator::Stop (Seconds (20));
-  
-  NS_LOG_INFO ("Run Simulation.");
-  Simulator::Run ();
-  Simulator::Destroy ();
-  NS_LOG_INFO ("Done.");
-  
-  return 0;
-}
diff --git a/examples/congestion-pop.cc b/examples/congestion-pop.cc
index 51a5fa0..ae28ad8 100644
--- a/examples/congestion-pop.cc
+++ b/examples/congestion-pop.cc
@@ -28,13 +28,7 @@
 #include "ns3/random-variable.h"
 #include "ns3/internet-module.h"
 #include "ns3/applications-module.h"
-
-#include <iostream>
-#include <sstream>
-#include <map>
-#include <list>
-#include <set>
-#include "ns3/rocketfuel-topology-reader.h"
+#include "ns3/config-store.h"
 
 #include <boost/lexical_cast.hpp>
 #include <boost/foreach.hpp>
@@ -45,108 +39,34 @@
 
 NS_LOG_COMPONENT_DEFINE ("Scenario");
 
-void PrintTime ()
-{
-  cout << "Progress: " << Simulator::Now ().ToDouble (Time::S) << "s" << endl;
+// void PrintTime ()
+// {
+//   cout << "Progress: " << Simulator::Now ().ToDouble (Time::S) << "s" << endl;
 
-  Simulator::Schedule (Seconds (1.0), PrintTime);
-}
+//   Simulator::Schedule (Seconds (1.0), PrintTime);
+// }
 
-class Experiment
+#include "base-experiment.h"
+
+class Experiment : public BaseExperiment
 {
 public:
-  Experiment ()
-    : m_rand (0,52)
-    , reader ("/sprint")
-  { }
-  
-  void
-  ConfigureCcnxTopology ()
-  {
-    Names::Clear ();
-    
-    string weights   ("./src/NDNabstraction/examples/sprint-pops.weights");
-    string latencies ("./src/NDNabstraction/examples/sprint-pops.latencies");
-    string positions ("./src/NDNabstraction/examples/sprint-pops.positions");
-  
-    RocketfuelWeightsReader reader ("/sprint");
-
-    reader.SetFileName (positions);
-    reader.SetFileType (RocketfuelWeightsReader::POSITIONS);
-    reader.Read ();
-  
-    reader.SetFileName (weights);
-    reader.SetFileType (RocketfuelWeightsReader::WEIGHTS);    
-    reader.Read ();
-
-    reader.SetFileName (latencies);
-    reader.SetFileType (RocketfuelWeightsReader::LATENCIES);    
-    reader.Read ();
-    
-    reader.Commit ();
-    NS_ASSERT_MSG (reader.LinksSize () != 0, "Problems reading the topology file. Failing.");
-    
-    NS_LOG_INFO("Nodes = " << reader.GetNodes ().GetN());
-    NS_LOG_INFO("Links = " << reader.LinksSize ());
-  
-    // ------------------------------------------------------------
-    // -- Read topology data.
-    // --------------------------------------------
-        
-    InternetStackHelper stack;
-    Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
-    stack.SetRoutingHelper (ipv4RoutingHelper);
-    stack.Install (reader.GetNodes ());
-
-    reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
-    
-    // Install CCNx stack
-    NS_LOG_INFO ("Installing CCNx stack");
-    CcnxStackHelper ccnxHelper;
-    ccnxHelper.SetForwardingStrategy ("ns3::CcnxBestRouteStrategy");
-    ccnxHelper.EnableLimits (true, Seconds(0.1));
-    ccnxHelper.SetDefaultRoutes (false);
-    ccnxHelper.InstallAll ();
-  }
-
-  void
-  ConfigureRouting ()
-  {
-    CcnxStackHelper ccnxHelper;
-    // // Populate FIB based on IPv4 global routing controller
-    ccnxHelper.InstallFakeGlobalRoutes ();
-    ccnxHelper.InstallRoutesToAll ();
-  }
-  
   ApplicationContainer
-  AddCcnxRandomApplications (uint16_t numStreams)
+  AddCcnxApplications ()
   {
-    map<uint32_t, set<uint32_t> > streams;
     ApplicationContainer apps;
-    
-    uint16_t createdStreams = 0;
-    uint16_t guard = 0;
-    while (createdStreams < numStreams && guard < (numeric_limits<uint16_t>::max ()-1))
+
+    for (list<tuple<uint32_t,uint32_t> >::iterator i = m_pairs.begin (); i != m_pairs.end (); i++)
       {
-        guard ++;
-        
-        uint32_t node1_num = m_rand.GetValue ();
-        uint32_t node2_num = m_rand.GetValue ();
-
-        if (node1_num == node2_num)
-          continue;
-
-        if (streams[node1_num].count (node2_num) > 0) // don't create duplicate streams
-          continue;
-        
-        streams[node1_num].insert (node2_num);
+        uint32_t node1_num = i->get<0> ();
+        uint32_t node2_num = i->get<1> ();
 
         Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (node1_num));
         Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (node2_num));
 
-        CcnxAppHelper consumerHelper ("ns3::CcnxConsumer");
+        CcnxAppHelper consumerHelper ("ns3::CcnxConsumerWindow");
         consumerHelper.SetPrefix ("/" + lexical_cast<string> (node2->GetId ()));
-        consumerHelper.SetAttribute ("MeanRate", StringValue ("2Mbps"));
+        // consumerHelper.SetAttribute ("MeanRate", StringValue ("2Mbps"));
         consumerHelper.SetAttribute ("Size", StringValue ("1.983642578125")); //to make sure max seq # is 2000
 
         CcnxAppHelper producerHelper ("ns3::CcnxProducer");
@@ -157,26 +77,49 @@
 
         apps.Add
           (producerHelper.Install (node2));
-
-        createdStreams ++;
       }
 
     return apps;
   }
 
-  void
-  Run (const Time &finishTime)
+  ApplicationContainer
+  AddTcpApplications ()
   {
-    cout << "Run Simulation.\n";
-    Simulator::Stop (finishTime);
-    // Simulator::Schedule (Seconds (1.0), PrintTime);
-    Simulator::Run ();
-    Simulator::Destroy ();
-    cout << "Done.\n";
-  }
+    ApplicationContainer apps;
 
-  UniformVariable m_rand;
-  RocketfuelWeightsReader reader;
+    uint32_t streamId = 0;
+    const static uint32_t base_port = 10;
+    for (list<tuple<uint32_t,uint32_t> >::iterator i = m_pairs.begin (); i != m_pairs.end (); i++)
+      {
+        uint32_t node1_num = i->get<0> ();
+        uint32_t node2_num = i->get<1> ();
+
+        Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (node2_num));
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (node1_num));
+
+        Ptr<Ipv4> ipv4 = node1->GetObject<Ipv4> ();
+        // ipv4->GetAddress (0, 0);
+
+        // to make sure we don't reuse the same port numbers for different flows, just make all port numbers unique
+        PacketSinkHelper consumerHelper ("ns3::TcpSocketFactory",
+                                         InetSocketAddress (Ipv4Address::GetAny (), base_port + streamId));
+
+        BulkSendHelper producerHelper ("ns3::TcpSocketFactory",
+                                       InetSocketAddress (ipv4->GetAddress (1, 0).GetLocal (), base_port + streamId));
+        // cout << "SendTo: " <<  ipv4->GetAddress (1, 0).GetLocal () << endl;
+        producerHelper.SetAttribute ("MaxBytes", UintegerValue (2081040)); // equal to 2001 ccnx packets
+        
+        apps.Add
+          (consumerHelper.Install (node1));
+
+        apps.Add
+          (producerHelper.Install (node2));
+
+        streamId++;
+      }
+
+    return apps;
+  }
 };
 
 
@@ -186,8 +129,15 @@
   cout << "Begin congestion-pop scenario\n";
   
   Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
-  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("60"));
+  Config::SetDefault ("ns3::TcpSocket::SegmentSize", StringValue ("1040"));
+  
+  Config::SetDefault ("ns3::BulkSendApplication::SendSize", StringValue ("1040"));
 
+  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
+  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
+  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+  
   uint32_t maxRuns = 1;
   uint32_t startRun = 0;
   CommandLine cmd;
@@ -195,6 +145,9 @@
   cmd.AddValue ("runs", "Number of runs", maxRuns);
   cmd.Parse (argc, argv);
 
+  // ConfigStore config;
+  // config.ConfigureDefaults ();
+  
   for (uint32_t run = startRun; run < startRun + maxRuns; run++)
     {
       Config::SetGlobal ("RngRun", IntegerValue (run));
@@ -202,27 +155,69 @@
 
       Experiment experiment;
       cout << "Run " << run << endl;
-      
-      experiment.ConfigureCcnxTopology ();
-      ApplicationContainer apps = experiment.AddCcnxRandomApplications (20);
-      experiment.ConfigureRouting ();
-  
       string prefix = "run-" + lexical_cast<string> (run) + "-";
 
+      experiment.GenerateRandomPairs (20);
       ofstream of_nodes ((prefix + "apps.log").c_str ());
-      for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
+      for (list<tuple<uint32_t,uint32_t> >::iterator i = experiment.m_pairs.begin (); i != experiment.m_pairs.end (); i++)
         {
-          of_nodes << "From " << apps.Get (i*2)->GetNode ()->GetId ()
-                   << " to "  << apps.Get (i*2 + 1)->GetNode ()->GetId ();
+          of_nodes << "From " << i->get<0> ()
+                   << " to "  << i->get<1> ();
           of_nodes << "\n";
         }
       of_nodes.close ();
 
-      CcnxTraceHelper traceHelper;
-      traceHelper.EnableRateL3All (prefix + "rate-trace.log");
-      traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumer", prefix + "consumers-seqs.log");
+      cout << "NDN experiment\n";
+      // NDN
+      {
+        experiment.ConfigureTopology ();
+        experiment.InstallCcnxStack ();
+        ApplicationContainer apps = experiment.AddCcnxApplications ();
 
-      experiment.Run (Seconds (200.0));
+        for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
+          {
+            apps.Get (i*2)->SetStartTime (Seconds (1+i));
+            apps.Get (i*2 + 1)->SetStartTime (Seconds (1+i));
+          }
+
+        CcnxTraceHelper traceHelper;
+        // traceHelper.EnableRateL3All (prefix + "rate-trace.log");
+        // traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerCbr", prefix + "consumers-seqs.log");
+        traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerWindow", prefix + "consumers-seqs.log");
+        traceHelper.EnableWindowsAll (prefix + "windows.log");
+
+        // config.ConfigureAttributes ();
+        experiment.Run (Seconds (200.0));
+      }
+
+      cout << "TCP experiment\n";
+      // TCP
+      {
+        experiment.ConfigureTopology ();
+        experiment.InstallIpStack ();
+        ApplicationContainer apps = experiment.AddTcpApplications ();
+
+        CcnxTraceHelper traceHelper;
+        traceHelper.EnableIpv4SeqsAppAll (prefix + "tcp-consumers-seqs.log");
+        traceHelper.EnableWindowsTcpAll (prefix + "tcp-windows.log");
+
+        for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
+          {
+            apps.Get (i*2)->SetStartTime (Seconds (1+i));
+
+            apps.Get (i*2 + 1)->SetStartTime (Seconds (1+i));
+
+            // cout << "Node: " << apps.Get (i*2 + 1)->GetNode ()->GetId () << "\n";
+            // care only about BulkSender
+            Simulator::Schedule (Seconds (1+i+0.01),
+                                 &CcnxTraceHelper::TcpConnect, &traceHelper, apps.Get (i*2)->GetNode ());
+
+            Simulator::Schedule (Seconds (1+i+0.01),
+                                 &CcnxTraceHelper::TcpConnect, &traceHelper, apps.Get (i*2 + 1)->GetNode ());
+          }
+
+        experiment.Run (Seconds (200.0));
+      }
     }
 
   // cout << "Finish congestion-pop scenario\n";
diff --git a/examples/congestion-tcp-pop.cc b/examples/congestion-tcp-pop.cc
deleted file mode 100644
index c1ac443..0000000
--- a/examples/congestion-tcp-pop.cc
+++ /dev/null
@@ -1,231 +0,0 @@
-/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2011 University of California, Los Angeles
- *
- * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
- */
-
-
-#include "ns3/core-module.h"
-#include "ns3/network-module.h"
-#include "ns3/point-to-point-module.h"
-#include "ns3/NDNabstraction-module.h"
-#include "ns3/point-to-point-grid.h"
-#include "ns3/ipv4-global-routing-helper.h"
-#include "ns3/random-variable.h"
-#include "ns3/internet-module.h"
-#include "ns3/applications-module.h"
-#include "ns3/config-store.h"
-
-#include <iostream>
-#include <sstream>
-#include <map>
-#include <list>
-#include <set>
-#include "ns3/rocketfuel-topology-reader.h"
-
-#include "../helper/tracers/ipv4-seqs-app-tracer.h"
-
-#include <boost/lexical_cast.hpp>
-#include <boost/foreach.hpp>
-
-using namespace ns3;
-using namespace std;
-using namespace boost;
-
-NS_LOG_COMPONENT_DEFINE ("Scenario");
-
-void PrintTime ()
-{
-  cout << "Progress: " << Simulator::Now ().ToDouble (Time::S) << "s" << endl;
-
-  Simulator::Schedule (Seconds (1.0), PrintTime);
-}
-
-class Experiment
-{
-public:
-  Experiment ()
-    : m_rand (0,52)
-    , reader ("/sprint")
-  { }
-
-  void
-  ConfigureIpv4Topology ()
-  {
-    Names::Clear ();
-    
-    string weights   ("./src/NDNabstraction/examples/sprint-pops.weights");
-    string latencies ("./src/NDNabstraction/examples/sprint-pops.latencies");
-    string positions ("./src/NDNabstraction/examples/sprint-pops.positions");
-  
-    reader.SetFileName (positions);
-    reader.SetFileType (RocketfuelWeightsReader::POSITIONS);
-    reader.Read ();
-  
-    reader.SetFileName (weights);
-    reader.SetFileType (RocketfuelWeightsReader::WEIGHTS);    
-    reader.Read ();
-
-    reader.SetFileName (latencies);
-    reader.SetFileType (RocketfuelWeightsReader::LATENCIES);    
-    reader.Read ();
-    
-    reader.Commit ();
-    NS_ASSERT_MSG (reader.LinksSize () != 0, "Problems reading the topology file. Failing.");
-    
-    NS_LOG_INFO("Nodes = " << reader.GetNodes ().GetN());
-    NS_LOG_INFO("Links = " << reader.LinksSize ());
-
-    InternetStackHelper stack;
-    stack.Install (reader.GetNodes ());
-    reader.AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
-  }
-
-  void
-  ConfigureRouting ()
-  {
-    Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
-
-    // m_rand = UniformVariable (0, reader.GetNodes ().GetN());
-  }
-  
-  ApplicationContainer
-  AddTcpRandomApplications (uint16_t numStreams)
-  {
-    map<uint32_t, set<uint32_t> > streams;
-    ApplicationContainer apps;
-
-    const static uint32_t base_port = 10;
-    uint16_t createdStreams = 0;
-    uint16_t guard = 0;
-    while (createdStreams < numStreams && guard < (numeric_limits<uint16_t>::max ()-1))
-      {
-        guard ++;
-        
-        uint32_t node1_num = m_rand.GetValue ();
-        uint32_t node2_num = m_rand.GetValue ();
-
-        if (node1_num == node2_num)
-          continue;
-
-        if (streams[node1_num].count (node2_num) > 0) // don't create duplicate streams
-          continue;
-        
-        streams[node1_num].insert (node2_num);
-
-        Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (node1_num));
-        Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (node2_num));
-
-        Ptr<Ipv4> ipv4 = node1->GetObject<Ipv4> ();
-        // ipv4->GetAddress (0, 0);
-
-        // to make sure we don't reuse the same port numbers for different flows, just make all port numbers unique
-        PacketSinkHelper consumerHelper ("ns3::TcpSocketFactory",
-                                         InetSocketAddress (Ipv4Address::GetAny (), base_port + createdStreams));
-
-        BulkSendHelper producerHelper ("ns3::TcpSocketFactory",
-                                       InetSocketAddress (ipv4->GetAddress (1, 0).GetLocal (), base_port + createdStreams));
-        // cout << "SendTo: " <<  ipv4->GetAddress (1, 0).GetLocal () << endl;
-        producerHelper.SetAttribute ("MaxBytes", UintegerValue (2081040)); // equal to 2001 ccnx packets
-        
-        apps.Add
-          (consumerHelper.Install (node1));
-
-        apps.Add
-          (producerHelper.Install (node2));
-
-        createdStreams ++;
-      }
-
-    return apps;
-  }
-
-  void
-  Run (const Time &finishTime)
-  {
-    cout << "Run Simulation.\n";
-    Simulator::Stop (finishTime);
-    // Simulator::Schedule (Seconds (1.0), PrintTime);
-    Simulator::Run ();
-    Simulator::Destroy ();
-    cout << "Done.\n";
-  }
-
-  UniformVariable m_rand;
-  RocketfuelWeightsReader reader;
-};
-
-int 
-main (int argc, char *argv[])
-{
-  cout << "Begin congestion-pop scenario\n";
-  Packet::EnableChecking();
-  Packet::EnablePrinting();
-  
-  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
-  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("20"));
-  Config::SetDefault ("ns3::TcpSocket::SegmentSize", StringValue ("1040"));
-  
-  Config::SetDefault ("ns3::BulkSendApplication::SendSize", StringValue ("1040"));
-
-  // Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
-  // Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
-  // Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
-  
-  uint32_t maxRuns = 1;
-  uint32_t startRun = 0;
-  CommandLine cmd;
-  cmd.AddValue ("start", "Initial run number", startRun);
-  cmd.AddValue ("runs", "Number of runs", maxRuns);
-  cmd.Parse (argc, argv);
-
-  // ConfigStore config;
-  // config.ConfigureDefaults ();
-
-  for (uint32_t run = startRun; run < startRun + maxRuns; run++)
-    {
-      Config::SetGlobal ("RngRun", IntegerValue (run));
-      cout << "seed = " << SeedManager::GetSeed () << ", run = " << SeedManager::GetRun () << endl;
-      
-      Experiment experiment;
-      cout << "Run " << run << endl;
-      
-      experiment.ConfigureIpv4Topology ();
-      ApplicationContainer apps = experiment.AddTcpRandomApplications (20);
-      experiment.ConfigureRouting ();
-
-      string prefix = "run-tcp-" + lexical_cast<string> (run) + "-";      
-
-      ofstream of_nodes ((prefix + "apps.log").c_str ());
-      for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
-        {
-          of_nodes << "From " << apps.Get (i*2)->GetNode ()->GetId ()
-                   << " to "  << apps.Get (i*2 + 1)->GetNode ()->GetId ();
-          of_nodes << "\n";
-        }
-
-      CcnxTraceHelper traceHelper;
-      traceHelper.EnableIpv4SeqsAppAll (prefix + "consumers-seqs.log");
-
-      // config.ConfigureAttributes ();  
-
-      experiment.Run (Seconds (200.0));
-    }
-
-  // cout << "Finish congestion-pop scenario\n";
-  return 0;
-}
diff --git a/examples/congestion-zoom.cc b/examples/congestion-zoom.cc
new file mode 100644
index 0000000..35b3c0c
--- /dev/null
+++ b/examples/congestion-zoom.cc
@@ -0,0 +1,294 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/random-variable.h"
+#include "ns3/internet-module.h"
+#include "ns3/applications-module.h"
+#include "ns3/config-store.h"
+
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
+
+using namespace ns3;
+using namespace std;
+using namespace boost;
+
+NS_LOG_COMPONENT_DEFINE ("Scenario");
+
+// void PrintTime ()
+// {
+//   cout << "Progress: " << Simulator::Now ().ToDouble (Time::S) << "s" << endl;
+
+//   Simulator::Schedule (Seconds (1.0), PrintTime);
+// }
+
+#include "base-experiment.h"
+
+class Experiment
+{
+public:
+  AnnotatedTopologyReader *reader;
+  string prefix;
+
+  Experiment ()
+    : reader (0)
+    , prefix ("simple/")
+  { }
+  
+  void
+  ConfigureTopology ()
+  {
+    Names::Clear ();
+    cout << "Configure Topology\n";
+    if (reader != 0) delete reader;
+    reader = new AnnotatedTopologyReader (prefix);
+    
+    string input ("./src/NDNabstraction/examples/congestion-zoom.txt");
+  
+    reader->SetFileName (input);
+    reader->Read ();
+  }
+  
+  void InstallCcnxStackImpl ()
+  {
+    InternetStackHelper stack;
+    Ipv4GlobalRoutingHelper ipv4RoutingHelper ("ns3::Ipv4GlobalRoutingOrderedNexthops");
+    stack.SetRoutingHelper (ipv4RoutingHelper);
+    stack.Install (reader->GetNodes ());
+
+    reader->AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+    
+    // Install CCNx stack
+    cout << "Installing CCNx stack\n";
+    CcnxStackHelper ccnxHelper;
+    ccnxHelper.SetForwardingStrategy ("ns3::CcnxBestRouteStrategy");
+    ccnxHelper.EnableLimits (true, Seconds(0.1));
+    ccnxHelper.SetDefaultRoutes (false);
+    ccnxHelper.InstallAll ();
+
+    reader->ApplyOspfMetric ();
+  }
+  
+  void InstallCcnxStack (bool installFIBs = true)
+  {
+    InstallCcnxStackImpl ();
+
+    CcnxStackHelper ccnxHelper;
+    ccnxHelper.InstallFakeGlobalRoutes ();
+    if (installFIBs)
+      {
+        // // Populate FIB based on IPv4 global routing controller
+        ccnxHelper.InstallRoutesToAll ();
+      }
+  }
+  
+  void InstallIpStack ()
+  {
+    InternetStackHelper stack;
+    stack.Install (reader->GetNodes ());
+    reader->AssignIpv4Addresses (Ipv4Address ("10.0.0.0"));
+    reader->ApplyOspfMetric ();
+
+    Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+  }
+
+  ApplicationContainer
+  AddCcnxApplications ()
+  {
+    ApplicationContainer apps;
+
+    Ptr<Node> client = Names::Find<Node> (prefix, lexical_cast<string> ("client"));
+    Ptr<Node> server = Names::Find<Node> (prefix, lexical_cast<string> ("server"));
+    
+    CcnxAppHelper consumerHelper ("ns3::CcnxConsumerWindow");
+    consumerHelper.SetPrefix ("/" + lexical_cast<string> (server->GetId ()));
+    consumerHelper.SetAttribute ("Size", StringValue ("2.0"));
+
+    CcnxAppHelper producerHelper ("ns3::CcnxProducer");
+    producerHelper.SetPrefix ("/" + lexical_cast<string> (server->GetId ()));
+    
+    apps.Add
+      (consumerHelper.Install (client));
+
+    apps.Add
+      (producerHelper.Install (server));
+
+    return apps;
+  }
+
+  ApplicationContainer
+  AddTcpApplications ()
+  {
+    ApplicationContainer apps;
+
+    Ptr<Node> client = Names::Find<Node> (prefix, lexical_cast<string> ("client"));
+    Ptr<Node> server = Names::Find<Node> (prefix, lexical_cast<string> ("server"));
+
+    Ptr<Ipv4> ipv4 = client->GetObject<Ipv4> ();
+
+    // to make sure we don't reuse the same port numbers for different flows, just make all port numbers unique
+    PacketSinkHelper consumerHelper ("ns3::TcpSocketFactory",
+                                     InetSocketAddress (Ipv4Address::GetAny (), 1024));
+
+    BulkSendHelper producerHelper ("ns3::TcpSocketFactory",
+                                   InetSocketAddress (ipv4->GetAddress (1, 0).GetLocal (), 1024));
+    // cout << "SendTo: " <<  ipv4->GetAddress (1, 0).GetLocal () << endl;
+    producerHelper.SetAttribute ("MaxBytes", UintegerValue (2081040)); // equal to 2001 ccnx packets
+
+    apps.Add
+      (consumerHelper.Install (client));
+
+    apps.Add
+      (producerHelper.Install (server));
+    
+    // uint32_t streamId = 0;
+    // const static uint32_t base_port = 10;
+    // for (list<tuple<uint32_t,uint32_t> >::iterator i = m_pairs.begin (); i != m_pairs.end (); i++)
+    //   {
+    //     uint32_t node1_num = i->get<0> ();
+    //     uint32_t node2_num = i->get<1> ();
+
+    //     Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (node2_num));
+    //     Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (node1_num));
+
+    //     Ptr<Ipv4> ipv4 = node1->GetObject<Ipv4> ();
+    //     // ipv4->GetAddress (0, 0);
+
+    //     // to make sure we don't reuse the same port numbers for different flows, just make all port numbers unique
+    //     PacketSinkHelper consumerHelper ("ns3::TcpSocketFactory",
+    //                                      InetSocketAddress (Ipv4Address::GetAny (), base_port + streamId));
+
+    //     BulkSendHelper producerHelper ("ns3::TcpSocketFactory",
+    //                                    InetSocketAddress (ipv4->GetAddress (1, 0).GetLocal (), base_port + streamId));
+    //     // cout << "SendTo: " <<  ipv4->GetAddress (1, 0).GetLocal () << endl;
+    //     producerHelper.SetAttribute ("MaxBytes", UintegerValue (2081040)); // equal to 2001 ccnx packets
+        
+    //     apps.Add
+    //       (consumerHelper.Install (node1));
+
+    //     apps.Add
+    //       (producerHelper.Install (node2));
+
+    //     streamId++;
+    //   }
+
+    return apps;
+  }
+
+  void
+  Run (const Time &finishTime)
+  {
+    cout << "Run Simulation.\n";
+    Simulator::Stop (finishTime);
+    Simulator::Schedule (Seconds (5.0), PrintTime);
+    Simulator::Run ();
+    Simulator::Destroy ();
+    cout << "Done.\n";
+  }
+};
+
+
+int 
+main (int argc, char *argv[])
+{
+  cout << "Begin congestion-pop scenario\n";
+  
+  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("1Mbps"));
+  // Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("60"));
+  Config::SetDefault ("ns3::TcpSocket::SegmentSize", StringValue ("1040"));
+  
+  Config::SetDefault ("ns3::BulkSendApplication::SendSize", StringValue ("1040"));
+
+  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
+  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
+  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+  
+  CommandLine cmd;
+  cmd.Parse (argc, argv);
+
+  // ConfigStore config;
+  // config.ConfigureDefaults ();
+  
+  Experiment experiment;
+  string prefix = "congestion-zoom-";
+
+  cout << "NDN experiment\n";
+  // NDN
+  {
+    experiment.ConfigureTopology ();
+    experiment.InstallCcnxStack ();
+    experiment.AddCcnxApplications ();
+
+    // for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
+    //   {
+    //     apps.Get (i*2)->SetStartTime (Seconds (1+i));
+    //     apps.Get (i*2 + 1)->SetStartTime (Seconds (1+i));
+    //   }
+
+    CcnxTraceHelper traceHelper;
+    traceHelper.EnableRateL3All (prefix + "rate-trace.log");
+    // traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerCbr", prefix + "consumers-seqs.log");
+    // traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerWindow", prefix + "consumers-seqs.log");
+    // traceHelper.EnableWindowsAll (prefix + "windows.log");
+
+    // config.ConfigureAttributes ();
+    experiment.Run (Seconds (50.0));
+    // experiment.reader->SavePositions ("pos.log");
+  }
+
+  cout << "TCP experiment\n";
+  // TCP
+  {
+    experiment.ConfigureTopology ();
+    experiment.InstallIpStack ();
+    experiment.AddTcpApplications ();
+
+    CcnxTraceHelper traceHelper;
+    traceHelper.EnableIpv4RateL3All (prefix + "ipv4-rate-trace.log");
+    // traceHelper.EnableIpv4SeqsAppAll (prefix + "tcp-consumers-seqs.log");
+    // traceHelper.EnableWindowsTcpAll (prefix + "tcp-windows.log");
+
+    // for (uint32_t i = 0; i < apps.GetN () / 2; i++) 
+    //   {
+    //     apps.Get (i*2)->SetStartTime (Seconds (1+i));
+
+    //     apps.Get (i*2 + 1)->SetStartTime (Seconds (1+i));
+
+    //     // cout << "Node: " << apps.Get (i*2 + 1)->GetNode ()->GetId () << "\n";
+    //     // care only about BulkSender
+    //     Simulator::Schedule (Seconds (1+i+0.01),
+    //                          &CcnxTraceHelper::TcpConnect, &traceHelper, apps.Get (i*2)->GetNode ());
+
+    //     Simulator::Schedule (Seconds (1+i+0.01),
+    //                          &CcnxTraceHelper::TcpConnect, &traceHelper, apps.Get (i*2 + 1)->GetNode ());
+    //   }
+
+    experiment.Run (Seconds (50.0));
+  }
+
+  return 0;
+}
diff --git a/examples/congestion-zoom.txt b/examples/congestion-zoom.txt
new file mode 100644
index 0000000..1747062
--- /dev/null
+++ b/examples/congestion-zoom.txt
@@ -0,0 +1,16 @@
+router
+#name			city	latitude	longitude
+client  		unknown 28.8967		-12.8654
+server  		unknown 28.8967  	51.3505
+clientProvider  	unknown 28.8967   	8.97413
+serverProvider  	unknown 28.8967 	37.5575
+provider1   		unknown 23.5641		32.6924
+provider2  		unknown 36.0641 	32.6924
+link
+#x	y	capacity(kbps)	OSPF    Delay		MaxPackets
+client	clientProvider	10Mbps	1	5ms		200
+server  serverProvider 10Mbps	2	6ms		200
+clientProvider provider1 1Mbps 	1  	50ms		20
+clientProvider provider2 1Mbps 	1  	50ms		20
+serverProvider provider1 1Mbps	1	5ms		20	
+serverProvider provider2 1Mbps	2	6ms		20
diff --git a/examples/content-object-example.cc b/examples/content-object-example.cc
deleted file mode 100644
index 8272e86..0000000
--- a/examples/content-object-example.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "ns3/test.h"
-#include "ns3/annotated-topology-reader.h"
-#include "ns3/ccnx-content-object-header.h"
-#include "ns3/uinteger.h"
-#include "ns3/random-variable.h"
-#include <limits> 
-#include "ns3/ccnx-header-helper.h"
-#include "ns3/header.h"
-#include "ns3/ccnx-name-components.h"
-#include "ns3/nstime.h"
-#include "ns3/buffer.h"
-#include "ns3/log.h"
-
-using namespace ns3;
-#include <fstream>
-
-NS_LOG_COMPONENT_DEFINE ("ContentObjectHeaderExample");
-
-int
-main (int argc, char *argv[])
-{
-  LogComponentEnable ("ContentObjectHeaderExample", LOG_ALL);
-  LogComponentEnable ("Packet", LOG_ALL);
-	
-  NS_LOG_INFO ("Test started");
-
-  Packet::EnablePrinting ();
-  Packet::EnableChecking (); 
-  Packet packet (10);
-	
-  CcnxContentObjectHeader header;
-  CcnxContentObjectTail   trailer;
-	
-  Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
-  (*testname) ("1");
-  header.SetName(testname);
-
-  NS_LOG_INFO ("Source: \n" << header << trailer);
-
-  packet.AddHeader (header);
-  packet.AddTrailer (trailer);
-
-  // NS_LOG_INFO ("Deserialized packet: \n" << packet);
-
-  NS_LOG_INFO ("Removing and deserializing individual headers");
-	
-  CcnxContentObjectHeader dst_header;
-  CcnxContentObjectTail   dst_trailer;
-
-  packet.RemoveHeader (dst_header);
-  packet.RemoveTrailer (dst_trailer);
-	
-  NS_LOG_INFO ("Target: \n" << dst_header << dst_trailer);
-
-  return 0;
-}
diff --git a/examples/failures/failures-0.01 b/examples/failures/failures-0.01
new file mode 100644
index 0000000..3207d84
--- /dev/null
+++ b/examples/failures/failures-0.01
@@ -0,0 +1,1000 @@
+14-16;5-8
+
+
+3-9
+
+
+
+9-20;19-41
+
+9-20
+
+7-13
+11-17;6-7;16-24
+14-17;6-8;16-24
+
+
+1-8
+
+2-3;15-18;20-21;27-28
+27-28
+11-38;6-7
+12-13;6-25
+
+18-23;24-50
+
+1-5;17-29
+5-7
+6-11
+6-7
+
+9-20
+9-20
+12-13;9-15;9-20
+
+9-20
+9-19
+1-9;33-40
+8-16
+8-24;16-17
+13-32;17-28
+1-11
+
+
+31-47
+1-7;17-29;48-49;19-41
+9-31
+
+
+
+
+8-28
+6-25
+8-26;17-29;48-49
+7-13
+
+
+14-15
+32-44;24-45
+23-24
+17-26
+
+24-38;24-50
+
+17-24
+20-22;17-20;5-8
+
+
+27-28
+1-8;13-33;40-49
+11-24
+
+9-31
+
+
+32-48
+20-21;8-24
+9-19;24-38
+16-17;31-37
+
+17-36
+
+21-31
+
+8-28;19-41
+6-11
+6-11;24-50
+
+6-28;32-44
+15-19
+14-15
+14-17
+3-9
+
+
+
+
+
+19-41
+
+
+
+
+
+16-24;9-20;24-45
+
+9-20
+9-20
+13-33;9-20
+
+17-29
+9-20
+9-20;19-41
+18-23
+
+6-7
+
+24-45
+6-11
+20-22
+17-25;40-49
+
+9-20;9-19
+5-32
+8-16
+
+8-26;17-36;5-32
+
+2-3
+
+20-22;19-20
+8-26
+23-24
+
+
+
+0-1
+11-38;33-40
+
+40-49
+9-30
+
+
+19-51
+11-38
+1-7;14-16
+2-3;17-29;24-45
+17-35
+11-24
+0-1;8-24
+
+17-18
+14-15;9-20;3-9
+
+33-39
+
+
+9-20
+1-7;13-32
+9-20
+32-42;9-20
+
+17-18;17-24;9-17
+
+32-48;9-19
+17-25
+17-18
+15-18
+15-19;24-31
+40-48
+
+1-9
+
+25-26;13-32
+
+
+
+8-26
+32-42;9-20
+
+40-48
+
+
+8-16;9-20
+8-26;9-20;19-20
+14-15
+
+9-20
+8-20;9-20
+6-17
+6-7
+16-17;5-7
+
+
+17-24
+18-23
+8-16;32-48
+17-36;16-17
+
+17-28
+1-4;31-37
+
+
+1-10;39-42
+24-31
+17-24;6-11;31-47
+
+9-19
+16-29
+
+1-8;19-20
+
+16-17
+39-42
+
+6-7
+8-20
+
+24-38
+
+5-7
+
+
+
+
+
+
+20-21;5-32
+
+20-21;9-31
+8-20
+12-13;6-7
+31-37
+25-26
+33-39
+
+8-20
+
+17-24;19-20
+6-28
+24-31
+1-7
+
+14-17;17-35;31-45
+0-1
+
+
+
+
+
+13-33;31-47
+14-17
+
+
+40-48
+1-10;40-48
+8-26
+16-29;40-48
+6-7
+9-31
+
+
+20-22;31-45;32-42
+17-25;6-8
+6-17;31-47
+
+25-26
+
+
+8-28;17-26
+32-44
+
+
+
+31-46
+33-39;5-32;40-49
+
+5-32
+1-7
+32-42
+19-20
+19-51
+1-8
+13-33
+
+
+3-9
+25-26
+
+27-28
+1-6;23-24;31-37;19-20
+16-17
+6-7
+32-42
+
+19-41
+17-29
+
+
+
+18-23
+
+17-28;17-29
+
+
+0-1
+9-30
+
+6-7
+32-42
+
+16-29
+14-15
+
+20-22
+
+
+
+15-18;19-51
+
+32-42
+9-31
+32-42
+
+25-26
+6-11
+40-49
+20-22
+
+
+
+
+1-9
+17-28;18-23;24-50
+11-24;5-7
+14-17;8-28
+
+
+9-19
+
+0-1
+9-15
+15-19
+
+1-11
+
+24-31
+
+32-42
+
+
+5-32
+32-42
+2-3
+
+
+
+19-20
+6-11
+
+17-25;16-29
+15-19
+
+
+
+
+
+1-6;17-28;17-24
+32-42
+6-11
+
+
+
+
+24-45
+
+1-10;6-8;7-13
+
+
+5-7
+15-18
+
+
+14-16
+
+19-20
+
+
+
+
+6-17;32-42
+8-28
+9-17
+20-22
+
+
+17-18
+8-28;7-13
+32-42;19-51
+32-44
+33-39;32-44
+
+
+
+
+
+
+17-18
+1-7
+
+17-18;6-7
+17-29
+
+
+1-5;6-28;24-38
+13-32;17-18;17-25
+
+
+17-18
+
+13-32;5-8
+15-18
+32-42
+
+6-7
+9-19
+6-28
+32-44
+
+
+17-35
+
+20-22;31-45
+
+
+
+
+11-24
+1-5;33-40
+19-20
+6-17
+14-17;33-39
+8-28
+8-16
+1-6;11-17;39-42
+8-24
+11-38
+1-7
+1-7
+24-38
+14-17
+6-8
+2-3
+
+32-44
+1-10
+6-25;19-41
+14-16;17-26
+
+33-40;32-42
+
+8-20;31-46
+21-31;31-46
+
+
+
+
+
+1-10
+1-10
+32-42;9-19
+16-24
+
+6-7;24-50
+14-17
+25-26
+
+
+3-9
+1-8;6-17;31-45
+31-45
+
+8-20
+32-42;48-49
+
+7-13;24-38
+
+
+8-24
+23-24
+17-26
+
+
+11-24
+19-20
+
+
+39-42
+
+
+
+
+
+
+
+11-24
+6-7;32-44;5-7
+48-49
+40-49
+
+17-25;33-40;32-42;9-31
+24-45
+16-17;32-42
+1-4;1-11
+13-32;17-25
+0-1;1-9
+38-43
+
+
+11-38
+
+6-28
+48-49
+8-20
+1-5;9-15
+
+1-11;16-24;31-45;32-48
+21-31
+
+14-17;13-32;17-28
+8-20
+17-24;5-7
+1-8
+6-28;24-50
+5-32
+17-20
+14-15;6-11
+
+20-22
+9-17
+1-4
+24-45
+
+
+
+
+
+32-42;24-50
+19-41
+
+
+
+
+17-24;48-49
+8-28
+9-19
+25-26;32-44
+33-39;31-46
+31-46;31-47
+11-17
+33-40
+12-13;17-25
+16-29
+19-41
+
+20-22
+6-25;6-11
+
+
+31-46
+9-31;9-17
+
+32-42
+
+31-47
+17-24
+0-1;5-7
+1-9;1-10;16-29
+
+1-5
+32-44
+
+
+32-48;9-15
+
+
+31-46;32-48
+19-20
+31-46
+17-26
+13-33
+17-29
+39-42;24-38
+
+38-43
+17-35
+17-28
+
+
+31-37
+14-17
+
+1-8;21-31;17-26
+1-10;13-33;31-47;9-31;19-51
+8-26;17-28
+
+
+
+
+
+
+
+
+31-45;19-51
+
+11-17
+
+16-29
+
+
+
+
+1-8
+
+14-15
+
+12-13
+
+20-21
+
+
+
+
+31-47;5-8
+
+5-7
+
+
+2-3
+
+
+
+11-17
+
+
+
+8-16;9-20
+
+
+17-18
+
+17-29
+8-26;17-18
+1-5;16-17
+13-32
+6-25
+
+6-11;9-20
+17-28;17-26
+
+1-8;13-32
+
+5-32
+
+31-37;38-43;5-32
+6-28
+1-4;9-30
+31-37
+1-4
+6-11;9-20
+6-7
+
+
+18-23
+
+
+
+
+8-26
+11-38;24-45
+9-20
+
+
+
+
+
+
+17-20;6-11
+1-10
+
+
+5-32
+16-29
+24-45
+
+15-18;38-43
+
+15-19;31-37;9-30
+
+23-24
+
+1-10
+
+8-28;33-40;5-7
+1-4;31-45
+
+11-24
+17-25;5-8;24-31
+
+
+
+15-19
+
+1-10;8-20
+
+32-44
+14-16;16-29
+
+31-46;40-49
+
+
+24-31
+19-51
+7-13;24-45
+24-50
+17-26
+
+
+
+5-7
+17-24
+
+9-19
+1-9;39-42
+
+0-1;9-30
+8-28
+8-16
+20-22;8-26
+
+16-29
+1-6
+1-11;15-18
+9-17
+
+17-29
+
+
+6-8
+6-25
+1-8;24-31
+
+
+
+9-31
+
+
+17-24
+1-4
+
+13-33;6-17
+23-24
+14-17
+
+24-31
+
+1-10;15-18;5-32
+
+11-38
+8-28
+6-25
+
+
+5-7
+6-8
+1-4;9-19
+
+
+13-32;31-46
+14-16
+12-13
+
+8-28;39-42;19-51
+31-45;5-7
+8-20
+39-42
+
+
+8-24;6-8;9-31
+14-16;13-32
+
+20-21;9-20
+27-28
+8-28
+9-15
+1-5;33-39
+31-45
+17-36
+14-16;16-17
+32-48
+
+20-21
+11-17;9-20;3-9
+
+
+11-38
+
+
+
+8-16;11-17;6-17
+7-13
+5-8
+
+40-49;19-51
+
+1-11;27-28
+
+
+
+
+32-44
+20-21
+24-50
+
+23-24;32-44
+
+14-17
+21-31
+32-48;24-31
+
+
+32-48
+
+9-15
+14-16;33-39;9-30
+1-10;15-18;32-44
+39-42
+
+
+8-20;17-29;11-24
+
+1-9;27-28;19-41
+8-26
+
+12-13
+8-20;18-23
+1-4
+
+
+17-24;6-28;24-31
+
+38-43
+13-33
+7-13;9-15
+17-35;31-37
+1-8
+
+17-29
+11-17
+
+8-24;17-28
+
+14-16;9-19
+21-31
+
+14-15;9-17
+1-5
+12-13
+24-38
+8-26
+
+32-44;18-23;3-9
+19-20
+11-24
+6-8
+1-7
+
+20-21;40-49
+18-23
+
+15-19
+
+
+
+1-6
+
+
+
+11-17;31-45
+
+
+9-19
+9-17
+
+8-28
+
+15-19;20-21
+
+
+
+24-31
+1-4
+0-1
+
+13-32
+
+1-7
+31-46
+
+1-6;17-18
+20-22
+17-25
+1-8;9-31
+16-29
+17-18
+
+11-17
+17-18
+
+
+
+
+2-3;1-6
+
+
+17-26
+
+
+19-20
+17-28
+21-31;11-24;31-47
+
+
+
+
+
+9-15;9-17
+
+3-9
+8-28
+7-13
+
+
+
+5-32
+23-24
+1-8
+
+1-6;16-17;19-41;19-51
+17-25
+
+14-15
+
+19-20
+
+
+
+20-21
+16-17
+
+6-7
+
+
+17-20
+15-18
+1-10
+33-39;31-45
+6-7
+
+15-19;17-28
+9-31
+
+
+
+20-22
+
+5-7
+33-39
+
+33-39
+6-28
+
+
+8-16
+21-31;18-23
+
+6-11;31-47
+
+27-28;17-20
+
+
+
+
+1-11
+11-24
+
+11-17
+
+14-16;17-25;19-51
+9-30
+
diff --git a/examples/failures/failures-0.02 b/examples/failures/failures-0.02
new file mode 100644
index 0000000..bcf7591
--- /dev/null
+++ b/examples/failures/failures-0.02
@@ -0,0 +1,1000 @@
+16-29;31-47
+
+27-28;8-26;17-24;6-7;16-17;24-45
+14-15;17-29;24-45
+1-10
+27-28
+1-5
+23-24;17-25;11-24;18-23
+
+20-22;31-45;9-31
+1-7;1-11;12-13
+1-10;17-24;24-31
+13-33;9-19
+20-22;32-42;9-15
+13-32
+12-13
+1-8
+3-9
+1-5;8-28;17-20;48-49
+5-32
+
+15-18;6-7;7-13
+20-22;17-24
+
+
+8-24;13-33;31-47
+48-49;38-43
+27-28;11-17
+40-49
+1-7
+17-35;24-38
+17-29;31-47
+17-36
+12-13;24-45
+13-32;33-40
+11-17;3-9
+17-28;38-43;9-17
+
+15-19;16-17;24-50
+
+14-15;21-31;18-23;24-31
+
+0-1;7-13
+32-48;9-31
+33-40
+1-11;14-16;17-26;31-46;38-43;19-20
+14-15
+1-11;33-39;31-46;32-48
+39-42;16-17;38-43
+24-50
+6-34;16-24;19-51
+21-31
+
+15-18;11-24;6-8
+
+13-32;39-42;31-45
+12-13;6-11;9-19;19-51
+
+17-18;6-11;38-43
+6-11
+21-31
+17-18
+
+20-22;8-16;8-28;16-17;19-51
+16-24
+6-28;6-17;18-23
+
+
+24-45
+16-24;24-31
+
+6-28
+5-7
+20-21;6-8;18-23
+1-10;25-26;17-20;24-50
+6-7
+17-24
+
+17-18;17-26;6-25;19-51
+19-20
+25-26;17-28;9-17
+
+1-10;13-32;9-31
+14-15;24-38;24-31;24-45
+9-30
+25-26;17-25;24-38
+17-36;16-29
+38-43;24-38;3-9
+
+6-11;48-49
+
+6-11;18-23
+1-7;1-9
+8-16
+
+
+33-40;5-32
+17-35;38-43;24-31
+32-44;5-7;18-23
+6-7
+
+17-24;9-17
+1-11
+15-19;20-22
+6-17
+17-25
+18-23
+1-8;39-42
+13-33
+6-28;31-46
+1-9;33-39
+17-26;9-31
+17-20;31-37;9-31
+1-6
+9-30
+8-26;24-45
+
+33-39;33-40
+15-18
+25-26
+9-17
+8-20;8-28;11-24
+1-6;17-28;17-24;9-15
+15-19
+5-32
+18-23
+40-49
+14-15;32-44;24-31
+20-21;16-17
+23-24
+1-9
+1-4;1-7;8-28
+18-23
+
+
+16-29;32-44;3-9
+25-26;31-45
+1-11
+11-17
+13-32
+
+6-7;24-38
+15-18
+15-19;16-17
+
+9-19
+11-17;9-30
+17-26;11-38
+14-16;6-28;38-43
+
+
+20-21
+1-5;33-39;32-44
+8-16
+14-17;11-38;6-25
+6-8
+1-11;8-20;13-33;17-28
+17-28;6-8
+1-9;33-39;38-43
+6-25
+
+11-17
+1-8;16-24;40-49
+14-17;9-15
+1-5;9-31
+13-32
+0-1;1-10;14-16
+1-4;48-49;38-43
+23-24;31-46
+13-33;6-17
+
+
+
+1-6;31-46
+
+1-7;6-8;24-50
+1-5;17-24;16-24
+27-28;8-20
+14-17;17-36;33-40
+17-20
+17-26
+23-24;21-31;33-39;32-44
+19-20
+
+
+1-4;39-42
+40-49
+
+1-5;12-13
+
+2-3
+1-11
+0-1;13-32;16-29;24-38
+39-42
+24-38
+11-17
+9-30
+1-5;38-43
+15-18
+17-20;48-49
+8-28;17-25;39-42
+48-49
+
+6-34;32-48
+11-38
+
+32-44;24-31
+38-43;9-31
+24-45
+1-5
+8-28;11-17;40-49
+11-38;24-50
+
+14-16;8-20
+8-24;24-50
+16-17;3-9
+9-15
+23-24;17-35
+
+19-51
+17-35;24-31
+1-4;11-17
+14-15
+
+16-29;32-48
+1-6;6-28;9-30
+8-16;9-17;5-7;3-9
+8-16;17-20
+
+13-33
+17-29
+15-18
+48-49
+17-28;11-24;9-19
+1-5;24-45
+14-16;9-19
+24-31;19-51
+
+
+21-31
+6-11
+1-6;3-9
+19-51
+
+
+
+
+
+12-13;21-31;17-26;38-43
+20-21;8-20;17-25;31-45;18-23;19-51
+
+
+14-17
+17-36;6-7;5-7;24-45
+23-24;13-32;32-48
+15-18;8-16
+
+27-28;24-45
+6-8;38-43;9-15;19-51
+1-4;6-17
+16-24
+
+
+
+0-1;17-29;40-49;19-51
+
+1-11;18-23;3-9
+17-28;38-43
+8-28;17-29
+17-20;11-17
+
+1-8;5-7
+0-1;6-11
+16-29;19-51
+5-32
+
+1-9;21-31;13-33
+1-10;9-19
+14-16
+14-17;31-45
+6-25;5-32;5-7
+27-28;17-26;19-41
+18-23
+1-5
+14-17;8-24;24-45
+1-10;31-47
+1-8;31-45;7-13
+15-18;21-31
+
+12-13;15-19;17-36;40-48
+13-32;33-39;3-9
+14-15;20-22;8-20;6-8;40-48
+14-17;17-25;40-48
+23-24;17-18;40-48;24-31
+1-4
+15-18
+13-32;11-38;40-48
+17-24;39-42;40-48
+0-1;11-17;6-7
+20-21;8-16;17-25
+17-18
+1-4
+1-6;31-46;40-48
+11-24;31-46
+6-8;5-32
+
+6-34
+17-36;19-51
+6-17;9-30;40-48
+17-20;31-37;9-30
+16-24
+13-32;17-18;11-24;32-44
+12-13;16-29
+21-31
+8-28;17-26
+1-6;17-18;11-38;6-25;16-24;5-7
+1-10;24-38
+
+1-11;8-24;6-34
+20-21;6-28;9-17
+
+
+11-38;19-51
+
+14-17;9-17
+13-33;6-8;16-24
+8-24;17-36;24-50
+15-18
+
+1-10;27-28;17-18;17-29;31-47
+6-34;6-11;16-17
+14-17;6-11;3-9
+6-11
+39-42
+23-24
+24-50
+17-25
+12-13;9-30
+
+17-35;32-44;9-15
+6-7
+40-49
+1-8;33-40;39-42
+1-10;14-16;17-24
+
+6-8;6-17
+1-5;8-24;5-32
+16-17
+3-9
+1-4
+39-42
+21-31;24-31
+15-18
+0-1;14-15;17-24
+5-32;24-50
+12-13;23-24;6-34
+
+1-7;12-13;14-17;8-20;6-11;24-50
+11-38
+
+11-17;31-47
+0-1
+14-16;33-39;16-29
+20-21;6-11
+6-25;6-11
+15-19;8-24;32-44;24-31;24-45
+31-46
+
+8-28;6-11;19-51
+
+1-7
+20-22
+
+1-11;6-17;3-9
+1-11;13-32;31-37;19-41
+
+
+14-15
+1-8;17-20
+2-3
+24-31
+11-38;32-48
+17-26;5-32;18-23
+
+9-31
+
+39-42
+17-35
+
+31-47;48-49
+17-36
+6-25;24-50
+23-24
+
+39-42
+15-19
+1-9;8-24
+13-33
+
+21-31;18-23;19-41
+13-32
+5-32
+8-16;40-49
+33-39
+8-24;17-28;5-32
+
+6-8
+
+14-16;17-20;33-39
+12-13;17-35;6-17;9-19
+20-22;19-41
+
+11-17;40-49
+31-45;31-47
+12-13;17-28;33-40
+1-8;17-26
+
+17-36
+8-20
+31-47
+14-17
+48-49;9-30
+
+2-3;39-42;9-30
+
+19-41
+1-5
+8-24;13-32;6-8;16-24
+31-46;9-15;19-41
+
+17-25
+17-35
+1-7;1-8
+1-6;9-17
+14-17;17-26
+17-35;6-17;6-34;39-42
+17-36;9-15
+6-17;16-24
+17-20
+1-4
+20-21
+25-26;8-26;16-24;19-20
+1-7;8-24;16-29;40-49
+24-38
+13-33
+1-5;20-21;6-25
+5-7
+32-48;24-38
+25-26;6-8
+17-28
+31-47
+1-5
+16-29
+24-50
+1-10;8-20;9-19;5-32;24-31
+24-50
+
+17-25
+1-4;13-33
+17-35
+5-7
+
+1-10;8-16
+6-25
+
+
+8-24;6-28;24-45
+11-17;33-39
+8-26;16-29;5-8
+1-9;12-13;8-26;24-31
+9-17
+
+32-48
+33-39;31-47
+6-17;31-45;9-17
+25-26;8-20
+6-17;38-43
+9-30
+6-28;24-38
+14-15;5-8
+19-51
+20-21;25-26
+
+17-26;16-17
+1-11;8-28
+33-40;16-29;3-9
+17-25;48-49;19-51
+1-9
+1-8
+6-25;9-15
+1-10;6-7;3-9
+17-28
+12-13;24-50
+31-45
+1-4;11-17;31-46
+17-20;33-40
+
+25-26;32-48;24-31
+31-37;9-19
+40-49
+
+
+
+0-1;25-26
+
+
+1-8
+17-20;17-24
+1-5;8-26;6-8;6-34;19-51
+17-36;9-31;5-32
+0-1;12-13
+1-4;1-6
+14-16;16-24;9-31
+6-17
+25-26
+20-21;13-33;6-11
+17-26;6-25;6-11;16-24;38-43
+
+17-24
+1-11;8-28
+21-31
+6-8;32-44
+
+7-13;40-48
+39-42
+25-26
+7-13;38-43;24-31
+
+24-50
+14-16;13-33
+
+27-28;8-20;39-42
+
+14-17;17-20
+17-25;16-29;5-7;40-48
+1-7;9-30
+14-15;38-43
+5-32;19-20
+6-7
+9-31
+21-31
+25-26
+6-25;6-8;9-15;9-19
+9-31
+7-13
+
+17-36
+8-24;17-18;24-45;19-41
+1-4
+2-3;17-29;6-17;32-44
+6-34;32-44;19-20
+6-17
+
+
+20-21
+
+8-24;16-24
+40-48
+
+2-3;17-18;9-15
+
+17-20
+1-8;17-18
+
+
+0-1;8-16;17-18;5-32;19-20
+1-4;14-17;8-16
+5-7;24-50
+1-10;17-36;11-38;38-43;40-48
+
+1-9;15-18;25-26
+20-22
+
+17-18
+14-17;6-25;9-31
+20-21;6-34
+15-19;6-7;6-8;16-24
+
+17-20;17-29;24-45;19-20
+40-48
+
+27-28;40-49
+11-17;31-37
+19-51
+5-32
+17-24;24-45
+9-19
+17-18;33-40;6-34
+1-9;6-17
+8-24;9-30;5-32
+40-48
+9-30;24-31
+17-18;31-47;19-20
+1-11
+11-24
+31-45
+1-8;17-24
+
+31-47
+0-1;12-13;32-44
+
+8-28;40-48
+8-20
+14-16
+12-13
+1-9;24-38;24-31
+17-24
+0-1;24-38
+11-24;16-17;5-32
+7-13
+
+20-21;5-7
+6-25;39-42;40-48
+16-24
+31-45
+17-29;38-43
+
+1-5;15-18;11-24;6-34
+19-20
+13-32;17-36;31-46
+1-4;8-26
+
+
+40-48;24-45
+1-9;6-28
+
+
+33-40;16-24;48-49
+1-11;32-44
+1-5;1-6;6-34
+8-28;7-13
+20-21;5-8
+2-3;6-7;5-8;40-49
+8-26;5-8
+8-20;21-31;40-48
+13-32;6-11
+1-7;15-19;20-22;31-47
+1-10;9-17
+16-29
+
+
+31-45;5-32;24-38
+
+8-28;16-17
+
+5-32;40-48
+1-7;15-19
+33-40
+18-23
+14-16;31-37
+1-10
+0-1;2-3;1-8
+17-28
+14-17;31-37
+
+32-44;24-50
+1-4;12-13;23-24
+
+17-20
+32-48
+13-33
+
+20-22;8-24;6-7;6-28;6-25;9-17;24-31
+1-11
+12-13;17-29;6-11
+15-19;8-28;6-11;31-47;18-23
+8-26;6-25;6-11;48-49
+6-17;32-48
+9-19
+6-11
+12-13
+2-3
+
+31-47
+8-26;17-36;9-19
+9-30
+
+14-16;24-31
+1-5;6-34
+20-22
+
+
+27-28
+31-46
+1-11;17-26
+2-3;11-24;6-8;9-15
+
+17-28;19-20
+8-28;17-20
+2-3;6-25
+40-48;24-45
+1-5;6-34
+17-25;5-32;24-31
+1-4;5-7
+8-26;6-25
+17-28
+
+24-38;24-45
+
+1-7;48-49
+8-26;9-15
+8-28;40-48
+16-24
+1-5;11-38;6-34;31-47;9-17
+
+6-17
+1-9
+1-6
+27-28;19-41
+31-37
+32-48
+6-7
+1-11;20-21;17-29;40-48
+
+0-1;31-37;19-20
+11-17
+
+20-22;17-26;33-39
+21-31;6-8;9-19
+33-40;19-41
+1-11;8-26;17-35;6-25
+1-8;1-10;9-17
+19-41
+1-11;8-24;9-31
+
+
+
+1-5;23-24;17-24;17-25;6-34
+
+5-7
+13-33;9-30
+11-24;32-44;24-50
+14-16
+27-28;19-41
+19-51
+1-10;16-29;24-31
+
+11-38
+15-18
+1-5;17-29;6-34
+31-45
+31-37;9-31;19-20
+
+8-24;6-17;3-9
+13-32;19-51
+21-31;17-36
+
+1-4;8-26;17-29;6-25
+1-7;17-36
+31-46
+
+14-16;6-28;19-51
+
+8-26;9-15;24-45;3-9
+1-11
+
+14-15
+8-16
+1-6;32-44
+6-8
+19-51
+
+1-7;9-19
+1-5;20-21;33-39;6-34;48-49
+
+17-36
+14-17;40-49;19-51
+
+
+6-25;3-9
+15-18
+
+1-5;1-7;11-17;39-42;24-45
+19-51
+1-6;1-11;17-20
+1-5;1-8;21-31;11-24;6-34
+
+31-37
+1-11;39-42
+17-35;31-47
+6-8;32-48
+
+
+8-24;17-24;17-25;19-20
+14-17;20-21
+17-26
+14-15;27-28;32-44
+11-38;33-39
+17-35;7-13
+17-29
+15-18;31-45;9-17;3-9
+
+17-35;40-49
+
+
+11-38;16-24
+48-49;40-48;19-20
+1-9
+
+8-16;11-24;11-17
+33-40
+8-24;19-51
+1-4;31-45;5-7;40-48
+15-18;13-33
+40-48
+32-48;40-48
+31-37;40-48
+6-7;40-48
+11-24;32-48
+
+1-11;17-18;40-48
+1-11
+
+
+17-28;32-44;40-48
+40-48
+1-9;5-32
+
+17-18;17-26;17-29
+1-4;6-17
+0-1;8-26;33-40
+5-32
+
+1-9;5-8
+14-17;38-43
+
+
+15-19;13-33;19-41
+0-1;23-24;39-42
+17-18
+6-34
+11-24
+17-18
+38-43
+48-49
+8-20;24-45
+20-22
+15-19;8-28;32-48;9-17;5-7
+
+2-3;33-39
+8-26
+9-30;9-17;19-41
+
+20-21;38-43;24-50
+
+12-13;17-25;5-8
+0-1
+
+14-15;31-45;40-49
+
+9-19
+
+1-6
+9-31;24-45
+6-8
+19-41
+17-20
+
+17-28;9-31
+8-28;21-31
+8-16;11-17;31-47
+39-42;31-37
+
+9-15
+
+1-11;31-37
+11-24;31-47;9-17
+8-16;31-37;32-48
+
+25-26;39-42;24-50
+7-13;19-41
+9-30
+14-16;33-40;6-28;6-25
+16-24
+1-7
+31-46
+39-42
+23-24
+1-10;14-16;8-16;16-24
+24-45
+14-17
+20-21;13-32;31-45;3-9
+5-8;5-7
+5-8
+5-8
+17-35;17-26;6-7;5-8;19-51
+8-24;8-26;13-33;11-17
+9-31
+48-49
+15-18;6-25
+12-13;25-26;5-7;19-20
+12-13
+14-15;8-20
+33-40
+24-31
+9-19
+38-43
+
+1-9
+15-18;21-31;13-33
+14-16;8-26;17-29
+
+
+1-11
+8-16;33-39
+
+11-38;38-43
+
+0-1;21-31;24-50
+5-7
+6-7;24-45
+
+1-6;8-20;17-28
+
+8-26;11-38;16-29
+17-20
+
+1-6;23-24;8-28;6-28;9-15;3-9
+
+2-3;17-26
+14-17;6-17
+11-38;48-49;40-49
+16-29
+17-25
+15-18;17-20
+25-26
+1-9;8-24;6-25
+8-28;16-17;9-31;5-32
+1-4;6-34
+6-28;16-24;16-29;48-49;40-49
+1-6;6-25;24-38
+32-48
+12-13;15-19;33-39
+27-28;8-26
+8-28;9-17
+14-15;6-7;31-47
+31-46
+14-16;17-25;24-31
+20-21;9-19;19-41
+1-11;7-13
+11-17
+
+15-19
+1-6;31-46
+
+
+11-24;32-44;5-32
+8-16;8-26;3-9
+
+19-41
+17-29
+19-51
+0-1;14-17;15-19;17-26;6-34;16-17;19-41
+16-29;9-30
+17-35
+1-10;14-16;24-50
+24-38
+1-8;9-31
+
+
+14-17;27-28;8-24;17-28;17-24;32-48;7-13
+33-39;39-42
+16-17
+1-10;15-18
+24-38
+
+
+6-8
+8-24
+13-33
+17-24
+1-7;17-29;16-29
+8-28;6-7
+1-11;8-26;6-28;5-32
+1-11
+1-8;14-17;9-17
+
+8-16
+2-3;1-7;11-17
+7-13
+1-9;17-25;9-17
+17-24
+1-4;9-31;9-30;9-19;3-9
+14-16
+33-39;16-24
+17-26;6-28
+
+
+32-48;5-8
+9-30
+13-32;5-8
+1-5;8-16
+32-48;38-43
+2-3;11-17
+1-8;6-34
+32-44
+24-38;24-50
+12-13;20-21
+24-38
+1-4;1-5;14-17;19-20
diff --git a/examples/failures/failures-0.03 b/examples/failures/failures-0.03
new file mode 100644
index 0000000..ee6bd4c
--- /dev/null
+++ b/examples/failures/failures-0.03
@@ -0,0 +1,1000 @@
+11-38
+12-13;8-24;33-39;16-29;31-46;38-43
+1-11;15-19;3-9
+8-24;6-17;9-17;9-19;3-9
+40-48
+24-45
+
+0-1;1-9;6-28;16-17
+17-26
+48-49
+14-15;17-25;9-30
+1-8;17-24;6-17;16-24
+11-24;33-39;31-45;31-46
+1-8;19-41;19-20
+1-6;17-35;33-40;6-8
+0-1;1-7;23-24;32-44
+31-47;32-44;5-32;40-48;24-38
+16-17;48-49;9-17;40-48
+17-25;31-37;40-48
+17-20;6-28;40-48
+8-26;6-7;40-48;19-41
+12-13;5-32;5-7
+25-26
+1-6;31-46
+1-7
+23-24;27-28;6-17;48-49
+11-17;31-45
+1-10;8-26;16-17
+25-26;18-23
+9-31
+
+6-28;6-25;38-43;9-17
+1-4;31-37
+25-26;17-24
+13-32;33-40;40-48;24-45
+8-28;13-33;17-29
+15-18;40-48
+17-20;31-37;9-30;40-48
+14-16;11-17;6-11;48-49;19-20
+21-31;17-36;6-11
+23-24;8-16;6-11
+0-1;17-26;6-11;38-43;24-45
+1-11;6-11
+17-29;6-11;31-47;40-49
+12-13;33-40;7-13
+1-8;11-38;9-19
+39-42
+8-20;8-26;32-48
+23-24;16-24;9-15;5-7
+1-5;39-42;24-31
+1-6;13-32;32-48
+17-20;19-41
+11-17;33-39;6-34;16-29
+31-45;19-51
+17-24;9-31
+14-16
+17-36;5-7
+1-4;17-20;40-49
+33-39
+18-23
+0-1;17-20
+1-8
+9-17
+9-15;24-31
+1-8;33-40;6-34
+15-19;8-28;6-7;6-17;19-41
+1-7;18-23
+0-1;1-4;11-17;16-29;32-44;9-15
+17-26
+17-29
+11-24
+1-10;20-22;13-32;9-15
+31-45;48-49
+27-28;6-8;5-32;19-41
+14-16;8-20;31-47
+0-1;17-28;33-40;31-46;9-15
+1-6;6-17;9-17
+
+
+11-38
+1-8;48-49;9-31
+1-11;14-17;31-37
+6-34;24-50
+15-18;16-29;9-15
+20-22;17-25;16-24;31-46;24-45
+1-7;17-28;33-40
+13-32;6-7;6-8
+1-9
+39-42;9-19
+16-29;32-44;38-43
+8-24
+15-18;9-17
+8-26;17-25;3-9
+17-28
+6-34
+21-31;33-40;9-17
+14-17;39-42
+12-13;6-7;5-32
+20-21;23-24
+8-16;6-8
+6-28;48-49
+15-19;20-22
+12-13;31-47;24-38;3-9
+1-6;40-49;19-51
+14-17;24-38
+17-29;33-40;6-25;16-17;19-20
+6-28;7-13
+17-35
+8-28;11-17
+1-10;11-38
+17-36
+14-17;8-26
+13-33;31-46
+0-1;31-47
+
+33-40
+24-45
+1-11;16-29;32-44
+3-9
+6-34;19-20;19-51
+0-1;14-16;38-43
+11-17;16-17;9-30
+1-4;27-28
+1-10;20-22
+1-7;39-42;32-44;24-31
+1-6;20-22;21-31
+11-24;16-29;19-51
+
+17-28;33-39;6-25;31-45
+8-16;13-33;17-36
+7-13;38-43
+8-28;6-34
+1-9;11-17;31-37;31-47;9-19
+14-15;11-38;33-39;48-49;9-19;19-41
+
+8-26;17-28;16-24;9-19;5-8;5-7
+1-8;23-24;9-17
+32-48;5-7
+1-6;17-28;17-29
+14-16;21-31
+1-4
+8-28;13-33;17-26;6-8;39-42;16-29;19-41
+17-24;31-46;24-31
+
+9-31
+15-19;8-26;6-28;32-44;19-20
+5-8
+16-17;7-13
+8-24;11-17
+27-28
+31-46
+1-9;23-24
+1-11;14-15;8-26;9-15;40-49
+5-32
+1-8
+15-18;17-29
+0-1;33-39;24-31
+1-11;6-11
+17-20;6-11
+23-24;21-31;11-17;6-25
+11-38
+
+16-17
+20-22;8-24;17-25
+13-32;16-24
+6-7;48-49
+8-20;17-24;18-23
+1-6;20-21;11-38
+5-8
+
+17-28;7-13;40-48
+14-15;9-17;24-31
+8-16;8-26;11-24;24-45
+1-7;32-44;48-49;19-20
+23-24;17-26;31-45
+17-35
+8-28;9-19
+40-48
+8-26;17-35;40-48;3-9
+6-11;18-23
+15-18;17-28;40-48
+5-32;40-48
+5-7
+
+17-36;31-45;40-48
+13-32;6-25;39-42;40-48;24-31
+8-28;11-38;32-48
+1-5;1-8;15-18;17-28
+1-10;1-11
+6-25;16-29;9-17
+16-17;5-8
+1-5;17-25;33-39;19-51
+1-7
+20-21;25-26;31-47;19-51
+1-4;1-6;8-20
+17-29
+1-10;6-28;40-49
+23-24;33-40;40-48
+2-3;21-31;5-8;40-48
+15-19
+0-1;5-8;40-48
+12-13;27-28;8-26;6-11;48-49;3-9
+1-7;17-35;17-18;6-17;5-8;40-48
+9-30
+25-26;6-17;9-31
+17-28
+17-18;24-31
+17-26;16-17
+6-7;6-8;19-41
+8-28;17-24;24-50
+31-46
+14-16
+6-17;6-11;31-37
+6-17;19-20
+12-13
+25-26;7-13
+
+8-16;5-7
+38-43
+9-19
+1-7;6-25;48-49;9-19
+13-32;17-36;6-7
+32-44
+17-36;6-7;38-43
+25-26;17-24
+1-9;17-18;17-29
+1-8;15-19;6-25;39-42
+1-11;18-23
+15-18;33-40
+12-13;14-15;38-43;40-49
+20-22;17-24;16-29
+14-16;13-32;16-17
+25-26;8-28;17-20;33-39
+20-21;21-31;9-15;5-32
+7-13;9-31
+1-4;11-24
+0-1;15-18;5-8
+16-29;5-8;40-49
+5-8
+5-8
+14-16;17-36;6-34;5-8;24-45
+1-9;1-11;17-24;17-26;16-17;5-8
+17-24;24-31
+1-11;8-28;8-24;17-20;11-38
+2-3;1-5;1-6;12-13;8-16;8-26;48-49
+11-17;24-45
+12-13;15-19;6-7
+
+1-5;14-17;27-28;17-18;32-44;19-41
+
+8-20;17-35
+1-5;1-9;15-18;13-33;9-31;24-31
+48-49;5-7
+25-26;17-24;19-20
+20-22;11-38
+17-18
+
+13-33;31-47;18-23
+1-6;14-16;8-26;6-34
+1-10;17-18;7-13
+
+21-31;11-17;16-17;9-30
+11-38;6-7
+17-24;9-19
+31-46;9-17;40-49
+39-42;24-31
+1-10;20-21
+12-13;6-17
+14-15;8-28;11-17
+17-25;3-9
+27-28
+8-20;17-28;5-8;24-50
+
+17-24;5-8
+15-19;23-24
+6-7;5-8
+14-15;31-45;9-31;40-49
+8-24;13-32;32-44
+1-7;17-28;6-17;16-24
+2-3;6-25
+38-43;19-51
+
+23-24;6-8;24-50
+9-17
+15-19;6-28
+8-24;9-15
+20-21;25-26;6-7;16-17;19-51
+14-17;17-20;11-17;9-17
+8-16;17-25;11-38
+6-28;38-43
+16-17
+12-13;32-48
+25-26;39-42;48-49
+9-15
+20-22;17-36
+14-16;31-37;19-51
+14-17;17-20;11-38;31-47
+
+8-28;11-17
+31-37
+20-21;33-39
+33-39;5-7
+1-4;16-17;19-51
+11-24;31-47
+6-17
+1-6;12-13
+13-33;6-34;5-7;18-23
+17-26;33-40;9-19
+9-17;24-31;24-45;19-51
+12-13;38-43;24-50
+
+11-38
+17-28
+17-28;17-36;40-49
+1-9;1-11
+1-8;15-18
+8-24;16-29;9-30
+11-24
+17-29;6-25;6-34;31-45
+11-38;7-13
+20-21
+1-6;11-17;6-28;19-20
+5-32;24-31
+1-9;14-15;31-47
+8-28;17-25;33-39;48-49
+13-32
+11-24
+16-17;9-17
+17-24;31-46
+1-10;21-31;38-43
+
+0-1;18-23
+31-47
+16-29;32-48;9-15
+14-15;8-28;13-32;40-49;19-41
+24-31
+1-11;20-22
+17-25;31-46
+8-26;31-45;40-49;24-31;24-50
+1-4
+0-1;1-9;8-24;38-43;18-23
+17-35;17-26;6-7;5-8
+25-26
+6-8;6-17;16-17;5-8
+17-20;39-42
+1-10;13-33;40-49
+
+13-32;31-37;9-15
+15-18;17-29;5-8
+1-6;20-22;27-28;24-50
+15-19;11-24
+14-16;31-37
+9-19;5-7
+17-20
+
+31-37;3-9;19-41
+1-4;8-28;31-45
+1-8;8-24;33-39;32-44
+
+1-9;1-10;16-29
+17-25
+13-32
+16-24
+6-8;40-48
+8-26;6-8;40-48
+18-23;40-48;3-9
+6-28;40-48;24-38;24-31
+17-36;16-29;40-48
+2-3;20-22
+17-29;40-48;24-38
+8-20;48-49;5-7;40-48
+1-11;24-38
+16-24;9-30
+21-31;18-23
+1-4;20-22;27-28;17-24;17-26
+31-45
+0-1;6-25;19-20
+1-9
+6-7;31-37
+8-16;13-33
+15-18;17-25;32-44
+11-38
+13-32;6-17
+1-6;16-29
+17-24
+2-3;1-8
+
+
+1-8;33-39;33-40;9-17
+17-35;17-29
+1-8
+15-19;8-16;8-26;13-33;18-23
+12-13
+14-17;13-33;17-35;9-17
+0-1
+1-7;6-7
+11-38;9-19
+14-16;8-26;9-31
+11-17;33-40;18-23
+27-28;17-28;6-11
+14-17;15-19;6-11;31-46;24-31
+8-26;13-33;17-26;17-29
+0-1;21-31;6-11;48-49
+6-11
+2-3;15-18;20-21;11-38;6-11
+1-11;13-33;6-28;6-11
+12-13;32-44;5-32
+1-8;17-28;31-47;32-44;9-17
+1-10;17-26;33-40
+0-1;23-24;17-28;11-17;24-31
+
+15-18;19-51
+1-4;9-15;24-45
+2-3;5-8;24-50
+31-47;32-48;7-13;5-8;5-7;19-51
+1-9;13-33;11-38
+1-10
+17-28;6-28;16-17;32-48
+33-40;9-31
+14-15;15-18;23-24;25-26;33-40
+0-1;6-17;24-45
+1-11;9-17
+1-8;27-28;16-29;9-15;19-41
+1-10
+
+14-15;15-19;39-42
+1-6;1-8;8-20;17-29;19-41
+20-22;13-33;17-20;6-7;16-24
+1-7;11-17;31-47
+33-40;6-28
+6-8;31-45;5-32
+1-9;8-24;6-17;5-7
+8-20;17-28;6-11;24-45
+33-39;6-11
+12-13;8-24;5-32
+8-28;6-7;6-11;9-15
+1-6;8-26;39-42;9-17
+11-24;16-17;24-50
+9-19
+15-19;17-18;33-39;6-34;9-31;9-19
+2-3;17-26;33-40;5-7
+17-29;6-28;19-51
+17-28;6-17;9-15
+
+2-3;23-24;8-28;16-29
+31-45;31-47
+39-42
+31-37;24-50
+6-28
+19-51
+15-19;8-16;13-33;33-40
+17-20;31-37
+11-24;6-34
+1-6;16-17;5-8
+8-20;17-18;16-29
+0-1;1-10;20-22;31-46;5-32
+31-46;32-48
+1-7;13-32;17-18;31-45;9-15
+1-8;20-21;6-8;39-42
+8-24;11-17
+1-11;33-40;6-7;32-44
+1-9;1-11;33-40;32-44;5-32
+1-7;32-44;19-41
+20-21;9-15
+1-4
+31-46;31-37;9-31;19-41
+40-49;24-31
+20-22;17-29;6-7
+15-18
+8-28
+17-25
+33-40;19-20
+1-7;11-38;7-13
+27-28;17-18;16-17
+17-26
+15-18
+17-18;19-41
+20-21
+
+12-13;24-31;24-50;19-51
+1-6;17-18;19-41
+8-28;33-39
+17-25;6-17;32-48
+9-19
+23-24;11-24;6-7
+13-32;11-17;32-48;5-8
+13-33;9-17;5-8;3-9
+17-35;31-47
+17-29;5-8
+0-1;1-6;24-38
+1-9;5-8
+6-8;6-11;31-45;5-8
+17-20;6-7;24-38;19-51
+8-24
+1-10;12-13;23-24;24-38;19-51
+1-8;27-28;21-31;17-18;6-17
+1-9;25-26;13-33;17-29;24-38
+33-39
+1-5
+32-48
+2-3;27-28;7-13
+20-22;8-28
+24-31
+17-18;33-39
+14-17;17-29;11-24;11-17;5-32
+1-7;31-37;40-48
+17-20;40-48;24-45
+17-26;40-48
+17-25
+2-3;8-20;8-16;31-37;48-49;9-30;24-50
+17-18;9-30;9-17;40-48
+17-29;17-36;40-48;24-50
+8-16
+1-6;40-48;24-45
+15-19;32-44;40-48
+1-11;7-13;40-48
+17-25;39-42;40-48
+6-17;48-49;40-48
+
+14-15;6-11;16-29;31-46;40-48
+6-11;40-48;24-50
+8-26;6-11;40-48
+8-16;6-11;40-48
+21-31;9-30;5-8
+1-7;17-20;6-11;31-37;40-48
+14-16;6-11;40-48
+1-6;9-19;40-48
+17-35;16-24;40-48
+12-13;11-38;31-46;5-32;40-48;19-51
+23-24;17-36;11-24;6-34;31-46
+1-11;8-24
+33-39;24-50
+12-13;14-15;40-48
+17-28;11-17;6-25;38-43;40-48
+17-18;9-30
+1-4;16-29;32-48;32-44;40-48
+20-21;8-16;32-44;38-43
+8-20;24-31
+15-18;15-19;11-24;6-25;32-48;5-7
+11-38
+32-42
+17-28;16-29
+21-31;33-39
+17-28;24-38
+23-24;6-7
+1-8;15-18;8-20;6-34;31-45;5-8
+20-22;32-42;38-43;40-49;24-38;3-9
+13-32;17-20
+15-19;17-29;24-38
+
+0-1;27-28;16-29
+12-13;21-31;32-42;24-31
+1-6;14-16;11-24
+
+13-33;11-38;5-8
+2-3;1-10;20-21
+21-31;9-31;9-30;24-50
+17-29;7-13
+19-41
+8-20;6-7;6-17;5-8
+17-24
+2-3;20-22;33-39
+16-17;5-32;24-50
+21-31;7-13;9-31;18-23
+15-19;11-17;16-24
+8-20;8-24;17-20;19-20
+14-15;6-7;32-44;40-49;3-9
+1-7;25-26;17-36
+11-17;9-17;9-19
+1-11;31-37
+9-19
+23-24;17-24;32-48
+6-17;6-34;19-51
+25-26;17-26;16-29;24-31
+8-26;6-25;5-7;19-51
+1-9;39-42
+1-6
+
+23-24;25-26;32-42
+
+
+6-17;48-49
+12-13;8-16;16-17;31-46
+17-25;39-42
+13-32;17-36;9-31;24-50
+0-1
+1-7;12-13;15-18
+8-26;31-37;32-44
+1-4;21-31
+31-46;5-8
+32-48
+11-17;6-7;5-8
+17-24;6-8;5-32
+8-20;24-45
+15-18;11-17;9-30
+8-16;33-39;38-43;24-50
+3-9
+32-42
+15-19;31-47
+8-24;19-41
+8-26
+14-15;8-28
+1-8;17-24
+32-42;38-43
+8-28
+1-11;12-13;6-25;31-47;5-32
+17-26;40-49
+8-24;8-26;16-17
+14-16;15-19;21-31;9-15
+12-13;17-28
+19-41
+20-22;6-28;39-42
+13-32
+20-22;38-43;9-19
+8-26;17-29;9-19;19-41
+8-24;6-7;32-44
+32-44;9-15
+23-24;11-17
+15-18;15-19;17-20;9-31;24-45
+6-17;39-42;16-24
+1-8;17-36
+27-28;8-20;33-40;16-29;31-47;19-41
+17-24
+8-24
+17-35
+1-7;8-16;38-43
+17-25
+8-26;11-38;32-42;5-7
+12-13;21-31;13-33;32-48
+0-1;7-13
+2-3;40-49
+1-9;33-40
+12-13;20-21;16-17;19-20
+
+6-25
+2-3;13-32
+6-25
+
+
+1-11;25-26;16-29;31-45
+1-6;8-26;13-32;17-26;11-24
+33-39
+1-4;32-44
+
+18-23;24-31
+1-7;17-20;17-36;16-17
+19-20
+0-1;27-28;8-26;6-17;31-37;40-49;19-41;19-20
+16-17;31-45;9-30
+2-3;8-20;11-24;24-38
+15-18;7-13
+20-22;17-28;24-38
+6-7;9-31;9-17;19-51
+1-7;14-16;15-19;11-38;5-7
+
+13-32
+14-15;40-49
+8-24;31-46;32-48;9-19
+15-18;17-24;16-17
+8-28;19-20
+1-4;1-10;33-40;6-17
+14-15;16-29
+21-31
+1-7;15-19;8-20;6-7
+20-22
+31-47;24-31
+6-25
+1-9;16-29
+
+1-10;6-28;31-37;48-49
+8-16;17-28;6-17
+27-28;33-40;16-24;32-42
+
+1-5;1-8;11-38;24-50
+17-35;17-26;6-28;9-31;19-20
+39-42;40-49
+1-5
+8-20;17-25;3-9
+1-4;1-7;15-19;20-22
+17-18;11-17;5-32
+18-23
+
+14-16;23-24
+
+
+1-5;5-32
+16-29;32-48
+3-9
+1-5
+0-1;17-20;17-24;9-15;19-41
+9-15;19-20
+
+1-5;16-17;31-37
+
+1-6;32-44
+8-28;16-29;24-31
+
+1-5;11-17;5-8
+15-18;15-19;6-25;9-17
+5-8;5-7;40-49
+14-16;17-25;6-11;9-19;19-20
+8-24;6-7
+6-11;38-43
+6-11
+5-8
+8-28;24-45
+
+17-26;11-38;31-46
+11-17
+1-5;1-8;24-31;24-50
+16-29
+8-16;17-28;17-36;32-48
+6-8;16-29
+8-16;17-36;6-8
+19-20
+17-18;11-38;31-46
+
+12-13
+23-24;17-18
+14-17;11-24
+6-25;32-44
+1-5;17-29
+15-18;27-28;13-33;17-35;11-38;33-39
+11-38;9-31
+31-37;40-49;24-31
+1-5
+6-7
+8-20;39-42;19-51
+15-19;11-24;16-29
+17-18
+8-24;32-42
+1-7;1-8;17-36;38-43
+6-8;16-17
+6-8
+12-13;17-29;6-28;9-15;5-32;40-49
+6-11
+14-17;6-17;6-11;32-42;19-51
+1-5;13-33;16-29;24-45
+7-13;9-17;3-9
+
+17-26;33-39;48-49;5-32
+6-34
+31-37;9-31
+8-16;16-29;38-43
+17-24;6-17;16-24;9-19
+1-6
+17-35;5-32
+1-8;6-7;6-8
+17-18
+1-9;1-11;13-32;32-42
+1-6;27-28;16-29
+23-24
+8-26;7-13;9-17
+18-23
+7-13;19-20
+48-49
+17-18;6-17;9-17
+14-15;8-16;8-24;13-33;19-41
+6-7;6-17
+17-18;24-31
+
+31-47;9-30;5-7;18-23;24-50
+32-42
+6-25;9-31
+1-11;13-32;11-17;31-45
+1-8;1-9;8-26;17-35;17-29;17-36
+17-36;16-24;9-17
+13-32;39-42
+0-1;15-19;6-25
+20-21;13-33;18-23
+20-22;5-32;24-50;19-51
+11-24
+24-50
+14-16;8-28;17-26;31-45
+1-7
+31-46;32-48
+11-24;16-24;48-49;18-23
+15-18;15-19;16-17
+1-6;27-28;24-50
+6-7;16-29;31-45;19-51
+
+6-8;24-45
+6-28;16-24
+25-26;6-7;24-31
+13-33;6-34;31-45;31-46
+1-9
+11-24;33-39
+17-20;32-42
+15-19;25-26;9-19;5-7
+17-35;5-32
+1-7;8-26;17-20
+38-43;9-15
+8-24;33-39
+23-24
+9-15;9-31
+27-28;11-24
+13-33;39-42
+
+17-24;3-9
+27-28;8-24;6-17
+38-43
+6-28;31-37;9-30
+1-11;8-16;32-44
+21-31;17-36;7-13
+1-7;16-17;48-49
+0-1;1-4;32-48
+1-5;31-47;32-42
+17-26;11-17
+1-6;13-33;6-17
+1-5;11-24;33-39;19-20
+17-20;6-17;24-45;19-41
+2-3;48-49
+8-24;17-29;24-50
+15-19;17-35
+1-9;21-31;6-34;9-15
+8-16;39-42
+
+12-13
+15-18;11-24
+7-13
+0-1;1-9;14-16;20-21;13-33;24-50
+11-17;6-11;16-17
+1-7;15-19;13-32;17-25;39-42;16-24;5-32
+16-24;19-41
+6-11;32-44
+6-11
+6-34
+6-8
+6-7;40-49
+19-51
+2-3;1-10;32-42
+9-19
+1-7;11-24;33-39;16-24;9-19
+14-15;33-40;31-37;32-48;3-9
+14-17;8-28;17-35;17-18;17-36;5-7;24-45
+1-6;33-40
+12-13;19-20;19-51
+1-8;16-17
+1-11;20-22;33-39;6-34;24-31;19-51
+1-11;17-35
+12-13;20-21;17-26;11-38;5-8
+5-32;24-45
+13-33;9-30
+39-42;31-47;32-42
+33-40;31-46
+6-8;16-17
+20-21
+16-17
+27-28
+6-17;32-42
+11-24;6-28;31-47;5-7
+20-22;6-28
+13-32;6-7
+33-40
+
+
+6-28;9-15
+0-1;6-25;31-47
+1-9;17-35
+1-4;12-13;17-36;39-42;24-50
+20-21
+1-7;33-39;24-31
+23-24;16-17;32-48;19-20
+17-20;33-40;3-9
+0-1;1-6;11-24;48-49
+14-16;17-25;6-7
+
+11-17;6-17;31-45
+15-19
+5-32;3-9
+
+9-15
+
+1-11;17-26;31-47;24-45
+8-28;11-38;9-15
+9-19;24-31
+1-4;1-9;20-22;21-31
+1-6;16-24
+1-6;38-43
+9-15
+20-21;9-17
+17-29;6-8
+12-13
+
+32-42
+6-17;31-45
+5-7
+1-10;15-19;8-16;13-33;17-35;16-29;9-31
+1-8;8-16
+
+21-31;17-25;32-44;9-31
+1-7;15-18;33-39;6-7;7-13
+20-22;8-26
+19-41
+17-20
+1-4;17-36;6-28
+1-9;27-28;39-42
+21-31;5-32
+32-42
+38-43
+1-7;20-21;13-33
+14-16;38-43;24-31
+8-16;6-28;31-47
+
+14-16;16-29;32-42;24-38;19-41
+48-49;24-45
+12-13
+17-26;32-44;19-41
+
+1-11;31-46;32-48;32-42;40-49
+1-7;8-28
+14-17;7-13
+1-10;17-18;18-23
+13-33;6-11
+31-45;5-7
+8-24;13-33;6-25;19-41
+9-17
+23-24;21-31;19-20;19-51
+8-26;9-31
+31-37;38-43;19-51
+20-21;8-28;17-20;9-19
+17-24
+15-18;27-28
+6-28;5-7
+15-19
+6-17;5-32
+1-6
+13-33;6-17
+6-7;16-29;32-44;32-42;7-13
+14-15;11-24;32-44
+20-22;8-20;8-28
+1-9;14-16;24-31
+
+8-16;16-24;31-37
+27-28
+17-35
+6-17;24-38;24-45
+13-33
+17-20;16-24;31-37;24-38
+1-6;13-33;17-29;6-7;16-17
+17-26;24-31
+8-24;17-18;32-42
+23-24;21-31
+20-22;8-28;39-42
+18-23;3-9;19-20
+1-4;1-9;17-18;32-48
+8-16;31-47
+1-11;32-42;5-8
+1-11;15-19
+1-4;13-33;17-36;16-17;9-17
+23-24;27-28;24-50
+1-5;39-42;5-8
+13-32;17-18;32-48;18-23
+8-28;17-24
+11-38;11-17;6-25
+31-45
+1-5;39-42
+
+15-19;6-28;32-44
+25-26
+1-5;24-31;24-45;3-9
+31-46;40-49
+21-31;11-38;31-47
+1-5;1-8;6-7;9-19
+25-26
+1-6;23-24;32-42
+1-4;17-18;17-28
+0-1;17-29;7-13
+9-15;5-32;19-41
+19-51
+15-18;31-46
+6-34;6-11;19-20
+6-11
+17-24;17-26
+24-38
+11-24;5-7;19-51
+1-10;14-16;8-16;17-35;33-40;6-17;24-38
+18-23;19-51
+1-6
+
+
+25-26
+1-6;1-11;19-41
+14-17;20-22;9-30;24-31
+17-18;19-51
+8-28;33-40;32-44;40-49
+1-7;25-26;8-20;24-50
+
+33-39;9-17
+14-16;27-28;17-18;6-28
+11-24
+14-17;20-21;17-20;24-45
+25-26;16-29;48-49
+
+1-9;12-13;15-18
+17-25;39-42;32-48
+17-29;11-38;7-13
+20-22;25-26;27-28;16-17;24-45
+8-24;11-24;16-24;32-48;19-20
+33-39
diff --git a/examples/failures/failures-0.04 b/examples/failures/failures-0.04
new file mode 100644
index 0000000..b8539fb
--- /dev/null
+++ b/examples/failures/failures-0.04
@@ -0,0 +1,1000 @@
+1-4;8-26;33-40;31-45;38-43;9-15;9-20;40-49
+15-19;11-24;6-8
+8-20;17-24
+9-30;3-9
+21-31;6-8
+2-3;1-4;25-26;6-25;31-46;32-48;32-44
+23-24;19-51
+1-11;33-39;48-49;5-32;24-50
+6-28;31-46;32-44;7-13;9-17
+1-7;8-28;6-17;32-48
+2-3;13-33;5-32
+0-1;15-18;17-35;17-20;6-34;9-20;24-38
+15-19;17-25;6-8;31-46;32-44
+8-16;6-34;40-48;19-41
+33-39;40-49
+
+9-20
+1-8;33-40;16-29
+20-21;27-28;32-48;24-50
+1-8;20-22
+14-15;15-19;11-38;33-40;48-49
+14-16;21-31;3-9;19-41
+6-25;19-51
+27-28;17-36;6-17
+2-3;14-16
+17-29
+25-26;8-26;13-32;16-24;9-15
+1-9
+17-24
+31-46;19-20
+1-11;11-38;6-8;9-20
+16-24
+12-13;14-15;21-31;13-32;17-25;38-43
+1-7;1-11;11-24;31-45;5-7
+17-26;11-17;7-13;5-32;40-49;3-9
+13-32;31-47;9-20;5-32;24-50
+33-39;9-20
+8-28;6-11;32-48
+12-13;6-8;6-17
+15-19;8-28;11-17
+17-28
+1-8;6-28;6-11
+15-18;8-26;17-24;9-19
+20-21;17-35;33-39;9-19
+14-16;11-38
+13-32;17-36;6-7;9-20;24-45
+8-28;13-33;17-26;9-31;5-8;24-38
+
+17-28
+8-24;16-17;5-8
+20-22;9-20;24-50
+1-4;31-45
+2-3;1-7;6-7;24-31
+1-11;3-9;19-41
+11-17;38-43;24-31
+27-28;9-20;5-7
+14-16
+8-26;17-26;6-17;32-44
+2-3;20-21;17-28;6-34;39-42
+8-26;9-31
+16-24
+25-26;7-13;40-48;24-38
+31-45;5-32
+0-1;2-3;8-24;24-31;19-20
+8-28;19-20
+0-1;13-32;31-37
+6-17;40-48
+0-1;8-16;17-28;5-7
+0-1;48-49;5-32
+2-3;14-16;8-28;17-35;17-24;32-48;24-45
+2-3;1-5;17-36;9-30;24-45
+1-8;23-24;17-29;33-40;16-17;19-41
+15-18;6-34;16-24;31-47;9-20;9-30;24-31
+11-38;31-45;32-48
+1-6;25-26;16-17;31-45;31-47;32-44
+2-3;8-26;6-11;24-38
+1-5;14-17;13-32;17-26;9-15;9-17
+1-11;14-17;11-38;9-20
+17-35;17-20;6-7
+15-18
+1-9;40-49
+17-24;6-8;24-31;24-50
+
+13-32;6-25;40-48
+24-50
+12-13;27-28;13-32;13-33
+14-15;21-31;6-28;39-42;32-48;9-15
+14-17;6-8;9-20
+31-46
+16-29;7-13;9-17;5-8;5-7
+0-1;17-18;24-45
+1-8;12-13;14-16;17-36;31-47;32-48
+16-29;24-45
+1-9;31-47;5-32;40-48;24-45
+33-39
+1-4;11-24;32-48
+1-4;12-13;13-32;9-31
+1-11;9-19
+14-17;8-20;39-42;9-19;40-48;19-41
+12-13;31-46
+1-11;20-22;6-17;16-24
+1-6;15-19;17-25;48-49;9-20
+20-22;25-26;11-38;9-15
+14-16;13-32;11-24;6-7;16-29;31-45;31-46;9-20;18-23
+17-35;32-44;40-48
+12-13;31-37;18-23;40-49
+1-10;8-16;11-24;16-17
+15-19;8-20;32-44;5-32
+1-8;15-19;8-26;9-20
+11-24;38-43;40-48
+6-34;31-37;3-9
+1-7;6-17
+6-17;9-30;40-48;3-9
+25-26;33-40
+1-10;39-42;19-51
+1-9;17-36;31-45;9-20;19-20
+1-5;20-22;31-45;40-48;40-49;19-20
+2-3;1-8;1-9;20-22;17-25;6-11
+1-4;20-22;17-26;39-42;9-31
+0-1;17-26;9-17
+12-13
+0-1;15-19;8-24;11-24;6-17;7-13
+2-3;1-5;1-11;21-31;6-25;38-43
+12-13;8-16;17-29;33-39;6-7
+11-17
+1-7;8-20;11-24;19-41
+21-31;17-24;11-17;16-17
+14-15;14-17;9-20;24-50;19-51
+2-3;6-28
+16-29
+6-7;24-38;24-50
+33-39;16-24;9-20;24-45
+16-17;24-45
+0-1;21-31;24-31
+19-41
+16-29;18-23;24-31
+6-17;9-20;5-7;24-31
+1-8;21-31;16-24
+17-35;17-36
+6-8
+15-19;17-29
+0-1;8-28;48-49;9-30
+8-26;17-20;6-28;39-42;16-24;3-9
+0-1;15-18;17-28
+21-31;6-7;6-25
+11-38;33-39;33-40;9-20;5-7
+14-16;33-40;9-20
+
+38-43;9-15;18-23;24-50
+1-7;19-20
+1-6;12-13;13-32;9-20
+17-24;6-28
+8-20;19-51
+1-10;6-17;9-19
+6-11;9-19
+11-38
+13-32;17-25
+24-31
+2-3;1-5;9-15;18-23
+9-17
+8-16;17-35;11-17;6-28;9-20
+14-16;17-26;24-31
+1-5;17-35;17-36;3-9
+1-6;1-10;8-16;13-33;5-32;24-31
+8-28;11-17;6-17;39-42;24-45
+0-1;25-26;17-24;9-20;24-38
+8-28;17-25;5-32;19-41;19-20
+17-35;6-25;31-37
+0-1;8-16;6-8;6-11
+8-28;17-20;17-28
+8-24
+33-40;32-44;9-20;24-38
+6-25;40-49;24-31
+14-16;21-31
+11-38;33-40;31-47;32-44;7-13
+0-1;1-9;6-7;9-20;9-30
+14-15;17-25;17-29;16-24;9-20;24-38
+15-19;16-17;31-46;9-31;9-30;5-8
+1-8;23-24;17-28;39-42;24-31
+8-20;6-25
+1-7;8-16;6-34;5-7
+
+16-29;9-20
+5-8
+14-16;17-36;19-41
+20-22
+1-4;25-26;9-20
+8-20;17-20;11-17;40-49
+6-11
+13-32;33-39;32-42
+25-26;17-28;17-29;9-20
+20-21;9-20;5-7;19-51
+23-24;6-7;6-8
+1-6;6-17;6-11;31-47
+8-28;5-32;24-38;3-9
+14-15;17-35;6-25;6-34;7-13
+1-9;13-33;32-42;24-50
+1-7;9-20;5-32
+2-3;1-9;17-28;6-17;19-51
+20-22;25-26;19-20
+20-21;20-22;5-32;19-20
+27-28;8-16;13-33;6-17
+1-10;15-19;20-22;17-26;11-17;31-37;40-49;24-45
+27-28;17-26;24-45
+1-8;32-48;9-20;9-31;24-50
+1-6;24-31
+0-1;6-25;16-24;38-43
+14-16;23-24;17-24;11-38;48-49;9-19;24-31
+0-1;1-4;8-26;32-48;9-30;9-19;18-23
+1-4;1-11;17-18;9-20;19-41
+17-28;31-47;48-49;9-30;24-38
+11-38;3-9
+6-11;7-13
+15-18;31-47
+
+20-21;8-16
+2-3;1-11;17-29;6-8
+
+0-1;1-10;14-15;17-28;33-39;18-23;3-9
+1-9;9-15;9-20;19-41
+0-1;15-19;25-26
+2-3;15-19;17-18;17-24;11-38;6-28;38-43
+32-48
+17-35;11-17;6-7
+8-26;17-35
+1-8;6-8
+8-26;5-8
+1-6;1-8;12-13
+1-7;25-26;32-48
+1-7;1-10;17-35;5-32;18-23
+20-21;6-11;9-15;9-20
+18-23
+1-4;12-13;32-48
+0-1;1-9;31-45
+8-16;17-18;6-25;39-42
+12-13;13-32;17-18;11-24;6-8;18-23;3-9
+12-13;16-24;9-20;5-7
+1-11;20-22;17-24;11-38;32-48
+8-24;9-17
+27-28;16-17;32-44
+
+15-19;17-25;6-34;16-24;32-48;18-23
+1-10;8-26;32-44;24-31;19-41
+14-16;11-24;9-17
+15-18;27-28;17-28;17-26;32-42;38-43;24-31
+17-26;32-48;9-20;9-30;9-17
+16-29;9-20
+11-24;6-28
+14-15;33-39;6-17;32-42
+25-26;39-42;31-47
+8-16;11-17;32-48
+17-25;31-47;32-42;9-20;24-31
+8-24;21-31;17-35;16-29
+17-36;6-7;31-46;9-31;24-31
+1-4;1-9;14-15;17-20;17-18;11-17;32-42
+1-4;21-31;13-33;31-45;31-37;7-13
+1-9;23-24
+25-26;27-28;17-25;9-30
+1-11;8-20;16-17;31-46;9-20
+8-26;17-29;31-47;5-7
+1-6
+12-13;17-24;6-11;31-47
+25-26;17-18
+6-7;9-19;5-32;40-49
+11-24;32-42;9-19
+15-19;20-21;13-33;24-45
+14-16;27-28;8-20
+39-42;31-45;32-42
+1-7
+38-43;24-31
+8-16
+1-7;6-11;16-24;24-31
+1-8;27-28;40-48
+6-25;32-44;5-8;40-49
+15-18;17-18
+39-42
+1-7;20-21;25-26;17-18;40-48
+17-35;6-25;19-41
+8-28;11-17
+24-38
+14-17;17-35;11-38
+1-6;8-28;9-15;9-30
+7-13
+8-28;17-29
+20-22;17-20;9-30;19-51
+12-13;39-42;32-42
+1-5;1-6;1-9;17-26;33-40;40-48;24-38
+17-26;16-24;19-41
+17-18;32-42
+14-17;19-51
+1-8;17-24;9-20;9-30;9-19;19-51
+12-13;14-17;15-19;9-15
+14-15;17-20;17-24;31-45
+16-24
+1-6;11-24;16-29;38-43;40-49
+48-49
+1-8;9-31;40-48;24-31
+25-26
+2-3;11-17;48-49;24-31
+1-9;14-17;13-33;17-29;17-36
+1-4;14-17;8-24;17-18;33-40;6-7;6-8;9-15;19-51
+20-22;38-43;9-19;5-7
+1-9;14-15;11-24;32-44;5-32;40-48
+1-6;15-19;40-48
+1-11;25-26;17-24;6-11;5-7
+12-13;8-24;17-25;16-24;5-32;19-41
+1-7;17-20;17-18;31-37;32-44;24-38
+1-10;3-9
+12-13;20-21;23-24;5-8;40-48;19-51
+1-5;1-9
+1-10;8-20
+13-33;11-17;18-23;24-38
+20-22;8-26;11-17;5-32
+21-31;17-35;33-39;33-40
+31-45;24-31
+14-15;23-24;17-25
+11-24;9-30;24-31;24-50
+1-10;17-20;6-8
+23-24;9-19;5-8;40-48
+8-20;8-24;11-24;9-19;24-45;19-51
+1-5;8-28;6-7
+16-29;16-17
+1-4;14-16;8-28;16-24;9-31;24-31;19-41
+20-22
+8-16;17-28;18-23;40-49
+1-9;8-28;8-26;17-25;5-7;24-31
+6-8;32-48;24-38
+11-38;33-39;6-17
+12-13;17-20;17-26
+14-17
+6-7;38-43
+14-15;25-26;9-17;24-31
+6-28
+8-24;11-24;7-13;40-49;24-31
+27-28;6-34;16-29;18-23
+16-29;16-17;18-23;19-41
+27-28;17-29;16-29;24-45
+17-35;32-48;24-45;24-50
+1-8;31-45
+25-26
+1-8;14-17;13-32;6-11
+
+1-8;8-26;17-29
+8-16;13-33;17-36;32-42;9-17;24-45
+14-15;8-24;6-11;31-45;18-23;24-45
+2-3
+17-20;19-51
+1-4;8-20;8-16;3-9
+
+8-28;48-49
+33-39;33-40;9-30;5-32;40-49
+8-28;6-28;9-17
+20-21;11-38;6-7;6-25;6-8
+25-26;8-28;16-29
+5-8;18-23;24-50
+1-9;15-18;17-20;11-17;40-49;19-41
+38-43;9-17
+15-19;17-18;6-25
+1-9;16-24;9-15
+12-13;14-16;19-51
+14-17;11-17;5-8
+14-17;16-17;31-47;7-13
+1-8;12-13;8-16;6-25
+6-34;31-37;31-47
+8-20;16-29;5-32
+48-49;24-50
+17-35;18-23
+17-28;16-17;9-15
+1-5;1-11;20-21;17-28;6-7;9-15
+6-7;31-37;24-31
+14-15;39-42;32-44
+1-6;14-16;14-17;23-24;17-26;6-17;6-34;31-37;24-31;19-20
+17-29;5-7
+12-13;13-32;32-48;9-19;24-38
+0-1;21-31;17-35;9-19
+15-18;8-26;16-24;48-49
+0-1;12-13;33-40
+17-20;16-29;32-48;24-31
+1-9;6-7;48-49;24-38
+14-16;31-46
+17-28;17-25;6-11
+
+32-48;5-7
+19-51
+0-1;20-21;20-22;6-11;39-42;32-42;38-43
+15-18;15-19;20-22;11-38;31-45;48-49
+0-1;1-5;13-32;11-24;32-48
+1-6;33-40;32-42;9-30
+48-49;24-31
+11-24;7-13
+15-18;39-42;31-47;9-20
+1-4;8-28;13-32;17-36;6-25;6-17;32-42
+8-26;13-33;17-29;31-47
+1-5;8-28;11-24;11-17;16-24;9-17
+14-16;32-42
+15-18;8-28;48-49
+1-11;31-45;38-43
+8-16;13-32;7-13
+48-49;9-31;5-32
+1-10;20-22;23-24;17-28;11-38
+27-28;11-24;6-25
+1-9
+20-21;5-8
+31-37
+1-7;13-32;17-25;9-31
+15-18;48-49;19-20
+1-10;24-45
+1-8;32-44;5-8
+8-26;31-37;31-47;19-41
+1-10;23-24;3-9
+13-32;6-8;39-42;31-37;31-47;32-44
+1-6;14-15;17-36
+11-38;31-46;31-47;19-20
+1-9;23-24;17-26
+17-25;11-38;6-11;31-46
+15-18;13-33;17-28;17-36;33-39
+1-10;1-11;14-16;15-19;17-24;6-17;6-34;16-24;24-38
+21-31
+16-17;7-13
+14-17;20-21;6-11;9-30
+
+16-24;19-20
+1-7;8-28;33-39;3-9
+16-24;31-37;3-9;19-20
+13-32;6-34
+1-6;8-28;16-17;32-42
+1-10;5-32
+1-8
+1-9;21-31;17-29;6-25;16-17;32-42;9-19;5-7
+17-20;9-19
+20-21;13-32;13-33;17-24;6-28
+21-31;32-42
+1-10
+38-43;9-15;24-31
+21-31;13-32
+12-13;15-19
+8-24;40-49
+1-4;17-36;11-17;6-8
+1-6;8-16;11-38;19-51
+2-3;21-31;17-25;6-34
+32-48;19-41
+11-24;3-9
+15-19;24-50
+25-26;8-20
+17-29;6-28
+0-1;33-39;9-20
+1-6;8-24;16-29;9-20
+15-18;8-24;5-8;24-45
+6-34
+6-17
+32-42;48-49
+25-26;31-45;32-48;7-13;5-32;19-41
+1-8;13-33;6-11;5-8
+14-15;8-28;9-31
+20-22;8-16;21-31;9-15
+17-26;17-29
+15-18;20-21;17-26;32-42;38-43
+1-7;17-29;38-43;24-38;19-51
+8-16;17-35;6-7;39-42;24-50
+1-9;17-28;9-31
+1-7;1-10;8-26;33-39;32-42
+1-9;14-17
+14-17;13-33;39-42;9-17;40-49;24-45
+1-5;1-10;1-11;27-28;32-42;24-38
+14-16;13-32
+17-35;17-29;11-17;16-29
+15-18;32-42
+20-22;8-26;17-20;11-38;6-7;16-17;18-23;3-9
+
+20-22;6-17;38-43;5-32;24-38
+1-5;20-22;32-42;18-23
+8-20;6-28;32-44
+1-7;23-24;17-24;40-49
+31-47;32-42
+0-1;8-16;33-39;16-24;32-44;7-13;3-9
+31-47
+0-1;14-16;15-18;39-42;19-41
+1-8;20-21;17-29;6-7
+25-26;16-29
+8-26;17-18;17-26;16-24;31-37;7-13
+1-8;33-40;6-25;16-24;18-23
+
+33-39
+1-4;14-17;17-36;6-17
+31-37;9-19;40-48
+1-5;12-13;6-28;9-19
+0-1;15-18;17-24;19-41
+16-29
+23-24
+1-5;1-10;1-11;27-28;11-24;31-37;9-15
+1-8;15-18
+31-45;9-30;19-20
+6-7;6-11;31-45;24-38;24-50;19-20
+1-6;27-28;8-16;8-26;13-33;9-30;3-9
+33-40
+
+1-7;1-10;33-39;6-11;16-29;5-7
+17-20;17-26;6-25;6-17;32-42
+0-1;1-6;17-26;16-29;31-46;5-8
+1-8;16-17;48-49
+11-24;39-42;32-42;7-13
+14-15;6-28;6-8;24-31
+18-23
+20-21;20-22
+
+1-4;17-20;17-36;31-46
+0-1;1-6;11-38;16-17;38-43;24-50;3-9
+16-29;9-31
+0-1;1-9;19-41;19-20
+8-26;17-24;6-28;16-29;19-20
+0-1;17-18
+8-16;21-31;17-29;18-23
+1-8;17-25;11-17;48-49
+40-49
+6-8
+1-7;8-20
+2-3;17-20
+15-18
+12-13;17-29;32-48;9-31
+1-6;14-15;40-48
+25-26;5-32
+13-33;17-28
+1-10;14-16;14-17;17-35
+1-6;27-28;17-35;17-36;5-7;24-31
+1-8;12-13;8-20;17-25
+17-18;32-42;24-45
+
+1-4;1-5;1-6;15-18;6-28;16-29;31-45;24-38
+1-4;20-21;17-29;16-24;32-42
+1-10;6-7;6-11;40-48
+0-1;15-19;9-30;19-41
+
+1-6;1-10;14-17;6-8;39-42;32-48;7-13;19-51
+17-25
+0-1;33-39;39-42;31-45
+14-16;20-22;8-26;17-20;17-18;11-38;6-11;5-32;40-48
+20-22;32-44
+15-18;21-31;13-33
+14-15;8-28;16-29;3-9
+17-26;6-34;32-44;9-19
+0-1;17-26;33-39;6-8;9-19;19-41
+25-26;8-20;11-24;18-23
+0-1;20-21;32-44;5-8
+1-8;38-43
+
+15-19;21-31;6-11;9-20;5-8
+1-8;1-10;32-48
+17-18;6-34;39-42
+21-31;33-39;5-32
+15-19;16-29;24-45
+1-4;17-35;32-48;48-49;24-38
+1-4;1-7;27-28;8-26;21-31;17-36;16-17;18-23
+0-1;11-17;6-17
+1-9;17-20;7-13
+
+1-11;31-45;24-38
+
+1-9;17-29;11-17;16-29;7-13;9-17;18-23;24-50
+1-6;14-16;20-21;23-24;17-18;11-17;16-24;9-17
+
+1-11;17-18;17-25;32-42;40-49
+16-29;48-49
+9-30;24-31
+16-24;32-42;9-17;5-32
+8-28;5-7
+17-20;17-29;31-37
+1-8;8-28
+1-9;6-8;6-17
+14-15;13-32
+8-20;8-16;13-33;31-46;19-41
+1-7;15-19;20-22;17-18;17-25;40-49
+20-22;33-40;6-7;48-49;24-31
+24-45
+1-4;8-24;32-44;24-45;24-50
+1-4;14-15
+17-29
+1-11;17-35;17-36;32-44;5-7
+12-13;8-20;48-49;19-20
+19-20
+1-7;6-17;16-29;38-43;18-23
+17-18;17-25;5-32;40-49
+16-24;48-49
+1-5;17-26;11-17;33-40
+12-13;17-26;31-46;7-13
+8-16;13-33;16-17;5-8
+8-26;17-29
+8-20;17-35;16-24;31-45;31-46;31-47;18-23
+1-6;8-24;6-7;48-49
+1-5;39-42
+20-21;17-18;5-8;3-9
+6-8;16-17
+25-26;27-28;48-49;7-13;19-51
+1-8;12-13;6-8
+
+1-8;17-24;48-49;38-43;5-32;24-38
+21-31;9-19;24-45
+1-4;9-19
+25-26;31-45;48-49;5-7
+21-31;17-20;6-17;16-24
+1-7;14-15;17-18;17-36;9-31;9-30;24-38
+1-11;6-34
+17-25;11-17
+8-26;13-33;9-15;9-30;3-9
+14-17;23-24;39-42
+1-6;14-17;8-16;19-41
+31-37;24-38
+0-1;33-39;38-43
+11-38;6-28;31-37;48-49;9-17;24-50
+15-18;8-28;6-34
+1-9;17-35;17-18;6-25;6-11;16-17;5-7
+0-1;19-20
+1-8;11-24;7-13
+24-31;19-41
+15-19;16-17
+14-17;33-39;32-42;48-49
+1-10;27-28;11-24;11-17;31-47
+2-3;14-16
+1-6;17-20
+1-4;1-7;15-18;20-21;20-22;31-37;9-17;19-51
+1-4;20-22;16-17;24-45
+0-1;20-22;27-28;17-24;17-36
+17-18;24-50
+1-9;14-17;24-38
+8-28;9-15;9-30
+1-11;14-17;17-25;17-26
+17-26;5-32
+5-8
+1-5;48-49;9-15;3-9
+2-3;1-10;14-16;15-18;19-20
+17-18;19-20
+1-7;16-29
+1-8;1-10;15-19;17-18;11-38;5-7
+13-33;7-13;24-50
+2-3;1-6;48-49
+14-17;13-32;6-34
+14-15;9-30
+11-38
+9-31
+1-10;15-18;8-16;11-17
+39-42;16-29
+8-24;13-33;40-49;3-9
+8-16
+0-1;1-4;6-11
+14-17;8-26;17-20;16-24
+14-17;31-45;32-42
+8-28;38-43;9-31
+11-38
+1-11;14-15;20-21;27-28
+8-20;11-24;9-31;19-41
+17-24
+15-19;17-28;33-39;16-29;9-19
+14-16;9-19
+0-1;20-22;27-28;6-11
+20-22
+0-1;1-7;1-9;14-17;17-20;16-17;5-7
+11-24
+1-10;17-29;33-40;6-28;16-24;16-17;9-20
+8-20
+1-5;11-17;16-17
+6-7;16-29
+25-26;8-16;11-38;6-8;31-46
+13-33
+0-1;17-20;31-45;19-51
+8-28;17-24;39-42;31-46;5-32
+1-10;6-25;6-17;9-15
+14-15;8-20;8-28
+1-11;17-26;17-36;16-24
+20-21;48-49
+2-3;8-28;16-29
+1-10;23-24;6-8
+1-5;15-19;32-44;9-30
+1-9;1-11;6-28;16-29;5-8;24-31
+13-33;9-30;5-8
+17-35
+
+17-35;31-37
+20-21;8-16;6-7;5-8;19-41
+8-26
+1-10;23-24;21-31;39-42
+17-18;18-23;3-9
+15-18;8-16;6-17;32-42
+1-5;31-37;5-32
+25-26;21-31;9-17;24-31
+14-15;6-11
+1-8;16-29;24-38
+1-10;11-38;33-40
+1-8;31-37
+14-16;20-22;40-49
+1-10;15-19;20-22;27-28;31-37;48-49
+15-18;21-31;17-36
+15-18
+6-7;16-29;19-51
+1-7;23-24;8-28;6-11;31-45;5-32;3-9
+8-20;21-31;13-33;6-25;16-29;31-45;31-47
+2-3;8-26;17-25;7-13
+12-13;5-32;40-48
+17-20
+19-20
+1-6;48-49;24-45;3-9
+15-18;11-38;33-40;5-7;40-48
+6-7;6-34;9-15
+17-18;9-20;9-31;24-50
+1-10;8-20
+17-35;6-8;32-44;9-30
+17-28;11-24;16-29
+1-9;17-24;48-49;40-48
+9-19
+17-29;9-19;40-49;24-38
+15-19;13-33;17-25;6-34;5-32
+17-26
+1-4;8-20;8-26;33-40;9-15
+11-24;5-7
+12-13;6-34;16-24
+27-28;17-36;24-38
+8-24;17-28;24-50;19-20
+39-42;16-29;40-48
+6-25;19-41
+32-42;3-9
+1-10;24-31
+20-21;8-20;17-24;6-28
+14-15;32-42;40-48
+14-16;33-40;31-45;5-8
+1-7;5-32;40-49;24-45
+21-31;17-28;11-24;16-17;31-45;9-15;24-45
+1-8;1-9;17-28;32-42;3-9
+48-49
+17-20;6-25;9-15;40-48;19-51
+24-31
+1-6;8-24;17-35;17-25;11-38;6-17
+9-31
+23-24
+38-43;19-20
+1-4;31-45;40-49;19-20
+14-16;17-20;5-7
+2-3;14-17;8-16;17-36;5-32
+1-5;11-17;6-28;31-46;9-31
+8-28;21-31;31-47;24-31
+20-21;20-22;17-36;19-51
+1-11;20-22;8-28;17-25;33-39;31-47;9-30
+1-9;15-19;31-37
+0-1
+1-11;6-7;9-30;18-23;40-48
+0-1;27-28;8-24;40-49
+8-26;39-42;19-41
+14-17;9-17;24-45
+1-6;1-9;14-17
+1-5;17-24;33-39;24-45
+11-38;40-48
+12-13;27-28;19-51
+13-33;6-25;31-46;3-9
+21-31;9-17
+25-26;17-26;31-45;18-23;24-50
+8-26
+17-29
+11-17;32-42
+11-24;31-37;9-15;3-9
+1-5;1-7;17-20;17-29;17-36;32-44
+11-38;6-17
+2-3;17-35
+6-11
+15-18;33-39
+14-15;8-26;33-40;6-25;31-37;9-19;5-32;5-8;24-31
+20-21;8-24;13-33;9-19
+2-3;17-20;17-25;9-17
+6-11
+
+13-32;11-38
+1-8;1-9;38-43;9-20;5-32
+1-10;13-33;17-29;31-47;32-44;9-31;19-51
+31-37;48-49
+1-6;1-8;23-24;8-16;6-8
+5-8
+12-13;8-24;38-43
+20-21;13-32;11-17;16-24;9-30
+6-17;31-37;5-32
+33-39;33-40;39-42;48-49
+27-28;17-24;9-30
+12-13;8-26;17-29
+15-18;15-19;20-22
+6-34
+1-4;8-28;16-24;32-42
+14-15;13-32
+8-28;16-17;7-13
+1-9;6-28;32-42;9-17
+1-7;1-11;15-19;21-31;13-33;24-50
+15-19;17-36;24-45
+6-7;24-45
+8-24;21-31;13-32;33-40;31-45
+20-21;17-35;9-17;3-9
+6-25;5-32
+15-18;19-41
+
+8-20;17-24;6-28
+1-5;14-16
+13-32;17-26
+8-26;17-26
+1-9;9-17;19-51
+11-24
+21-31;24-31;24-50
+20-21
+2-3;6-7;7-13;19-20
+1-4;20-22;8-20;39-42
+1-4;1-10;15-18;9-17;19-20;19-51
+1-4;1-7;15-19;6-11;5-7
+1-5;15-19;17-25
+17-29;6-8;31-45;32-44;40-49
+11-38
+1-11;8-28;13-33;17-36;3-9
+16-24;19-41
+8-20;8-28
+1-11;32-42;38-43
+2-3;15-18;8-28;8-26;9-31;5-8
+1-11;20-22;6-28;19-51
+27-28;33-39;33-40
+1-6;32-42;9-30
+1-5;14-16;25-26;17-29;39-42;31-46;40-49
+33-40
+12-13;11-17;6-7;9-31;24-45
+17-24;9-19
+0-1;9-15;9-19
+1-7;11-38;16-17;40-49
+0-1;15-18;25-26
+1-8;12-13;15-19;13-33
+1-5;20-22;17-24;31-37;9-20
+20-22;19-51
+1-4;31-46;31-47
+1-4
+1-6;8-16;21-31;17-18;33-39;16-17;24-50
+1-10;13-33;17-20;16-29;31-46;9-31
+25-26;17-25;17-36;19-51
+1-5;1-11;16-17;19-41
+17-29;6-8
+38-43
+1-11;11-24
+6-17
+1-5;1-6;1-10;33-39;7-13;24-31
+25-26;6-11;19-20
+8-26;17-26;11-17;16-17;48-49;24-31
+14-16
+17-18;6-25
+48-49;19-41;19-51
+1-9;31-47;32-42;5-32;24-50
+20-21;23-24
+13-33;17-28;17-24;17-25;31-47
+1-8;27-28;32-42;9-30
+9-19
+1-5;8-16;8-24;40-49
+6-34;48-49
+1-4;6-7;38-43;9-30;5-7;24-45
+23-24;17-18;9-15
+
+1-10;14-16;17-18
+15-18;23-24;19-41;19-20
+
+1-9;1-10;20-22;8-20;17-20;17-36
+12-13;20-22;23-24;8-24;5-8;24-50
+12-13;27-28;17-35;17-29;6-34;9-19;5-7
+1-11;20-22
+17-35;17-24;17-29;6-8
+14-15;13-33;9-15;3-9
+31-47
+12-13;17-18;11-17;39-42;31-37;5-8;40-49
+15-18;6-34;16-24;31-47;19-41
+0-1;33-39;38-43
+2-3;8-16
+2-3;23-24;17-20;32-48
+1-8;31-37;32-44
+20-21
+1-10;20-21;16-24
+1-8;23-24;17-25;32-42
+1-4;6-34;32-44;38-43;24-50
+1-10;14-15;11-24;39-42;32-48;5-7;24-31
+15-18;6-7;24-45
+1-9;14-16;17-18;9-19
+13-33;6-11;9-19
+1-7;1-9;17-24;39-42;9-17
+
+14-17;17-29;17-36;33-40
+17-18;6-7;31-37;24-45
+15-19;8-26;17-28;17-26;6-28;32-42;24-50;19-51
+6-11;19-41
+9-30
+13-33;11-24;7-13;9-31;24-31
+17-35;17-18;9-17;5-32
+1-8;14-15;8-24;9-15
+33-39;32-42
+40-49
+14-17;31-46;24-38;19-20
+2-3;14-17;17-28;11-24;11-17;6-7;24-31
+1-5;24-38
+15-18;17-26;11-17;32-48
+24-50;3-9
+24-31
+15-18
+1-4;17-18;33-39;24-38
+1-7;8-28
+21-31;24-45
+8-28;5-8
+14-17;15-19;13-33;39-42
+14-17;15-19;25-26;17-24;31-45
+1-5
+23-24;8-16;21-31;17-25;17-26
+27-28
+19-41
+1-11;21-31;17-25;32-44;24-45
+17-29;19-20
+12-13
+32-44;32-42
+14-17;8-20;17-18;33-39;6-25;24-50
+12-13;14-17;11-17;31-46
+32-42
+17-35;5-32;24-38
+1-6;12-13;16-17;9-31;40-49
+1-7;11-38;39-42;40-48
+13-33;17-24;17-25;6-11;32-42
+12-13;20-21;23-24;17-29;16-24
+1-4;1-5;1-6
+1-4;17-28;32-42;24-38
+17-20;31-37;40-48
+6-11;24-50
+1-11;6-7;16-24;38-43
+17-26;17-36
+8-28;6-17;40-48;19-20
+9-17;5-8
+1-9;17-25
+17-29;31-47
+17-20;31-37;9-31;5-32
+25-26;39-42;16-29;31-47;5-7
+
+8-26;31-45;9-19;3-9
+15-19;6-7;9-19
+17-24;6-34
+1-6;14-16;20-21;16-24;38-43;18-23
+17-25;6-17;40-48
+23-24;8-16;11-24;32-48;5-32;19-20
+1-8;17-29
+
+1-8;27-28;17-35;17-20;6-7;24-31
+8-16;17-18;11-17;16-24;16-29
+20-22;6-34
+20-22;16-17
+8-16;11-24;6-25
+27-28;17-28;6-8;5-8;3-9
+15-18;20-21;16-24;31-47;40-48
+13-33;17-20;48-49
+1-8;17-28
+1-6;8-26;17-36;31-47;7-13
+6-34;16-29;16-17;31-45
+6-17;48-49;5-8;40-49;3-9
+15-19;16-29;5-7;40-48
+21-31
+6-25
+17-28;9-17;18-23
+2-3;1-6;5-32;40-48;40-49
+17-24;32-42;48-49
+11-38
+14-16;17-36
+1-8;8-16;24-50
+20-21;8-24;6-28;6-11;16-29;9-17
+1-6;1-8;12-13
+2-3;8-16;13-33
+8-20;3-9
+31-47;18-23
+13-32;17-20;17-26;9-17;24-38
+17-26;31-45;7-13
+11-38;9-17
+1-6;1-11;17-35;6-28;16-29
+12-13;6-28;9-30;19-41
+1-7;17-36;6-7
+1-9;20-21;27-28;33-40;6-8
+8-20;13-32;32-44
+24-50
+20-22;31-46;7-13;5-7;18-23
+20-22
+17-20;9-31
+25-26;8-16;21-31;13-33;31-45;24-45
+13-32;17-35;6-8
+8-28;17-29;16-29
+15-19;8-26;32-48;9-20;9-17
+14-16;13-32;31-46;32-42;40-49;19-51
+8-28;11-38;33-40;9-31
+11-17;31-47;5-32
+6-28;24-31
+23-24;13-32;17-24;17-25;31-47;9-15
+1-4;6-8;9-19;5-7;18-23
+1-7;17-20;11-24;16-17;32-42;9-19;24-50
+15-19;20-21;31-46;3-9
+0-1;8-26;31-37
+11-24;32-42
+14-15;15-18;15-19
+1-9;14-16;9-30
+13-33;16-29
+17-36;6-7
+17-25;31-37;7-13;5-8
+1-11;11-38
+33-39
+1-6;8-20;8-26;13-32;6-25;6-11
+0-1;17-29
+1-8;14-15;27-28;31-37
+0-1;6-17;32-44
diff --git a/examples/failures/failures-0.05 b/examples/failures/failures-0.05
new file mode 100644
index 0000000..3cabb18
--- /dev/null
+++ b/examples/failures/failures-0.05
@@ -0,0 +1,1000 @@
+1-4;1-7;1-8;13-33;17-25;11-17;5-32;24-45
+14-16;6-7;48-49;5-7;40-49
+2-3;17-24;32-48;9-15
+1-4;1-5;1-7;19-20
+1-7;21-31;11-17;31-47;48-49
+20-21;17-18;9-31;40-49;19-20
+1-6;15-18;6-7;9-19;24-45
+17-20;6-17;6-11;16-24;32-44;9-19;24-38;24-31
+14-16;17-29;6-25;9-19
+8-24;6-7;6-8;9-19
+12-13;6-11;38-43;24-38;24-50
+2-3;1-11;9-31
+0-1;1-6;14-15;25-26;11-24;3-9
+2-3;33-40;32-48
+23-24;8-26;13-32;17-26;11-38;16-24;16-29;16-17
+8-28;17-26;33-40;7-13;9-30
+1-5;13-32;39-42;48-49;9-15;18-23
+1-6;1-11;12-13;8-16;6-11;5-7
+2-3;15-18;32-42;38-43;5-7
+2-3;17-35;17-18;9-17;5-32
+11-17;6-17;6-11;9-30;19-51
+0-1;1-6;17-35;17-18;38-43
+31-46
+31-47;5-32
+17-24;32-42;48-49;40-49
+2-3;17-20;17-29;39-42;18-23
+2-3;1-5;14-17;17-28;11-24;11-17;33-40;6-7;24-31
+17-24;6-25;7-13;19-41;19-51
+1-10;3-9
+25-26;13-32;17-20;40-49
+1-4;1-8;15-18;15-19;31-45;31-46;32-42;7-13
+
+1-7;8-28;9-15
+0-1;17-20;31-47;5-8;40-48
+12-13;14-16;9-15;24-38;24-50
+21-31;39-42
+1-9;14-16;3-9
+14-16;11-38;16-17;38-43;5-32;18-23
+14-17;15-19;25-26;8-28;17-24;17-25;31-45
+1-11;17-36;6-8;6-34;32-44
+1-7;1-10;17-24;17-36;31-46;48-49
+33-40;6-28;6-25;6-17
+17-24;11-38;39-42
+14-15;33-40;6-28;3-9
+1-5;17-24;17-29;16-17;9-15;19-20
+15-19;8-16;13-32;31-45;5-8;40-48
+15-18;8-20;13-33;17-24;6-28
+1-6;9-15
+2-3;1-5;1-7;20-22;8-20;17-35;16-29;31-37;40-49
+31-47;32-44;5-8;40-48;19-41
+8-24;17-35;17-25;16-24
+32-42
+1-8;1-10;13-33;17-29;24-50
+2-3;1-6;8-28;17-18;11-24;24-45
+8-26;31-37;40-49
+1-7;13-33;17-24;17-25;6-11;32-42
+16-17
+17-35;6-17;31-45
+1-4;17-35;17-24;11-24;9-17;40-48
+33-40;6-7;6-17;6-11;9-15;9-30;5-7;19-41
+17-24;11-38;9-30;5-7
+17-20;31-37;40-48
+6-11;24-50
+1-5;25-26;17-18
+8-16;8-26;17-26;17-29;16-17;32-48;40-48
+0-1;20-21;20-22;17-20;17-18;17-26;6-11
+17-36;11-17;31-45;3-9;19-20
+17-18
+23-24;17-24;32-48
+17-29;31-47
+17-20;31-37;9-31;5-32
+1-5;8-28;11-38
+
+9-17;9-19
+12-13;16-29;9-19;5-32;40-48
+15-19;6-7;9-19
+1-7;31-37;48-49
+17-28;40-48
+17-20;6-8;31-47;5-32
+25-26;8-16;13-33;17-20;17-26;18-23
+0-1;1-10;25-26;17-18;32-42
+12-13;27-28;8-28;6-28;32-44;18-23;40-48
+21-31;17-18;9-15;3-9
+1-8;27-28;17-35;17-20;6-7;24-31
+1-5;20-22;8-26;33-39;48-49;7-13;40-48;40-49
+1-4;1-8;17-35;5-32;19-20
+14-17;20-21;32-44;19-51
+1-10;25-26;17-20;6-7;40-48
+0-1;8-28;33-40;3-9
+1-7;20-22;8-20;11-17;6-17;24-45;19-51
+0-1;17-26;24-50;3-9
+1-7;15-18;17-25;6-28;6-8;5-8;24-31;24-45
+11-24;9-17
+1-6;8-26;17-24;17-36;31-47;7-13;24-38
+1-11;17-36;5-8
+31-37
+7-13;40-49
+14-15;6-11;5-8
+17-18;6-8
+14-15;17-29;11-38;32-42;38-43;9-30;24-45
+8-20;8-28;17-18;6-11;5-8;24-45;19-41
+1-9;9-17;19-51
+1-5;12-13;16-17
+8-26;6-17;31-47
+20-22;17-29;6-11;5-8;24-31
+11-38;9-15
+1-8;8-16;24-50
+38-43;9-15;40-48;24-38
+14-17;8-16;31-37;40-49
+17-20;11-24;6-28;6-8
+17-18;16-29
+8-20;3-9
+14-16;31-37;5-7;19-41
+1-5;8-24;6-28;6-8;6-11;16-29
+25-26;32-48;40-48;24-31
+1-4;1-8;17-26;11-24
+0-1;15-18;23-24;17-26;38-43;9-31
+21-31;17-26;48-49;18-23
+11-38;33-40;9-17
+1-6;1-11;17-35;6-28;16-29
+11-24;6-8;31-46;3-9
+1-11;14-15;21-31;17-25;48-49;24-45;24-50
+15-19;6-34
+14-15;8-20;13-32;17-28;32-44
+17-28;32-48;38-43;9-15;24-38
+8-26;17-36;9-17;24-31
+11-17;32-42
+17-35;17-28;17-24;16-17;19-20
+0-1;12-13;23-24;6-28;40-49;3-9
+17-20;17-18;17-24;33-39;6-17;9-31;19-20
+15-19;31-46
+17-18;11-17;32-44;9-17
+8-16;8-24
+0-1;2-3;6-7;6-8;39-42;24-38
+21-31;6-25;16-17;40-49
+1-8;17-29;6-28;31-45
+8-28;11-38;33-40;9-31
+14-17;17-35;6-25;32-48
+15-19;48-49
+17-18;31-37;24-50
+1-6;31-46;9-19
+1-4;6-7;6-8;6-34;9-30;9-19;5-7;18-23
+1-4;13-32;17-28;9-31;9-30;9-19
+16-29;5-8
+8-20
+1-5;20-22;6-11;31-45;7-13;19-41
+0-1;1-5;6-25
+11-24;32-42
+23-24;21-31;13-32;31-46;19-41
+6-25;7-13;9-31
+1-7;12-13;14-16;20-22;8-24;48-49
+1-9;8-28;33-40;39-42;19-51
+1-10;3-9
+1-11;17-36;11-38
+17-28;16-17
+1-11;8-26;17-35;11-17;33-39;9-31;5-8
+25-26;9-15;9-17
+8-20;17-35;17-28;39-42;5-32;24-31
+1-7;6-28;6-11;24-45;19-41;19-51
+1-7;5-8;24-45
+6-34;16-29;31-47;24-50;3-9
+1-8;1-9;21-31;11-17;19-51
+2-3;14-16;14-17;8-24;6-8;32-44;9-31
+32-42;9-17
+1-5;1-10;17-25
+15-18;8-26;31-45
+20-22;13-32;17-26;33-40
+2-3;23-24;17-35;17-26;19-51
+1-4;1-10;15-18;11-38;31-47;9-17;3-9;19-20;19-51
+2-3;1-4;32-48;24-31
+1-4;17-20;17-28;6-34;31-47;32-44;9-17;19-20
+14-17;19-51
+1-10;17-24;11-17
+25-26;33-39;6-8;16-29
+15-19;21-31;32-48;24-31
+23-24;8-26;6-7
+8-20;17-24;6-28;16-24;38-43
+14-16;8-16;11-17;16-17;40-49
+17-20;17-36;6-34;9-17
+
+13-32;17-36;18-23
+1-6;17-36;6-17;31-37;5-7;19-51
+11-24;6-25
+15-19;20-21;21-31;17-20;6-7;16-24;3-9
+14-17;6-8;38-43;9-30;24-50;19-51
+8-24;8-26;9-30
+9-30
+1-8;17-25;6-34;31-37;9-15
+20-22;17-25;11-38
+14-15;15-18;17-24;24-38
+23-24;8-26;16-29;32-44
+1-5;17-28;33-39;6-7;19-51
+18-23
+
+1-7;17-28;11-38;6-11;16-29;31-45;31-37
+23-24;39-42;31-47
+1-4;14-17;8-26;6-25;16-24;32-44;32-42;24-38
+2-3;1-4;1-8;24-45
+0-1;8-16;13-32;17-35
+8-20;33-39;38-43;9-15
+20-21;8-16;21-31;32-42
+20-22;17-24;11-24;6-11;18-23
+1-7;1-11;14-15;15-18;11-17;31-45;9-15;5-8;24-31;24-50
+1-7;8-24
+2-3;1-10;13-32;32-44
+8-28;6-8;31-47;5-8;24-45
+1-5;8-26;17-28;24-45
+11-17;31-37;9-19
+1-10;14-17;17-35;9-19;5-32;40-49
+1-5;1-11;8-20;17-36;11-24;9-19
+20-22
+
+33-39
+1-6;39-42;16-17;7-13;5-32;24-31
+31-37
+17-20;31-47
+14-15;6-34
+12-13;32-42;5-32
+14-15;17-26;31-46;32-48;38-43
+14-16;8-20;17-26
+14-16;8-28;8-24;6-7;16-17;31-37;31-47;40-49
+14-17;17-28;5-7;3-9
+13-32;6-25;5-7;24-50;19-41
+1-10;15-18;3-9
+2-3;17-24;31-47;5-8
+1-4;1-8;25-26;17-20;9-17
+1-4;1-5
+2-3;8-28;8-26;17-29;33-39;6-8;5-32
+20-22;6-28;48-49;40-49
+1-10;13-32;6-7;16-17
+17-35;32-42;9-30
+14-15;31-45;31-47;9-15;9-30;9-17;19-20
+1-11;8-20;33-40;6-25
+6-7;6-17
+17-28;6-34;31-46;9-31
+1-9;8-24;6-7;6-17;32-48
+12-13;11-38
+15-19;17-36;39-42;16-17
+0-1;17-36;6-8;38-43;9-17
+17-29;31-45
+17-35;17-24;6-11;39-42;48-49;40-49
+1-10;6-17;16-17
+17-24
+1-6;8-20;17-20;17-25;11-17;32-44
+1-5;48-49
+7-13;9-15
+20-22;17-24;11-17;31-37;9-15;3-9
+1-8;14-17;17-29;31-45;31-46;18-23;24-38;24-31
+8-26
+20-22;8-16;6-11;16-29;7-13;19-51
+
+
+1-4;15-18;6-25;39-42;7-13;24-31
+1-4;3-9;19-20
+2-3;14-15;8-20;17-29;6-7;6-34;31-47;5-8
+0-1;2-3;23-24;6-8;32-42
+14-15;16-29
+1-11;14-17;17-36;5-8
+8-26;19-41
+1-9;21-31;7-13;24-50
+23-24;33-40;32-42
+16-17;9-17;3-9
+17-25;17-36
+1-11;8-24;17-36;6-34;5-8
+8-16;17-36;39-42;31-37;32-42
+8-20;11-38
+11-17;6-17
+25-26;19-41
+0-1;17-36;24-31;24-45;24-50
+11-24
+2-3;16-24;5-32
+17-20;17-26;31-37
+12-13;8-16;21-31;17-28;17-26;11-17
+20-22;16-17
+5-32
+8-24;17-28;6-28;9-30;24-38
+2-3;6-17;9-19
+14-15;33-40;31-47;48-49;9-19
+1-8;14-16;9-19;24-38
+17-28;6-7;9-30
+0-1;23-24;17-24;5-7;24-50
+1-4;1-8;8-24;17-28
+27-28;13-33;11-24;32-44
+14-15;9-17;24-50
+2-3;14-17;15-19;27-28;16-17;7-13;3-9;19-41
+14-15;17-25;6-28
+17-29;16-29;31-37;32-48;40-48
+6-25;6-8;9-31
+8-16;8-26;17-20;11-38
+1-10;12-13;17-36;5-32
+1-10;12-13;14-15;8-16;6-25;9-30
+6-34;6-11;24-31
+20-22
+1-10;20-22;17-36;6-17;48-49;5-7;24-31
+14-17;17-24;11-38;18-23;19-20
+1-6;6-28;6-11;9-15;40-49;19-51
+1-11;17-24;16-29;31-45;7-13;24-50
+8-26
+39-42;9-17
+1-5;1-9;11-38
+15-18;11-17;32-42
+1-5;13-33;11-17;19-41
+1-8;17-35;17-20;6-28;32-48;40-49;19-51
+0-1;1-5;40-48
+1-8;17-35;39-42
+0-1;1-9;14-16;16-24;31-37
+23-24;17-20;31-47;9-31;5-32;24-31
+1-4;17-28;6-8;9-17
+1-10;14-17;25-26;27-28;32-42;18-23
+20-21;31-45
+1-6;27-28;16-17;24-45
+2-3;20-22;16-24;31-37;9-15;5-8;24-31
+17-28;31-37
+1-7;27-28;6-25;39-42;38-43
+20-21;6-28;9-17
+1-9;27-28;33-39;7-13;9-30;5-8;19-20
+31-46
+8-26;6-34;32-48;18-23
+2-3;21-31;11-17;6-8;16-17;5-8
+0-1;17-26;16-29;40-49;24-45
+8-24;17-26;11-24;6-17;38-43
+1-11;23-24;17-26;17-29;5-32;5-8
+1-8;31-45;32-44;9-17;24-38
+13-32;17-25;16-17;18-23;3-9
+12-13;17-20;11-17;33-40;31-46;32-48;24-50
+2-3;5-8;24-31
+8-28;16-17;5-32;40-48
+14-15;8-26;21-31;6-34;31-37
+31-47
+31-46;24-38;24-45;3-9
+1-5;1-6;5-7;24-45
+2-3;33-39;6-25;5-7
+1-4;16-24;32-42;24-38
+0-1;1-4;11-24;11-38;6-17;19-20
+2-3;38-43;5-32;24-31
+1-5;14-16;25-26;17-29;39-42;31-46;5-7;40-49
+1-7;20-21;33-40
+1-10;6-11;40-48;19-20
+8-26;17-20;33-40;6-8;32-42;3-9
+13-32;17-29
+17-35;17-18;31-46
+1-9;11-17
+1-11;25-26;17-35;17-20;17-18;39-42;9-19
+13-33;17-24;6-28;6-11;9-19;40-48;19-41
+1-5;17-35;17-18;17-36;40-49;24-31
+2-3;14-16;14-17;31-45;32-42
+14-16;11-38;5-8
+1-9;14-16;13-32;17-20;40-48
+1-11;14-15;8-26;11-24;39-42;24-45
+15-18;27-28;8-20;13-32;48-49;24-45
+14-15;20-22;8-24;17-28;7-13;40-48
+27-28;17-25;31-47;24-50
+5-32;3-9
+2-3;17-29;39-42;31-37
+1-5;14-17;13-32;33-40
+8-24
+1-7;1-8;12-13;16-29;40-48
+17-20;16-29;9-19
+0-1;1-7;6-8;32-42;38-43;9-30;24-31;24-45;19-51
+1-8;8-16;31-45;32-44;24-45
+1-10;6-28;6-25;31-37;40-48
+14-16;15-18;17-18;11-24;16-24;32-48;9-15;19-51
+1-4;13-32;17-24;7-13;40-49
+12-13;40-48
+8-28;9-31;19-41
+20-21;17-29;38-43
+25-26;32-44;40-48;24-45
+1-10;8-26;13-33;33-39;5-32;24-45;3-9
+1-6;39-42;9-15;9-19
+1-9;14-17;31-37;38-43
+12-13;14-15;8-20;17-26;17-29;32-42
+17-26;24-31
+17-35;17-36;6-7;16-17;31-45
+1-11;17-36;11-24;31-47
+8-28;17-36;11-38;5-8;40-49;19-51
+25-26;8-16;17-18;33-39;6-17;31-37
+24-31;24-45
+8-26;5-8
+1-7;6-25;24-50
+17-24;9-19
+11-38;6-8;31-45;9-15
+19-41
+17-35;17-20;17-29;31-37;24-31
+13-33
+14-15;23-24;6-11;16-17;19-51
+1-8;15-18;17-18;5-32;24-38
+1-7;14-15;13-33;11-17;32-42
+1-4;1-8;1-9;1-10;12-13;14-16;8-26;21-31;17-18;6-11;7-13;38-43
+1-4;14-16;13-32;31-37;31-47;24-38
+
+0-1;9-15;9-19
+20-22;7-13;19-51
+1-6;12-13;21-31;9-15
+6-25;40-49;24-31;19-41
+1-5;14-17;13-32;32-48;18-23;19-51
+2-3;31-37
+2-3;1-6;8-24;11-24;6-17;19-20
+1-11;15-18;17-18
+0-1;12-13;14-15;31-47;9-30;3-9
+1-10;6-28;32-48;9-30
+14-15;21-31;17-36;6-34;32-44;5-7
+8-26;17-24;31-47;3-9
+17-29;17-36;6-7;31-37
+39-42;32-42
+23-24;8-16;16-29;24-31
+1-11;13-33;6-25;40-49
+6-17;24-38
+17-24;31-46;9-19
+20-22;25-26;31-45;31-47;32-44;9-19
+12-13;15-18;17-18;17-24;17-25;6-7;9-19
+15-19;9-15
+1-8;17-24;33-39;6-8
+6-17;24-38
+1-5;8-20;13-32;5-7
+8-24;21-31;17-29;24-45
+11-38;24-31
+1-4;31-45
+1-4;25-26;31-46;5-8;24-50;19-20
+15-19;13-32;11-24
+17-18;6-25;6-34
+17-35;33-39;16-29
+14-15;17-26;6-8;31-47;3-9
+0-1;17-28;17-26;11-24;6-11
+25-26;8-28;17-35;6-8
+1-9;1-11;8-20;40-49
+8-16;17-24
+25-26;8-24;17-28;48-49;38-43;5-8
+17-24;16-17;31-46
+0-1;17-25;16-29;32-42;9-17
+17-18;17-24;17-29;6-28;6-8;7-13;5-8
+14-16;17-36
+1-10;8-24;17-18
+6-8;5-8
+15-18;20-22;8-28;17-29;48-49
+23-24;11-17;38-43
+15-19;20-21;8-20
+1-8;31-45
+0-1;16-24;32-44;3-9;19-20
+1-7;8-26;33-39;39-42;24-50
+1-9;20-21;19-20
+14-17;6-25;31-46;5-7
+14-15;48-49;9-15;9-30
+1-4;25-26;13-33;9-31;9-30
+14-15;11-38;11-17;39-42;31-37;31-47
+8-20;32-44;18-23
+8-20;11-17;33-39
+20-22;19-51
+15-18;17-18;17-25;33-40;6-28;19-41
+6-34;39-42
+20-21;8-26;33-40;6-28;38-43;24-38;24-50
+8-24;9-31
+16-24;16-17;9-17
+25-26;17-35
+14-17;24-45
+2-3;1-11;17-18;17-29;5-7
+17-20;6-7;6-25;16-29;7-13
+1-10;8-20;11-38;6-17;39-42
+1-4;1-8;31-46;31-47
+17-36;32-42;9-17;18-23
+1-6;17-36;7-13;19-20
+2-3;14-16;24-38
+1-5;1-8;14-16;19-20
+
+17-28;11-17;16-17;48-49
+17-18;38-43
+1-6;14-15;14-17;8-28;17-25;33-39;19-51
+20-21;17-28;16-24;24-50
+14-15;13-32;31-47
+1-4;11-38;33-40;16-29;32-48;9-17;40-49;24-31;24-45
+1-10;11-24;6-11
+0-1;1-6;9-31;24-50
+8-16;16-17;9-17
+1-4;23-24
+1-4;1-8;20-22;17-26;6-8;31-45
+1-5;17-26;11-38;11-17;32-42
+17-28;17-24;6-11;48-49;9-19;19-51
+0-1;1-10;6-28;16-29;9-31;9-19;3-9
+25-26;33-40;9-19
+14-17;8-20;17-18;17-29;6-11;16-17
+14-16;8-28;3-9
+14-17;31-47;32-44;9-17;40-49;19-20
+2-3;12-13;17-28;18-23;24-31;24-45;19-20
+2-3;9-30;24-45
+1-6;15-18;33-39;6-11;9-30
+6-7;6-28;6-34
+8-28;17-18;11-38;32-44
+17-36;24-50
+1-11;17-36;31-45;5-8
+8-20;8-26;9-31;9-17
+1-7;14-17;17-28;7-13;38-43;9-30;5-32
+14-16;14-17;13-32;6-7;39-42
+14-17;6-8
+17-18
+25-26;6-34;16-17;31-45;38-43
+6-28;48-49
+0-1;2-3;1-10;18-23
+1-9;17-35;11-38
+27-28;40-49
+8-26;13-33;11-24;3-9
+1-5;20-21;27-28;6-25;16-24
+21-31;16-17;38-43;24-45
+14-15
+2-3;27-28;11-38;6-8;16-29;32-42
+
+20-21;27-28;17-18;18-23
+31-37
+17-18;6-28;31-45;31-46
+8-24;11-38;5-7
+27-28;8-26;17-24;6-7;16-17;31-46;7-13;5-7;24-45
+40-49;24-45
+1-7;27-28;17-24;6-17;19-41
+1-7;13-32
+25-26;17-25;17-36;19-51
+1-11;8-16;17-20;17-24;19-41
+1-6;14-16;23-24;13-33;31-45;31-47;24-50
+1-5;1-8;1-10;14-16;6-28;9-15
+0-1;17-18;11-24;6-7;16-17;31-46
+1-8;15-19;17-35;17-20
+1-6;17-18;24-45
+
+8-28;6-34;6-11;32-48;19-51
+18-23;40-49;3-9
+17-26;32-44
+14-15;8-16;17-35;11-24;11-38;6-28;6-17;48-49
+17-25;17-26
+1-4;1-8;17-35;17-26;11-17;32-44;24-38
+23-24;31-46;32-48
+1-10;21-31;9-15;5-32
+24-38
+9-30;3-9
+2-3;13-32;11-17;9-30
+15-18;8-16;6-17;39-42
+13-33;9-17
+20-22;23-24;27-28;6-8;31-46;9-31;18-23
+21-31;17-18;17-24;6-34;32-42
+1-9;1-10;1-11;25-26;33-39;6-25;32-42;24-31
+16-29;5-7
+2-3;5-7;19-51
+2-3;14-17;8-26;13-32
+33-40;16-17;31-46
+1-7;1-9;1-11;8-20;17-24;17-36;31-37;9-19;19-20
+13-33;17-25;6-25;16-29;32-48;9-19;40-48
+1-10;20-21;25-26;17-24;11-17;16-24;9-19
+21-31;17-20;17-28;33-39;19-41
+2-3;13-33;17-24;6-17
+1-11;15-18;13-32;7-13;19-51
+1-8;13-32
+20-21;16-17;31-37;32-48;32-42
+8-28;17-29;11-38;11-17;32-48;9-17;18-23;24-50
+23-24;16-24;16-29;38-43
+1-9;48-49
+14-17;20-21;11-24
+20-22;33-40;6-28;7-13;9-15
+1-4;8-16;8-24;17-25;11-38;11-17;6-25;24-31
+12-13;16-29
+17-28;31-45
+1-5;17-36;18-23;40-49;19-20
+23-24;17-24;6-8;31-46;3-9
+0-1;21-31;40-48
+24-50
+1-6;3-9
+14-15;20-21;25-26;17-35;6-11;18-23;19-51
+23-24;21-31;6-28;19-20
+0-1;15-19;16-24
+1-9;14-17
+16-24;32-48;38-43;5-32
+8-24;11-38;6-7;16-29;40-48;24-50;19-41
+13-33;48-49;24-38
+0-1;31-45
+17-36;33-40;6-25;38-43;9-17
+0-1;23-24;8-28;8-26;17-36;31-47;40-48
+15-19;13-33;17-36;33-40
+14-16;17-20;17-25;11-38;31-45;9-30
+2-3;17-25;11-17;6-11;39-42;9-30;18-23
+2-3;1-5;20-22;8-20;17-26;11-24;6-7
+0-1;21-31;17-26
+12-13;5-7
+14-17;25-26;40-49
+11-17
+1-5;1-6;1-10;17-24;33-39;7-13;24-31
+33-39;31-45
+1-4;1-8;15-18
+1-4;23-24;40-48
+1-9;6-28;6-25
+6-17;48-49;38-43
+8-28;6-8;32-42;40-48
+13-33
+1-10;12-13;15-19;16-29;9-17;24-50
+7-13;40-48
+0-1;14-15;8-26;11-38;11-17;31-47
+27-28;13-33;17-20;5-7;40-49
+
+1-6;7-13;38-43;5-8;3-9
+1-7;1-9;15-18;19-41
+25-26
+13-32;6-25;6-34;5-8;19-41
+11-24;48-49;24-45
+6-25;40-48
+12-13;17-36
+1-7;1-10;8-26;17-35;17-20;17-36;31-45;31-37;3-9
+1-7;8-28;9-17;40-48
+17-26;5-7;19-20
+0-1;8-24;17-35;32-44;32-42
+1-5;1-6;5-32
+14-15;17-35;48-49;5-7;19-20
+15-18;23-24;17-29;39-42
+17-35;11-17;33-39;16-24;31-46
+1-6;8-24;6-8;32-44
+1-4;1-9;20-21;13-32;17-28;9-19;18-23
+15-19;17-29;32-42;9-19
+1-5;20-22;25-26;27-28;6-11;39-42;16-29;9-30;9-19;19-51
+14-15;6-28;31-46;31-37;31-47;40-48
+12-13;27-28;17-26;19-51
+0-1;14-16;8-24;11-17;6-34;9-17
+33-40
+8-28;40-48
+1-6;13-32;33-40;19-41
+6-11;16-17;9-30;5-7
+6-28;31-37;5-7
+8-26;31-46;9-15
+1-5;1-11;6-11
+8-16;40-48;3-9
+14-17;8-28;13-33;17-36;6-7
+13-33;33-40;32-44;24-50
+15-19;23-24;8-24;17-26;31-47
+17-26
+1-10;17-26;9-15;40-49
+0-1;25-26;6-8;16-24
+1-7;15-18;6-28;6-17;31-45;9-17;3-9
+17-20;32-48;32-42
+1-9
+14-15;13-32;17-25;33-39;38-43;5-7
+33-40;24-31
+1-4;1-10;17-20
+0-1;1-7;23-24;27-28;8-28;17-25;6-8;6-34;9-15
+1-4;1-8;20-22;25-26;13-33;17-28;6-7;5-32;5-8
+0-1;1-9;17-35;6-25
+14-17;31-37;9-17
+8-26;5-8
+12-13;8-26;17-24;48-49;38-43;5-32
+15-18;8-28;17-29;6-28;32-44
+6-17;31-45;32-42;5-8
+17-25;9-15;19-20
+25-26;8-16;17-28;11-24;31-37;9-17;3-9
+39-42;9-15;19-20
+48-49;19-41;19-51
+1-9;1-11;33-40;18-23
+1-6;8-20;17-28;6-28;16-29
+27-28;6-25;32-44
+14-17;8-26;33-39;6-34;31-45
+2-3;12-13;32-44;5-8;40-49;24-38
+11-17;6-11;48-49;3-9
+15-18;25-26;11-38;5-32
+13-33;24-38
+24-31
+14-16;8-28;9-30
+1-9;31-47;32-42;5-32;24-50
+21-31;13-33;31-45;9-15;9-30;5-32;40-49
+11-38;38-43;18-23
+1-8;1-9;8-24;6-17;31-47;3-9
+14-15;17-29;24-45
+12-13;14-17;17-20;5-32
+1-4;14-15;6-25;39-42;32-42;40-49;24-50
+27-28;13-32;48-49;19-41
+1-7;15-18;8-16;17-35
+1-7;1-10;8-28;17-20;38-43
+
+0-1;1-9;38-43
+14-15;15-18
+0-1;12-13;6-28;32-48
+15-19;25-26;31-45;31-47;9-17;40-49
+1-11;16-24
+8-28;11-24;16-17;5-7
+13-33;17-29;24-50
+9-15;9-19
+14-15;17-20;17-28;17-26;6-25;9-19
+1-5;13-33;17-26;33-39;9-17;9-19;19-41
+1-6;14-15;8-24;17-35;17-26;33-40;6-7;16-24;16-29;32-44;38-43;9-31;9-19
+1-11;15-19;31-45
+1-5;17-18;32-44;9-30;19-51
+12-13;23-24;16-17;31-47;32-42
+
+40-49
+31-37;9-17
+1-6;16-24;9-31;24-50
+17-29;6-7;32-44;38-43
+2-3;1-8;15-19;20-21;25-26;6-8;19-20
+2-3;23-24;27-28;17-28;16-17
+1-6;1-8;13-33;48-49;5-8
+0-1;15-18;8-16;8-28;8-26;17-29;6-7;7-13
+1-6;9-30
+33-40;16-29;9-31;5-32;19-41
+8-20;21-31;17-25;32-42;9-17;5-8
+1-6;12-13;20-22;17-20;17-28;33-39;31-37;9-15
+1-10;18-23
+1-7;23-24;39-42;9-15;5-8
+32-48;48-49;38-43;9-30
+1-6;14-15;17-20;11-24;6-17;19-41
+14-17;6-8;16-24;24-31
+40-49
+2-3;21-31;17-35
+8-20;11-24;11-38;6-25;31-37;38-43;5-32
+15-18;6-7;6-11;31-47;5-8
+23-24;25-26;11-24;33-39
+1-9;12-13;17-25
+11-38;11-17;6-7;6-34;31-46;19-20
+1-11;8-24;17-36;6-28;40-49
+17-36;38-43;19-41;19-20
+1-11;8-16;17-28;17-36;6-28;6-8;32-42
+13-32;33-40;6-7;24-31
+12-13;14-16;14-17;11-38;11-17;33-39
+14-15;16-24;31-47;7-13;9-15;18-23
+1-5;8-16;8-24;6-11;40-49
+1-5;17-35;31-46
+1-10;15-18;8-16;9-17;5-7
+20-22;17-25;6-34;7-13;38-43;5-32
+1-4;20-21;11-17
+1-4;1-8;6-25;31-47;32-44
+17-18;6-17;39-42;16-24;40-49
+25-26;8-26;6-8;5-32
+20-21;11-24;31-45;31-46;32-42;48-49;9-17;24-31
+11-17;16-29;31-37;24-50;3-9
+8-28;9-31
+1-4;1-8;17-20;39-42
+1-7;19-41
+20-21;33-40;16-24;32-44
+1-10;15-18;17-24;17-26;16-17;9-15;5-7
+17-25;17-26;6-28;6-8;31-47;9-17;24-45;19-20
+13-32;17-18;17-24;31-45;5-32
+20-21;17-20;6-25;9-31;3-9
+0-1;23-24;17-18;40-49
+1-7;16-24;24-31
+1-9;12-13;17-28;5-32
+1-6;20-21;8-20;13-32;17-36;6-28;16-17;32-48;38-43;9-17;19-41
+2-3;1-4;6-28
+31-37;32-48
+0-1;2-3;39-42;9-31
+15-19;20-22;31-47;32-42;40-49
+20-21;8-28;17-20;16-29
+12-13;14-16;17-25;6-17;9-30
+1-6;14-16;8-26;17-18;33-40;32-48;9-30
+8-24;16-17;31-37;9-19
+1-9;11-24;9-31;9-19;24-31
+1-4;1-8;17-35;7-13;9-19
+1-4;1-5;17-28;5-8;18-23;24-38
+1-4;14-17;11-24;19-41
+1-10
+33-39;6-7;6-11;7-13
+5-8
+31-45;40-49;19-20
+12-13;23-24;8-26;6-11
+17-25;6-7;16-29;5-8
+17-18;38-43
+15-19;33-40;6-11;32-42;5-7
+14-15;20-22;17-18;5-8
+8-20
+14-16;14-17;11-38;31-47;9-31;9-30
+0-1;12-13;14-15;6-11;31-47;48-49;5-32
+1-9;1-11;14-17;17-24;5-8
+7-13;18-23;3-9
+1-6;8-26;17-20;17-29;6-8
+1-7;16-24;32-48;9-15;24-31
+1-8;15-18;11-38;31-45
+27-28;33-39;6-7;6-17;31-37;38-43
+17-36;6-28;32-44
+27-28;32-42
+19-41
+8-24;17-20;7-13
+1-5;27-28;13-32;39-42;16-24
+1-7;14-15;48-49;24-38;19-20
+25-26;27-28;21-31;6-34;31-45;31-37
+14-15;8-28;18-23
+1-4;1-8;20-22;27-28;24-38;24-31
+1-4;11-17;6-28;9-15;40-49;24-50
+1-6;21-31;17-35;11-38;9-17;5-32;24-45
+17-25;24-45
+1-9;20-21;20-22;27-28;17-35;17-26;31-37;19-41
+2-3;8-16;17-26;11-24;31-45
+6-7;31-45;24-45
+0-1;31-45;5-8;19-51
+2-3;17-18;11-17;19-41
+8-26;40-49
+1-6;6-17;9-17
+1-11;8-24;33-39;31-47;9-30;5-7
+17-20;16-24;9-30;5-32;18-23;19-51
+16-17
+48-49;9-15
+1-5;8-28;32-42;19-51
+21-31;17-36;9-15;9-17;19-20
+0-1;17-18;6-34;40-48;19-41
+15-18;23-24;19-41;19-20
+1-5;1-9;1-10;12-13;13-32;16-24;19-20
+3-9
+8-28
+17-25
+14-17;8-24;17-25;38-43;40-48
+6-11;5-7;18-23
+20-22;17-18;16-29
+23-24;13-33;11-17;6-34;39-42;32-44;9-15;40-48
+6-17;40-49
+2-3;1-4;15-18;17-28;33-40;9-15
+8-26
+0-1;2-3;21-31;40-48;19-41
+1-10
+20-21;11-17;6-28;6-25;16-24
+25-26;11-38;24-45
+21-31;6-25;31-47
+14-17;8-24;13-32;17-20;17-18;31-37;40-48
+32-44;5-7;18-23
+9-19;5-7;24-31;24-50
+23-24;8-20;17-29;11-24;9-19;40-48
+1-11;12-13;17-35;31-46;9-19
+1-5;8-28;11-38;33-40;5-8;19-41;19-20
+15-18;6-28;6-8;16-24;32-42;9-15;24-38
+0-1;1-9;8-28;17-35;31-45;38-43;40-48
+1-10;48-49;7-13;3-9
+17-28;33-40;39-42;31-47;24-38
+1-8;6-34
+23-24;17-36;33-39;6-25;40-49
+1-11;21-31;17-18;17-36;39-42;16-24;31-46
+17-36;6-25;31-37;18-23;24-31;24-50
+31-45
+2-3;12-13;8-16;11-38;11-17;6-7;40-48;3-9
+1-11;17-18;17-36;16-24
+13-33;17-35;9-30;19-41
+14-16;8-24;17-25;16-17;9-15;9-30
+0-1;16-24;40-48
+1-8;1-9;1-10;33-39;31-37
+1-5;11-38;11-17
+2-3;1-4;1-8;12-13;8-28;17-26;32-42;40-48
+2-3;8-24;17-26;9-30;40-49
+15-19;8-26;6-28;6-8;9-15;19-20
+1-9;40-48
+14-17;17-18;24-50
+17-36;18-23
+1-10;17-29;6-7;32-48
+2-3;14-15;13-33;33-39;31-37;5-7;40-48
+2-3;15-18;20-22;17-28
+14-16;17-20
+1-11;14-16;6-25;40-48;24-31
+32-44;24-38
+27-28;8-20;8-28;11-24
+1-10;17-25;6-8;9-17;40-48
+
+17-35;17-36;11-17;6-34;6-11
+1-7;14-17;25-26;33-39;48-49;5-8
+1-8;23-24;17-18;11-24
+8-16;17-29;18-23
+8-24;17-24;16-29;16-17;40-48
+31-37
+11-24;31-45;19-41
+12-13;5-32;24-50;19-51
+0-1;14-16;17-20;6-8;32-44;19-20
+1-8;14-16;8-20;17-18;3-9
+21-31;17-35;17-29;19-51
+1-9;48-49;38-43;9-15;5-32
+1-7;20-22
+1-4;1-5
+0-1;2-3;14-17;23-24;24-38
+2-3;18-23
+8-28;8-24;16-17;5-32;40-48
+13-33;17-20;17-25;6-28
+12-13;8-26;17-29;33-40;5-8;19-41
+17-18;17-24;11-38;33-39;6-28
+0-1;25-26;5-32
+1-11;17-18;5-8
+32-42
+2-3;6-17
+8-16;16-17;48-49;9-31;9-30
+12-13;13-32;31-37;5-8
+1-5;40-48
+14-17
+1-7;25-26;17-25;6-17;32-48;7-13;24-31;19-20
+1-7;23-24;8-16;13-33;32-48;40-48;40-49
+1-10;8-20;11-38;6-8;16-29;32-42
+21-31;17-24;6-17;9-19
+15-19;13-32;17-28;32-44;9-19;40-48
+20-21;27-28;17-35;17-24;31-37;9-19
+2-3;17-35;5-8
+16-17
+14-16;14-17;20-22;21-31;17-18;17-28;17-26;33-39;6-28;5-32
+1-9;14-15;25-26;17-26;33-40
+20-21;27-28;8-26;17-18;6-8;6-34
+1-5;39-42
+1-4;1-8;27-28;8-20;6-11;31-37;32-44
+15-18;24-31
+20-21;27-28;6-25;16-17
+17-35;48-49;19-51
+1-6;27-28;8-24;21-31;13-33;17-28
+1-11;25-26;31-47
+1-6;14-15;18-23
+
+17-29;11-24;11-17;6-34;16-17;31-45;24-45
+8-16;13-33;17-18;17-28;6-7;19-20
+23-24;8-28;21-31;17-24;6-17;6-11;5-32;24-38
+19-20
+1-11;20-21;8-20;13-32;13-33;17-28;17-24;6-8;16-24;31-46;32-42
+14-16;6-7;6-17;24-31
+15-18;21-31;11-38
+6-28;6-25
+1-9;6-7;48-49;24-38;24-45;3-9
+8-26;17-20;17-29;6-28;6-34;24-50
+1-7;1-11;23-24;17-28;31-46;19-51
+21-31;11-17
+6-8;31-46
+12-13;17-18;17-28;31-37;38-43;5-7;40-49
+0-1;14-17;9-15;5-7;19-41
+1-10;8-24;16-17;31-47;5-8;24-50
+17-28;3-9
+1-7;1-8;14-16;17-25;11-24;9-30
+1-4;14-16;11-38;9-30
+0-1;1-4;1-10;14-16;15-18;17-29;9-30
+15-18;8-26;6-25
+33-40;16-29;32-42
+1-9;20-21;23-24;8-16;8-26;11-24;31-46
+1-6;13-33;6-17
+12-13;21-31;11-38;18-23
+27-28;8-28;17-28;31-47;9-17;40-49
+1-7;8-20;31-37
+14-17;27-28;17-35;6-34;31-46;24-31
+0-1;20-22;6-28;7-13;9-31;19-41
+17-35;11-24;31-45;24-38;19-51
+12-13;15-19;16-17;9-15;5-32;19-41
+0-1;33-39;38-43
+1-11;25-26;8-26;13-33;3-9
+14-16;31-46;24-38;19-51
+1-5;17-24;6-8;16-24
+31-37;32-44;9-31
+17-24
+1-9;23-24;17-28;6-34;32-44;40-49
+1-6;17-24;16-17
+17-35;17-26;38-43;5-32;3-9
+14-17;17-26;17-36;16-24;5-7
+8-26;33-39;39-42;31-37;18-23
+1-7;1-10;11-38
+6-25;19-20
+1-8;15-18;5-32
+14-16;6-11;48-49;19-20
+14-16;8-16
+14-16;24-45;3-9
+8-16;6-25
+
+1-9;21-31;6-11;9-17
+1-10;14-17;17-29;33-40;9-19
+13-32;9-19
+1-9;16-29;32-44;19-51
+15-19;11-38;48-49;9-19;24-50
+1-6;21-31
+12-13
+8-24
+8-20;24-31
+17-29
+2-3;33-39;5-32;18-23
+14-16;15-19;23-24;6-17
+8-24;6-25;40-49;3-9;19-41
+21-31;17-29;9-30;9-17
+8-16;39-42
+6-8;6-34;9-30;19-20
+1-8;20-22;25-26;17-35;16-17;48-49
+2-3;33-40;6-28;19-51
+21-31;5-7
+8-16;17-24;9-15;18-23
+0-1;11-17;16-17;32-44;38-43;3-9
+17-24;17-29
+31-45
+2-3;1-4;16-17;38-43;5-8
+27-28;9-31;18-23
+12-13;14-17;8-28;33-40
+17-29;6-8;16-24;32-48;32-44
+23-24;27-28;33-39;5-8
+20-21;24-50;3-9
+1-9;27-28;8-20;13-33;11-24;19-41
+2-3;15-18;17-28;39-42;5-8
+2-3;1-5;31-37;32-44;5-7
+20-21;8-26;11-38;5-7
+15-19;6-34;5-8;18-23
+20-22;21-31;38-43
+8-24;31-45;31-47;48-49;9-17;24-38;19-20
+1-10;15-19;20-21;8-16;16-24
+0-1;2-3;14-17;5-8;40-49
+2-3;12-13;13-33;17-24
+20-22;8-28;17-28;6-17;16-29;7-13;24-38
+14-15;8-20;17-24;17-26;6-25;5-32;24-31
+1-9;1-11;8-28;8-26;17-26;6-11;39-42;31-45
+16-17;31-47;40-49;24-31;3-9
+5-7
+1-6;20-21;17-29;33-39;33-40;6-11;16-24;5-7;24-50
+23-24;17-35;19-51
+8-24;6-25
+1-8;23-24;17-25;39-42;32-42
+31-47;18-23
+1-8;31-45;24-38
+9-31;3-9;19-41
+2-3;1-4;1-8;1-9;12-13;14-17;8-26;5-32
+1-4;8-24;17-24;11-17;6-7;32-42
+1-8;27-28
+20-22;17-20;17-24;16-29;31-46;9-30;19-41
+1-6;27-28;6-28;6-17;9-30;19-20;19-51
+1-9;15-19;25-26;17-28;17-25;32-48
+2-3;27-28;17-35;16-17
diff --git a/examples/failures/failures-0.06 b/examples/failures/failures-0.06
new file mode 100644
index 0000000..88798cc
--- /dev/null
+++ b/examples/failures/failures-0.06
@@ -0,0 +1,1000 @@
+14-16;6-28;9-15;9-17;24-45;19-41
+1-5;1-6;6-28;18-23;24-50
+1-9;16-24
+12-13;8-16;17-35;16-17;31-46;24-31
+0-1;14-17;17-35;17-24;6-34;48-49
+11-24;6-11;32-44;24-38;19-51
+8-20;32-44;48-49;5-32
+1-11;8-24;17-29;18-23;24-45
+1-5;1-11;25-26;27-28;13-32;11-38;33-39;6-11;16-17;32-42;24-38
+16-24;9-30
+14-17;27-28;8-28;5-7;19-20
+15-19;27-28;8-20;8-26;13-33;17-28;6-7;9-30;19-20;19-51
+6-34
+13-32;16-17;31-46
+8-16;11-38;16-24;31-45;48-49
+20-22;13-32;17-25;7-13;9-17
+8-24;13-33;16-24;18-23;19-41
+14-17;17-29;33-39;16-24;24-38
+2-3;15-18;8-28;17-25;16-17
+17-35;17-28;6-28;18-23
+
+1-4;13-33;17-29;17-36
+1-4;14-16;20-21;8-20;8-24;17-26;19-20
+0-1;32-44;7-13;9-17
+7-13;9-30;5-7;24-50;19-41
+20-21;17-35;48-49;38-43
+25-26;9-19
+16-17;32-44;9-19;24-45
+20-22;6-34;32-44;32-42;9-19;5-32
+1-5;14-17;20-22;13-32;39-42
+2-3;23-24;25-26;11-17;18-23
+15-18;15-19;17-20;9-31;24-45
+0-1;6-11;16-17;31-47;38-43;9-30
+1-9;1-10;20-21;17-36;32-48
+27-28;6-7;18-23;24-31
+1-6;16-17;9-17;5-8;19-51
+1-11;33-39;31-47
+0-1;1-11;14-16;11-24;48-49;24-38
+23-24;8-16;8-28;17-28;5-8;24-50
+1-10;15-19;20-22;8-20;11-17;33-40;39-42;31-46
+11-38;39-42;5-32;5-8;18-23;40-49;24-45
+1-6;39-42;31-46;31-47;19-51
+15-18;40-49
+1-7;14-16;20-21;8-20;17-24
+17-24
+20-21;6-34;5-32
+1-9;6-28;6-17;9-30;19-41
+2-3;1-6;8-26;13-32;17-26;11-24;6-17;16-17
+1-9;17-25;7-13;24-38
+11-17;6-11;32-44;9-31;19-51
+14-16;27-28;6-25;16-17;5-7;24-50
+0-1;27-28;8-26;6-17;31-37;9-30;40-49;19-41;19-20
+1-7;12-13;15-19;17-35;32-42;9-15;40-48
+1-9;15-18;17-35;33-40;6-34;6-11;16-17
+17-35;11-17;39-42;16-24;31-45;31-46;9-15;3-9
+2-3;1-6;14-15;8-26;17-35;17-20;17-29;31-37;32-48;24-38
+14-17;20-21;25-26;17-29;6-7;9-19;5-32;40-48
+8-26;16-29;24-50
+14-15;13-32;6-7
+2-3;1-9;13-33;40-48;24-31
+0-1;1-5;6-7;6-8;16-24;32-48;24-31
+1-6;1-9;21-31;24-45
+1-5;20-21;31-37;18-23
+21-31;17-20;11-38
+15-18;13-32;17-29
+12-13;27-28;32-48;9-15
+1-9;17-25;33-40;16-24;38-43
+1-10;31-45;31-47
+1-5;1-7;17-18;17-36;11-24;32-48;5-8;19-51
+2-3;25-26;17-35;16-29;9-15;5-8;40-48;3-9
+17-35;17-26;6-7;6-28;9-31;19-20
+1-9;1-11;31-45
+13-33;17-28;31-47;5-32
+1-5;15-19;20-22;8-26;17-28;17-24;17-29;6-28
+14-16;20-21;6-25;6-11;5-7
+15-18;17-29;32-48;9-31
+8-24;11-24;16-29;32-42;24-50
+8-16;13-33;6-8;6-17;31-37
+6-7;24-45;3-9
+0-1;2-3;15-18;15-19;17-35;17-20;5-8
+14-17;25-26;32-44
+1-9;27-28;32-44;7-13
+2-3;1-8;8-20;8-24;31-46;38-43
+1-7;1-8;15-19;17-28;17-36;11-17;16-24
+1-9;23-24;25-26;17-36;31-45;40-48
+2-3;1-4;39-42;19-51
+1-11;40-48;3-9
+8-24;8-26;33-40;31-46;9-19
+2-3;14-15;17-24;11-17;33-40;31-46;9-30;9-19
+14-15;17-35;17-24;5-32
+0-1;12-13;6-28;3-9
+15-19;17-20;16-17;24-38
+12-13;14-17;17-35;17-29;11-17
+0-1;20-21;17-18;17-26;7-13;19-41
+1-7;15-19;17-26;6-17;48-49;9-15;9-31;5-8;19-41
+17-24;6-17;6-34;6-11;16-24;31-37;31-47
+14-17;13-33;6-25;31-46
+1-9;17-28;17-24;31-45;31-46;48-49
+1-4;20-21;27-28;8-16;17-36
+1-7;8-16;17-25
+8-16;3-9;19-41
+1-4;1-5;17-35
+14-17;15-19;11-24;9-17;24-45
+8-20;13-33;24-38;19-51
+17-20;11-24;16-24;31-37
+15-19;21-31;39-42
+17-18;17-29;6-17
+17-35;7-13;19-41
+24-38;24-31
+2-3;1-11;23-24;9-30
+1-6;1-8;14-17;13-32;16-17;32-48;7-13;5-32
+0-1;1-4;8-28;17-36;31-47;9-17;19-41
+11-24;11-17;31-47
+16-24;31-46;24-45
+0-1;1-10;20-22;38-43;9-17;24-38
+20-21;5-8
+14-17;17-20;39-42;24-50;19-41
+2-3;20-21;11-38;6-17;7-13;9-31;9-17;3-9
+1-5;1-6;17-26;33-39;6-11;32-44;48-49;5-32;18-23
+27-28;17-18;5-8
+0-1;27-28;17-28;6-25;16-24;31-47;9-19
+8-16;13-33;9-19
+1-7;27-28;8-16;8-26;33-39;31-45;19-41
+0-1;27-28;16-24;24-38;19-41
+15-19;16-17;31-46;31-37;9-31;19-41
+23-24;27-28;13-33;17-35;11-38;32-44
+1-4;17-35;17-36;7-13
+1-10;8-28;24-38
+8-24;17-28;6-8;31-47;48-49;9-15;3-9
+7-13;19-20
+1-7;13-32;48-49;40-49;24-45
+1-10;17-24;33-39;16-29;32-42;5-32
+12-13;6-34;31-45;9-30
+6-25
+1-9;24-38
+20-22;17-18;6-28;40-49;19-41
+1-8;21-31;11-24;33-39;6-11;5-7;24-31
+1-5;17-25;11-38
+8-26;17-18;17-24;38-43;9-15
+23-24;27-28
+1-4;21-31;17-25;11-24;11-38;31-37;24-31;19-20;19-51
+1-6;1-9;27-28;17-36;31-47;5-8
+1-9;25-26;13-32;11-24;6-11
+14-16;8-16;17-26;11-17;16-17;38-43;5-8;18-23
+23-24;17-26;39-42;16-29;31-46;19-51
+0-1;8-24;32-42;5-32
+1-10;8-16;17-20;18-23;24-31
+0-1;17-20;38-43;3-9
+
+11-17;33-39
+6-28;6-8;16-24
+23-24;25-26;11-24;6-7;48-49;24-31
+2-3;15-19;8-16;11-17;40-49;24-38;24-50
+8-16;21-31;31-37;38-43;19-41
+1-4;20-22;17-29;6-25;9-19;18-23;19-41
+1-8;15-19;25-26;7-13;9-19;5-7;40-49
+8-20;17-29
+14-16;8-16;33-39;6-34;9-31;5-32
+17-35;33-40
+33-40;6-11;16-29;7-13;9-17;5-32;19-51
+15-18;17-18;16-24;32-48;7-13
+19-20
+8-20;8-28;17-35
+1-9;1-10;15-19;25-26;8-16;8-26;17-35;6-11;32-44
+14-16;17-28;17-24;33-40;16-29;16-17;48-49;19-41;19-51
+1-4;13-32;17-36;33-39;32-42
+6-28;24-50
+20-21;6-28;5-7;18-23
+17-18;16-29;32-42;3-9
+17-20;17-26;38-43;5-7;40-48;19-51
+33-39;40-48;19-20
+20-21;8-20;17-18;6-28;32-48;24-38;19-51
+1-9;20-22;21-31;6-34;16-17;9-15;24-50;3-9
+25-26;17-29;5-8
+12-13;21-31;6-7;39-42;16-24;9-15
+17-20;31-45;7-13;9-31
+1-4;17-36;6-17;18-23;19-20
+23-24;17-36;5-7;18-23;24-31;3-9;19-20
+0-1;15-18;20-22;25-26;13-33;33-39;32-44;40-48
+1-9;27-28;17-18;16-17;19-41
+1-7;21-31;17-20;6-11;16-29;31-46;5-32
+8-28;17-18;31-46;9-15;9-19;40-48;24-31
+1-6;14-15;8-16;8-24;11-17;33-40;31-37;32-48;3-9;19-51
+0-1;31-46;7-13
+1-7;20-21;8-24;18-23
+1-8;14-16;17-25;33-39;31-46;3-9
+2-3;20-22;17-26;39-42
+8-24;17-26;11-24;6-7;32-48;5-8
+1-8;1-10;15-19;8-16;17-24;18-23
+8-16;8-26;11-17;33-39;38-43;19-51
+1-5;13-32;17-18;17-26;32-48;40-49
+1-10;20-21;8-20;8-16;17-20;17-25;16-29;5-8
+12-13;17-29;31-46
+20-21;25-26;31-46;48-49;40-48;24-31
+15-18;33-39;6-34;32-44;5-32;24-50
+23-24;38-43;40-48
+0-1;2-3;1-9;8-20;6-11;19-51
+0-1;1-11;13-33;31-37;31-47;9-17;24-38
+14-16;8-24;6-11;48-49
+1-4;14-15;13-32;17-25;17-36;6-11;31-45;9-31
+25-26;21-31;17-35;11-38;16-24;38-43;24-38;24-31
+23-24;13-32;17-18;19-41
+1-5;17-36;7-13;40-48
+6-8
+17-20;33-40;31-37;3-9
+23-24;17-28;33-40;39-42
+0-1;1-5;1-9;14-16;15-18;17-25;9-31;19-51
+8-24;21-31;16-24;32-42
+6-28
+0-1;1-6;12-13;25-26;17-35;6-25;31-45;9-31;19-51
+31-37;9-30
+13-32;17-26;11-24;32-42;9-30
+6-17;31-47
+1-4;1-5;12-13;13-32;17-36;6-28;32-44;9-19;24-50;19-51
+6-7;5-7;19-20
+17-36;31-37;5-8;18-23
+1-11;14-17;8-28;8-24;7-13
+8-20;6-17
+21-31;31-37
+0-1;15-19;33-40
+
+1-7;14-15;6-34;48-49;7-13;5-7;24-45;19-41;19-51
+1-10;15-19;8-16;13-33;17-35;16-29;32-48;9-31
+0-1;11-38;6-8;31-37;9-19;24-31
+23-24;9-15
+17-25;6-8;16-29;31-46
+1-7;8-26;13-32;17-35;17-28;16-24;31-46;5-32;19-20
+1-10;1-11;14-16;25-26;17-25;16-17;31-47
+1-4;1-6;17-36;6-28;31-45
+12-13;17-35;17-36;33-39;6-28;5-7
+20-21;17-29;6-25;24-31
+12-13;15-18;27-28;17-24;6-25;31-45
+27-28;8-28;21-31;13-32;17-24;31-46;31-37;9-30
+8-16;17-24;33-40;6-28;31-47;19-51
+15-19;8-16;21-31;33-40;32-48;9-15;9-17;24-31;24-50
+14-17;15-19;25-26;13-33;40-48
+8-26;31-45;24-31
+1-7;20-22;9-15
+17-28;17-26;6-28;7-13;9-17
+8-28;13-33;17-20;17-26;17-29;6-28;5-32
+14-15;13-33;6-34;16-29;31-37
+1-4;1-5;23-24;6-7;32-42;18-23;24-31;24-50
+15-19;8-28;11-17;33-39;6-11;16-17;9-31;18-23
+0-1;25-26;27-28;17-29;17-36;16-24;9-15;3-9
+23-24;21-31;11-24;6-7;32-48;19-20;19-51
+15-19;20-22;13-33;9-19
+1-5;23-24;21-31;9-19;3-9
+14-15;17-24;6-7;32-42;9-15;9-19
+32-44;5-32
+31-45;31-37;48-49;5-8;19-51
+1-7;1-9;6-7
+0-1;9-31
+13-32;6-7;16-29;32-44;32-42;7-13
+1-4;1-10;14-17;23-24;17-24;6-25
+1-4;8-26;17-28;6-7;5-7
+0-1;17-24;17-36
+1-11;8-16;8-28;8-24;16-24;31-37;38-43
+1-8;17-35;17-28;9-19
+1-9
+14-17;11-17;48-49;24-45;19-41
+2-3;1-6;8-26;32-48
+1-5;14-16;15-19;48-49;9-31
+17-26;11-24;19-51
+0-1;1-6;13-32;17-29;31-45;32-48;24-31
+1-9;20-22;8-28;13-32;17-20;39-42
+14-17;23-24;8-24;21-31;17-24;6-17;6-11;3-9;19-20
+17-29
+1-4;1-5;1-7;1-10;14-15;25-26;33-39;5-8;24-50
+20-22;8-28;21-31;17-24;6-17;5-8;19-41
+17-29;31-45
+1-6;14-17;8-20;8-26;21-31;17-36;11-38;11-17;6-28;31-46
+8-24;17-20;6-34;24-50
+15-19;33-39;24-38
+13-33;6-7;6-8;9-17
+17-35;17-24;6-17
+1-7;13-32;11-24;19-20
+20-22;25-26;8-20;16-29;5-8
+1-9;8-24;17-18;11-24;9-31;5-32;3-9
+1-7;14-15;17-28;39-42;9-19
+1-7;15-19;25-26;17-35;17-20;6-7;6-28;32-48
+14-15;8-26;17-25;33-40;18-23
+20-21;27-28;8-28;33-40;6-7;6-17;31-37;31-47;7-13;3-9
+13-33;17-20;7-13;24-45
+1-6;1-10;15-19;6-8;31-45;24-50
+1-11;15-18;25-26;17-20;6-17;31-46
+20-22;13-33;17-18;33-39;7-13;9-17
+17-20;17-18;17-26;6-25;40-49;19-20
+17-26;6-17;32-48;24-31;19-41
+1-6;14-16;23-24;17-25;6-8;24-31
+1-7;14-15;8-26;40-49
+14-16;17-35;11-38;6-34;31-47
+15-19;23-24;6-7;31-45
+8-20;17-25;39-42;9-30;24-45;24-50
+14-15;17-35;6-28;6-17;16-29;48-49;40-49
+17-35
+1-4;1-5;14-17;20-22;33-40;32-44;48-49;7-13;24-50
+1-11;13-33;17-18;11-17;5-8;5-7;24-45
+17-35
+23-24;8-16;8-28;17-24;17-36;11-38;6-34;16-24;24-50
+27-28;8-26;9-31;9-17;24-38;3-9
+25-26;16-29;48-49;24-31
+1-10;8-20;17-20;17-18;6-7;40-48
+15-19;27-28;18-23;40-49
+15-18;13-32;7-13
+0-1;20-22;6-8
+8-26;17-18
+13-32;13-33;32-42
+20-21;21-31;24-38;19-41
+14-17;8-28;17-28;6-28;40-48
+1-4;1-7;15-18;21-31;13-33;5-7
+0-1;8-26;32-42;24-45
+8-16;13-32;17-18;17-36;39-42;31-47;7-13;38-43;18-23;24-50
+14-15;8-28;17-18;9-17;40-49
+1-11;17-26;33-40;39-42;31-47;9-19
+15-19;17-18;17-26;11-38;9-30
+23-24;17-35;6-11;16-29;40-48;40-49
+20-21;18-23
+33-39;9-30
+0-1;1-10;15-19;20-22;11-24;6-28;6-34
+8-20;17-20;17-18;17-28;16-29
+16-24;48-49;9-31
+2-3;1-11;12-13;23-24;17-29;31-46;7-13;40-48
+15-19;24-31
+14-15;13-32;17-20;11-24;6-7;16-29;24-38;19-51
+1-7;39-42;16-24;9-31;5-7
+1-6;20-21;6-7
+8-26;17-35;17-29;11-38;11-17
+8-16;17-36;32-48;24-38
+2-3;12-13;15-18;17-20;31-46;31-47;40-48;19-20
+15-19;20-21;21-31;39-42;32-42;7-13;24-31;19-51
+8-26;13-32;33-39;40-48
+1-7;11-24;3-9
+0-1;38-43;19-51
+12-13;6-11
+1-6;1-10;27-28;8-24;13-33;11-17;31-45;9-19;24-38
+17-25;6-34;19-41
+11-38;33-39
+1-5;1-7;1-8;8-16;31-37;3-9
+1-4;1-8;6-8;9-31
+1-4;1-8;17-25;11-24;11-17;6-11;31-46;5-7
+1-8;12-13;14-15;14-17;17-26
+1-9;1-11;15-18;20-21;11-38;38-43;18-23;24-45
+6-34;31-45
+11-24
+17-18;17-25;11-17;33-39
+15-19;16-29;31-47;5-32;24-38;24-31
+1-11;15-19;11-38;7-13;40-49
+1-7;14-16;20-22;8-26;17-20;6-8;6-34;9-19;18-23;24-38
+9-19
+15-19;8-24;17-28;24-50
+2-3;17-24;24-45;19-20
+1-4;9-17
+1-6;14-17;8-24;5-32;19-51
+15-19;17-28;33-39;6-28;39-42;16-24;48-49;19-51
+32-48
+13-33;11-38
+31-45;9-30
+17-36;6-11;5-8;24-50;19-51
+1-7;12-13;25-26;8-24;17-18;16-17;9-30;24-50;19-41
+1-5;1-9;8-16;13-33;17-18;9-17
+1-9;14-15;15-19;27-28;6-11;9-31;18-23;19-20
+1-9;14-16;11-17;38-43;18-23;19-51
+12-13;8-20
+1-11;15-19;31-46;9-17;5-32;24-45
+1-4;15-18;17-28;17-26;33-40;48-49
+1-6;13-33;17-36;33-39;33-40;16-24
+14-16;18-23
+12-13;14-15;15-19;17-35;17-18;17-25;17-36;33-40;32-48;40-49;24-45
+14-16;40-48;19-20
+1-6;12-13;16-24;31-46;7-13;9-15;24-50;19-20
+14-17;8-16;16-17;32-44;38-43
+1-6;17-35;17-18;17-29;18-23
+0-1;1-5;1-9;11-38;6-8;16-17;24-38
+0-1;1-6;17-29;32-48
+1-5;14-15;20-21;11-17;16-29;31-46;48-49
+6-7;32-44;9-15
+1-11;24-31
+2-3;1-11;11-38
+1-11;8-28;9-31;9-19
+1-4;6-7;6-8
+17-36;11-17;39-42;9-19;19-20
+2-3;1-5;1-6;8-16;13-32;16-29
+6-8;6-34;31-46;5-8;24-31;24-50
+8-20;11-38;11-17;16-17;31-37;24-31
+14-15;32-42;3-9
+1-7;25-26;6-28;39-42;24-38;24-50
+14-17;20-22;33-39;6-8;6-17;16-24
+14-16;8-20;31-37;5-32
+1-7;20-21;17-24;17-26;19-20
+1-11;8-26;17-24
+1-4;12-13;9-15
+1-11;23-24;6-8;39-42;9-31;18-23
+1-5;14-15;14-17;17-29;32-42;3-9
+14-17;15-19;25-26;13-32;6-28;9-17
+12-13;27-28;17-29;17-36;11-38;16-17;32-48
+8-28;32-44;48-49;24-45;3-9
+17-20;16-24;5-7
+2-3;48-49;5-7;19-51
+32-48;38-43;24-31;19-20
+1-8;15-19;8-26;13-32;13-33;16-29;16-17;32-42;40-49;24-45
+6-11;9-30;9-17
+1-8;17-18;24-45
+8-24;17-25;32-48;32-42;24-38
+1-4;8-20;33-40;6-25;31-37
+2-3;1-4;14-17;17-28;33-40;6-25;9-17;19-41
+15-18;17-20;6-8;31-47;24-50
+
+1-11;16-24;32-48
+
+13-33
+14-17;31-46;32-42;19-41
+9-19
+20-21;40-49
+33-39;32-42;9-19;5-32;24-50
+12-13;8-16;8-24;17-26;11-17;31-45;38-43;24-31
+0-1;15-19
+12-13;6-8;31-37;19-51
+14-17;33-39;39-42
+1-7;15-18;6-34;24-45
+17-20;6-17;5-32
+1-11;14-15
+1-11;31-45;32-48;38-43
+2-3;14-16;15-19;8-24;17-28;6-28;6-34;9-30;19-51
+8-20;21-31;6-28;16-24;31-37;32-42;24-31
+16-24;16-29;5-7
+12-13;8-20;8-28;16-24;32-42;5-7;24-31
+6-8;18-23;40-48
+15-19;20-22;17-28;6-25;6-8;39-42;38-43;40-48
+0-1;17-24;24-38
+1-7;13-32;19-51
+1-5;15-18;21-31;17-20;17-28;6-7;9-15;24-31
+1-4;20-21;23-24;6-8;6-34
+2-3;1-5
+15-19;23-24;17-35;40-48;3-9
+2-3;1-5;17-25
+1-8;12-13;25-26;17-25;33-40;16-17;31-45
+1-9;1-10;14-16;20-22
+8-24;17-20;6-34;16-29;32-42;24-38;24-45
+0-1;20-21;6-28;6-8;38-43;5-8;24-50
+2-3;17-26;18-23
+13-33;24-38
+15-19;6-34;3-9
+12-13;15-18;11-17;6-28;31-45;9-17;18-23;24-31;19-51
+1-7;23-24;25-26;6-25;24-50
+6-25;9-19
+17-28;17-26;18-23;3-9
+14-16;32-48;32-44;9-17;3-9
+0-1;1-4;20-22;8-26;17-24;31-45;9-19;5-7;18-23;3-9
+2-3;1-8;20-21;20-22;7-13;18-23
+13-32;9-15
+8-24;17-36;3-9
+8-26;17-28;11-24;31-45;31-37;5-32;40-48;19-20
+27-28;17-29;11-17;6-17;32-42;9-15
+17-20;6-11;16-29;24-38
+2-3;1-5;1-9;27-28;31-45
+1-7;6-7
+0-1;8-16;21-31;13-32;13-33;17-28
+20-21;17-26;31-45
+27-28;8-16;33-39;6-17;31-47;5-8
+1-11;31-47;5-7;19-41
+5-8
+15-18;8-24;21-31;17-28;31-45;3-9
+2-3;8-20;17-20;17-25;18-23
+17-24;11-17;6-8;16-24;24-50
+17-28;17-29;16-24
+0-1;15-19;20-22;25-26;21-31;17-26;16-29;32-48;38-43;5-8;3-9
+11-38;11-17;48-49;18-23
+23-24;17-18;40-49
+15-19;23-24;17-18;33-40
+1-9;13-32;39-42;32-42;9-17;3-9
+1-6;1-7;8-24;6-34;9-15;9-17
+12-13;8-26;31-45;48-49;24-45
+14-16
+1-4;1-5;1-8;15-19;8-24;33-40;32-42;38-43;5-7;18-23;3-9
+1-10;16-17
+1-5;13-33
+1-8;12-13;17-28;17-29;17-36;6-7;38-43
+23-24;6-28
+0-1;12-13;14-16;14-17;20-22;11-38;6-25;6-34;31-45;9-19
+1-5;8-20;17-35;33-40
+12-13;17-35;6-17;9-17
+8-26;17-28;6-28;31-46;7-13
+1-5;25-26;6-25
+1-9;9-15;24-38;19-51
+6-7;9-30
+14-17;6-28;31-47;32-42;9-30
+14-16;8-26;11-17;9-17;19-51
+12-13;20-22;21-31;11-38;24-50
+1-8;17-18;33-39;6-34;32-44;24-38
+14-15;8-16;8-28;17-20;6-8;40-49
+1-10;8-16;21-31;17-35;17-20;11-24;31-46;24-38
+27-28;8-16;8-24;17-26;16-29;32-48
+0-1;1-11;15-18;16-17;5-8
+19-20
+1-5;27-28;16-17
+14-15;8-20;33-40;16-24;5-32
+0-1;14-17;8-24;8-26;24-31;19-51
+2-3;12-13;32-42
+13-33;6-25;16-29;9-31;40-49
+14-16;8-20;24-45;19-41
+1-4;14-16;13-32;17-28;17-29;6-8;6-17;39-42;24-38
+32-48
+
+1-11;25-26;8-16;6-7;31-47
+1-8;31-47;24-38
+0-1;2-3;14-15;13-33;40-49
+20-21;8-26;6-28
+6-34;5-7
+17-18;11-24;32-42;9-15
+14-17;6-7;31-37
+1-8;15-18;33-39;33-40;9-17;24-50
+14-15;25-26;8-26;33-40;39-42;40-49
+2-3;1-9;15-18;8-26;21-31
+14-15;8-16;17-20;31-46;9-19;19-20
+32-44;9-17;5-7
+17-35;17-29;33-39;16-29;32-44;7-13;5-7
+14-17;21-31;17-26;6-11;5-8
+1-11;8-24;13-32;17-26;11-24
+1-7;1-11;21-31;33-40;31-45;31-47
+17-20;17-18;6-28;6-25;31-37;18-23
+25-26;8-24;21-31;6-28;6-25;6-17;39-42;38-43;9-15;5-7;24-38
+17-20
+2-3;15-18
+0-1;14-16;13-32;17-28
+0-1;12-13;8-28;31-46;24-45;3-9;19-20
+25-26;6-28;31-47;24-45
+23-24;17-35;17-18;11-17;16-17;24-38;19-41
+1-10;14-17;17-35;17-18;6-8
+20-22;8-20;39-42;16-24;9-30;5-7
+1-4;1-7;14-16;15-18;8-24;21-31;6-25;6-17
+12-13;6-34;31-46;48-49;19-51
+1-5;1-11;15-19;11-38;18-23;3-9
+6-25
+0-1;2-3;1-7;14-17;23-24;8-16;13-32;17-36;19-20
+8-20;17-24;6-17;48-49;40-48
+33-40
+1-5;14-16;17-29;38-43
+1-6;14-16;17-18;16-29;31-45;40-48
+
+8-16;13-33;17-24;6-7;9-15
+1-9;11-17;6-17;6-34;39-42;31-45;32-42;24-38
+1-7;1-9;15-18;17-28;17-25;6-8;31-47;9-17;5-32
+15-19;17-26;24-45;3-9
+8-24;17-18;6-34;31-37;19-20
+1-5;1-10;8-16;6-11;18-23;19-41
+8-28;17-24;16-24;24-45
+1-9;9-19
+17-24;16-29;9-30;9-19;19-51
+1-7;20-21;11-17;9-30;5-8
+8-28;17-24;17-29;17-36;11-38;6-7;6-34;5-7
+8-28;33-39
+0-1;14-17;6-8;9-15;9-30
+1-9;38-43
+12-13;17-18;11-24;11-17;9-17;40-48
+2-3;20-21;17-24;19-20
+1-4;1-6;12-13;8-24;17-24;11-24;5-7;24-38;19-41;19-20
+1-6;12-13;17-35;17-26;17-36;31-46;32-48;9-17
+1-8;39-42;48-49;9-15;9-31
+12-13;14-15;6-7;6-8;31-45;40-48;19-51
+25-26;31-37
+1-5;23-24;13-32
+17-35;17-20;9-17
+12-13;23-24
+2-3;21-31;17-36;32-48;24-45;3-9;19-51
+11-38;6-25;9-17
+14-16;17-24;5-32
+15-18;17-18;38-43;3-9
+1-7;1-9;1-10;25-26;48-49;9-15;5-8
+8-16;3-9
+1-9;14-15;17-26;11-17;33-39;33-40;31-45
+1-4;24-38
+0-1;1-4;21-31;32-48;32-42;40-48
+6-8;31-45
+15-19;23-24;17-24;33-39;6-8;48-49
+11-17
+1-9;1-10;17-36;32-42;24-38
+2-3;1-9;20-21;8-28;17-36;6-34;39-42;16-17;31-46;32-44;9-20;5-8
+15-18;8-26;6-17;16-24;9-31;3-9
+8-24;17-28;39-42;31-46;9-19;18-23;40-48;24-31
+15-18;8-16;13-32;6-7;6-11;40-48
+20-22;7-13;9-19;19-51
+8-20;33-39;6-17
+6-8;5-7;40-49
+1-4;14-17;25-26;17-29;5-7;40-48
+1-7;1-11;13-32
+1-6;17-35;5-32;24-38;24-50;3-9;19-51
+2-3;20-21;20-22;11-24;11-38;24-38;19-51
+1-7;21-31;6-17;9-15
+20-21;20-22;17-25;31-37;32-42
+21-31;33-39;33-40;6-7;19-51
+2-3;8-20;9-31;9-19;19-20
+20-21;13-33;11-17;32-44;24-31
+21-31;6-11;16-29;32-44;9-20
+17-26;32-44;32-42;5-8
+2-3;21-31;17-28
+11-38;6-34;32-42;18-23
+1-6;1-11;13-32;6-7;19-41
+1-4;1-8;16-29;31-47;5-32;5-8;24-38;24-50
+8-28;13-33;33-39;6-8;9-20
+20-21;9-15;5-8
+2-3;14-17;11-38;6-25;48-49;9-15
+17-28;6-25;16-24;16-17;9-19;40-49;3-9
+15-18;20-21;17-36;6-8
+8-20;8-28;17-35;17-36;5-7
+27-28;8-16;11-38;6-7;6-34;16-29;9-20;24-45
+12-13;8-24;21-31;13-33;16-17;31-46;24-45
+1-7;14-17;23-24;27-28;31-46;24-31
+15-19;27-28;21-31;31-45;32-44
+8-20;13-32;13-33;17-24;6-34;32-44;9-20;5-32
+13-33;11-38;5-7
+1-4;17-28;6-28;9-20;9-30
+7-13;9-19;19-41
+17-35;6-11;16-24;40-48
+14-17;20-21;25-26;8-20;8-26;11-38;6-34;6-11;9-15;9-19
+1-11;12-13;14-15;15-18;15-19;23-24;17-20;6-25;31-45;32-44
+8-16;9-15
+1-9;1-11;23-24;6-28;32-44;40-49
+17-29;48-49;5-7
+14-15;8-20;8-28;17-26;6-34;7-13;38-43
+14-16
+1-10;15-18;13-32;6-28;19-41
+25-26;17-24;6-25;6-17;16-29;31-37
+17-24;11-24;6-28
+17-24;9-31
+13-32;17-20;16-24
+1-8;5-8;24-45;19-41
+21-31;17-25;6-7;16-29;5-32;18-23
+1-10;12-13;14-16;15-18;11-24;33-40;16-24;16-29;5-8;18-23
+27-28;8-16;8-26;31-46;31-47;38-43;3-9
+27-28;9-20;24-38;19-41
+12-13;23-24;27-28;17-24;33-39;6-17;9-31;5-8
+17-36;6-34;48-49;9-30;3-9
+15-18;11-17;16-17
+0-1;14-16;38-43;9-30
+14-17;17-24;32-44;40-49
+1-10;14-16;8-20;6-25;31-37;9-15;9-30
+12-13;11-24;11-17;31-45;9-30
+1-7;1-10;13-32;13-33;6-34;16-17;32-48;9-20;9-31
+20-22;23-24;19-20
+12-13;15-18;17-35;33-39;24-50
+2-3;23-24;8-20;17-25;6-7;6-11;9-31
+1-5;1-11;20-21;13-33;17-35
+25-26;21-31;31-37;7-13
+8-24;13-32;17-25;17-26;9-20
+12-13;14-17;13-33;17-26;17-36;11-24;6-8;16-17;31-37;24-50
+8-20;17-18;16-29;31-47;32-44;38-43;9-17;5-32;24-45
+20-21;8-20;8-16;17-29;7-13;9-19
+25-26;11-17;6-28;16-29;9-19;3-9
+6-7;6-25;32-44;9-20;9-17
+17-18;7-13
+14-17;32-44;9-31;9-17
+6-34;3-9
+1-4;1-8;23-24;8-28;31-47;24-38
+0-1;1-4;15-19;6-17;9-20;9-31;5-32
+1-6;1-10;8-28;32-44;9-20
+14-17;21-31;17-35;17-25;6-8;6-11;31-37;9-30
+0-1;1-9;1-11;13-32;6-17
+12-13;8-20;33-39;31-45
+23-24;21-31;17-36;5-7
+1-7;20-21;20-22;17-36;11-17;16-29;32-48;24-38;19-20;19-51
+16-17;48-49;7-13
+17-18;33-39;18-23
+1-7;14-16;6-25;31-47
+1-8;14-15;9-31;40-49
+25-26;38-43
+17-18;17-24;6-17;5-7
+2-3;1-4;1-7;12-13;23-24;33-39;38-43;9-20
+21-31;16-24;31-45;19-20
+1-6;1-9;1-10;8-28;17-35;6-25;6-34;39-42
+1-4;17-24;31-37;31-47
+25-26;16-17;32-44;32-42
+1-8;14-15;8-26;21-31;32-44;9-17;40-48;40-49
+14-15;8-28;8-24;17-35;17-26;11-17;33-39;6-8;39-42;16-17;31-46;32-42;9-20;18-23;19-41
+20-22;8-16;8-28
+0-1;25-26;8-20;16-29;32-48;9-17;5-7;19-51
+0-1;17-25;17-36;11-17;31-37;9-17;19-41
+1-10;12-13;33-39;31-47
+15-18;15-19;23-24;17-24;11-17;6-8;5-8;24-45
+1-10;12-13;33-40;16-24;32-44
+8-28;13-32;17-24;6-7;5-32
+8-28;17-29;7-13;9-20;5-7
+1-9;8-24;8-26;33-39;6-7;6-17;16-29
+1-9;14-17;8-28;6-8;39-42;32-42;9-19
+15-18;20-22;8-16;6-11;39-42;16-17;40-48;24-38
+1-10;8-16;17-25;6-34;16-29;38-43
+14-16;13-32;17-29
+1-7;1-10;27-28;39-42;31-47;9-15;5-7;24-31;24-50
+11-38;6-8;6-11;31-47;40-48;24-31
+14-17;9-15;9-20
+15-18;8-28;6-34;31-37;32-44;9-17
+33-40;6-7;6-8;24-38;24-31;24-50
+12-13;25-26;27-28;8-20;17-28;11-24;6-7;32-44;9-31
+1-8;20-22;8-24;13-32;17-28;48-49;9-15
+1-7;14-15;17-35;17-18;11-38;6-8;32-48;5-7
+1-5;32-44;5-32
+2-3;1-4;1-6;1-8;32-48;5-32;24-31
+20-21;13-32;17-20;17-26;11-24;32-44
+33-40;32-44;7-13;18-23
+33-40;38-43
+1-10;14-16;13-32;6-28;5-32
+12-13;31-45;7-13;24-45
+27-28;13-33;17-26
+20-22;33-39;31-47
+6-8;6-34;24-50
+15-19;27-28;17-20;17-28;16-29;48-49;18-23
+1-5;17-18;6-7;39-42;31-45;24-50
+1-8;14-16;8-20;17-20;11-17;6-11;16-17;24-45
+0-1;1-7;25-26;27-28;8-28;6-7;9-15;19-41
+1-4;17-28;17-29;16-24;31-47;32-42;5-8;18-23;40-48
+1-10;1-11;13-33;17-18;31-47;9-31
+1-8;6-7
+6-34;16-17
+20-21;17-28;16-29
+14-17
+1-11;14-16;15-18;21-31;39-42;3-9
+1-7;11-24;31-45;31-47;32-48;9-19
+17-36;16-24;24-38
+12-13;8-16;17-25;17-29;31-37
+1-10;8-16;17-24;3-9
+14-17;20-21;8-16;6-28;32-42
+2-3;20-22;27-28;8-28;13-32;17-25;33-39
+27-28;11-17;33-40;31-46;5-7;19-20
+20-22;27-28;17-26;6-8;9-30;19-20
+9-15
+20-21;11-17;9-30;5-32
+14-15;33-39;6-11
+27-28;17-28;17-24;6-11;39-42;31-45;40-49;3-9;19-41
+14-16;15-19;17-20;11-17;9-20;24-38
+14-16;27-28;16-17
+1-6;11-24;33-39;40-49;19-51
+1-7;17-18;17-36;6-28;16-29;18-23
+20-22;8-28;8-26;17-36;6-28
+12-13;17-36;32-42;38-43
+0-1;20-22;6-8;31-47;48-49;5-8;19-20
+14-17;6-17;24-45
+2-3;6-28;16-17
+17-28;6-25;16-24;48-49;5-7
+8-26;21-31;6-34;24-38
+1-6;13-33
+32-44;24-38
+15-18;23-24;8-20;6-8
+17-18;24-45
+6-7;31-37
+25-26;5-7;40-49;3-9
+1-10;5-8
+1-8;15-18;11-24;3-9
+20-22;13-32;17-35;6-8;32-48;9-20;19-20
+1-9;15-18;13-32;17-35;17-36;6-28;6-25;6-34;24-38
+17-35;17-28;16-17;9-17
+15-19;21-31;11-24;33-39;9-20
+0-1;1-5;20-21;17-26;9-20;19-41
+14-15;8-28;17-26;11-24;6-28;9-19;5-7
+14-16;14-17;25-26;6-34
+15-18;11-24;39-42;31-45
+14-15;20-21;17-35;17-20;17-28;17-24;6-11;9-20
+12-13;20-22;17-18;17-24;17-25;31-37;31-47;32-44;9-31;19-20
+17-25;9-15;24-50;19-51
+1-5;1-10;1-11;15-19;23-24;31-47;7-13;24-45
+1-7;13-33;11-24;33-39;16-24;16-17;31-47;5-32;19-51
+12-13;6-17;19-41
+15-19;38-43
+1-9;27-28;6-17;16-24;16-29;24-31
+12-13;17-24
+6-7;16-17;48-49;9-30;5-32
+14-16;20-21;8-24;33-40;31-37;32-42;9-31;9-30;24-50
+23-24;8-28;39-42;16-29;18-23
+17-25
+27-28;32-42;18-23
+17-24
+25-26
+13-32;31-46;32-48;48-49;38-43;24-38
+14-17;17-35;17-28;33-40;9-15;24-31;3-9
+14-16;13-33;17-35;16-24;31-45;9-20;5-8
+8-20;8-16;17-36;32-44;32-42
+1-6;20-22;17-20
+14-17;8-16;21-31;17-26;17-36;6-28;6-34;16-24;16-17;32-44;18-23
+1-10;17-25;17-26;31-46
+15-18;25-26;6-8;6-11;31-46;32-42;19-41
+0-1;1-4;15-19;17-35;11-24;16-24;24-45
+0-1;27-28;16-29;24-38
+16-24;24-38
+14-16;8-28;33-40
+1-5;20-21;11-38;6-25;32-44
+11-17;16-29;16-17;9-31;18-23;19-51
+0-1;1-6;20-21;24-50
+
+23-24;6-34;31-47;9-19;24-45;24-50
+16-24;16-17;9-30;9-19
+23-24;17-28;33-40;6-7;16-24;31-37;9-30
+6-25;18-23;24-31
+14-16;8-20;8-28;17-35;6-11;19-20
+23-24;6-25;9-20
+8-20;17-28;17-36;33-40;6-28;16-17;32-48;9-20;9-30;5-32
+2-3;1-10;15-19;21-31;31-47;38-43
+11-38;9-20
+1-6;6-8;6-17;5-8;24-38
+2-3;14-17;8-26;6-17
+1-6;1-9;12-13;7-13
+1-5;8-28;32-42;48-49;40-49
+1-6;1-8;14-15;39-42
+1-6;11-24;6-8;32-42;5-7;24-31
+8-16;8-24;38-43
+1-7;17-20;17-29;6-17;24-38
+1-6;1-10;1-11;17-35;11-38;6-28;31-47
+21-31;17-24;17-26;11-17;19-41
+1-10;8-28;33-40;6-7
+11-38;16-24;9-20;5-32;40-48
+11-24;24-31
+14-17;23-24;13-32;31-46;31-37
+1-8;25-26;16-24;31-45;31-46;31-47
+1-5;15-18;23-24;13-33;11-17;5-32;24-45;19-51
+15-19;11-38;6-8
+1-5;17-25;11-38;6-7;31-45
+0-1;8-16;21-31;17-24;48-49
+25-26;13-32;33-40;16-24;32-48;9-30;18-23;19-41
+21-31;6-34;48-49;9-15;5-32
+31-45;31-46;24-45
+1-5;14-16;31-46;9-20;40-48;40-49;24-31;19-51
+20-22;8-20;33-39
+14-15;21-31;33-40;31-47;32-42;3-9
+17-36;11-24;11-38;6-25;6-8;9-20;9-19;5-32;40-48;19-20
+25-26;8-16;17-35;19-51
+1-10;15-18;8-28;31-46;48-49
+2-3;14-15;13-33;17-35;6-25;32-42;48-49;18-23
+1-4;12-13;14-16;20-21;8-20;8-16;6-25;6-34
+1-11;17-28;24-45
+0-1;13-33;6-17;39-42;7-13
+20-22;17-25;11-17;33-39;3-9
+23-24;17-35;9-20;40-48;24-38
+8-28;17-26;6-11;5-32;40-49;19-41
+15-19;11-17;31-37;38-43;9-20;9-30;40-48
+8-26;17-36;39-42
+20-21;31-37;9-15;9-30
+1-6;14-15;14-17;6-7;6-25;9-30;5-32
+1-5;1-9;17-35;16-24;9-31
+15-19;13-32;16-29;19-41
+1-9;17-29;33-39;32-44;9-31
+1-4;17-28;6-8;31-37
+1-4;1-6;1-8;15-19;20-22;8-28;11-24;6-7;6-17;16-17;31-47;32-48;38-43
+1-5;12-13;14-15;20-22;8-20;17-24;9-15
+1-11;15-18;21-31;31-45
+1-11;15-19;8-26;6-8;32-42
+25-26;21-31;13-33;48-49
+1-9;1-11;16-17;38-43;24-50
+0-1;12-13;33-40;6-28;48-49;9-20;40-48
+1-9;12-13;8-28;11-17;9-17;5-8;24-31;19-41
+14-17;13-33;32-48;18-23
+1-5;25-26
+17-24;6-7;6-11;16-24;7-13
+1-6;17-20;17-28;17-24;11-38;6-28;9-20;40-48;24-45
+17-18;17-29;6-17;9-15;3-9
+25-26;16-24;31-45;9-15
+0-1;8-24;13-32;13-33;11-38;9-31;5-32
+1-5;1-6;1-11;12-13;14-15;15-19;8-16;13-33;17-25;17-26;9-15;9-19;5-8;40-49
+1-5;23-24;25-26;13-33;6-28;6-34;9-31;9-30;5-7
+15-19;17-28;17-25;6-8;31-46;32-44;9-20;40-49;19-51
+15-18;32-42;9-31;5-8
+1-5;14-15;14-17;20-22;16-24;5-32;18-23
+0-1;1-7;1-9;27-28;17-36
+1-10;15-19;20-21;27-28;6-28;6-25;31-47;38-43;24-31
+5-7;19-51
+20-21;27-28;6-7;9-20;5-7;24-50
+2-3;1-7;14-17;25-26;27-28;17-29;11-38;6-28;6-17;39-42;18-23;19-41
+15-18;17-24;6-34;32-48;9-20;18-23;3-9
+1-10;8-20;31-46;32-42
+1-11;24-45;24-50
+1-6;32-48;32-42
+0-1;11-24;5-32;5-7;24-38
+14-17;8-24;16-29;18-23;24-38;19-41
+1-7
+1-11;8-26
+1-9;25-26;31-46
+11-24;7-13;9-30;5-8;19-51
+2-3;17-36;6-25;9-20;9-17;19-41
+14-17;20-21;8-24;17-18;31-37;18-23;19-41
+8-20;8-26;39-42;16-17;31-47;32-44;32-42;9-30;5-8
+2-3;17-25;9-20;40-49
+1-4;1-5;1-7;1-8;16-17;32-42;9-20;5-32
+33-39;16-17;31-46;9-15;18-23;24-38;19-20
+1-10;14-15;17-26;16-24
+2-3;1-5;8-24;17-35;17-24;7-13;9-20;9-31;19-20
+1-5;27-28;13-32;17-18;6-8;6-34;32-42;7-13;5-7;19-41
+20-21;8-24;3-9
+17-18;16-29;5-32;24-38
+23-24;17-36;11-38;6-8;16-29;9-19;24-45
+12-13;8-20;17-18;17-24;17-36;32-48;9-19;24-31
+12-13;8-28;32-42;24-38;24-31
+1-10;17-29;9-17;40-49;24-50
+15-19;6-7;48-49;24-45;19-41
+25-26;8-20;8-28;8-24;21-31;33-40;7-13
+17-36;31-45;32-42;9-15;9-19
+1-4;1-10;16-17;3-9
+48-49;9-30;40-49
+1-10;14-17;31-45;24-38
+20-21;21-31;6-7
+1-10;17-20;17-18;17-28;6-11;38-43;9-30;5-32;5-7
+8-16;17-28;17-29;11-24;18-23
+17-18;17-25;6-17;39-42;16-29;32-44;24-31
+27-28;17-18;11-24;31-37;38-43;9-15;19-51
+17-18;32-48
+27-28;8-28;8-26;6-34;16-17;19-41
+1-4;14-16;8-16;9-19;24-45;19-51
+24-38;19-20
+1-8;33-40;5-8
+0-1;13-33;17-24;17-26;33-40
+1-9;21-31;17-26;33-39;9-15
+15-19;8-28;8-26;11-38
+1-6;15-18;20-22;21-31;11-17
+1-8;12-13
+2-3;25-26;8-28;13-33;17-35;31-37;32-48;32-42;18-23
+8-16;6-28;9-20;3-9
+14-15;14-17;8-16;8-26;17-18;6-28;16-29;40-49
+1-4;14-16;8-16;17-20;17-18
+8-16;6-28;6-8;31-37;19-20
+15-18;15-19;17-25;6-25;6-8;32-44;32-42
+0-1;13-32;38-43;24-45
+13-33;11-38;6-17;6-34;32-42;9-17
+2-3;1-6;17-36;18-23
+14-17;27-28;31-46;32-42;24-50
+1-4;14-15;9-30;9-19
+1-4;1-9;1-10;23-24;27-28;8-20;13-32;6-34;9-19;18-23
+1-9;16-24;32-44;48-49;18-23
+31-45;31-46;31-37
+0-1;1-6;20-22;8-20;8-28;17-24;17-29;33-39;6-8
+8-28;13-33;17-28;48-49;9-31;19-41;19-20
+1-6;8-28
+1-7;15-18;15-19;17-29;16-24;31-45
+0-1;13-33;31-47;3-9
+33-40;6-25;5-8
+14-16;17-36;33-40;6-8;9-20
+20-21;13-32;17-28;17-24;6-34;48-49;9-20
+8-20;17-24;17-26;17-36;40-48
+31-47
+1-4;8-16;8-28;17-18;31-37;24-38
+8-26;17-26;31-47
+13-32;11-17;32-48;48-49;7-13
+25-26;27-28;13-32;6-25;6-17;16-17;9-17;18-23
+1-9;23-24;11-24;40-48
+8-24;33-39;16-17;32-48;24-50
+2-3;15-18;20-22;39-42;31-47;3-9;19-51
+1-11;27-28;40-48;40-49
+1-7;1-11;20-22;8-28;17-28;6-11
+0-1;17-20;6-28;38-43
+12-13;16-24;3-9
+1-5;9-20;9-31
+15-19;17-26;16-29
+15-18;31-47;40-48
+40-48;19-41
+17-25;16-29
+1-4;20-21;8-26;13-33;31-37;38-43
+17-20;17-24;6-25;7-13
+17-35;6-25;6-17
+1-5;1-10;24-38
+1-6;13-32;11-24;32-42;9-20
+8-26;17-18;31-46;9-15;40-48
+14-15;16-24;31-46;32-48;32-42;9-31;9-19
+20-21;20-22;23-24;11-24;11-17;19-41
+8-24;17-18;17-24;31-45
+1-7;17-25;17-26;9-17
+15-18;27-28;17-26;17-36;16-24;32-48;9-31;40-48
+17-29;6-25;6-17;3-9
+20-22;17-36;32-44;9-30;18-23;24-31
+11-24;6-8;31-46
+27-28;31-47;32-44;9-30
+1-9;17-20;17-28;6-34;32-48;32-44;9-30;18-23
+2-3;1-9;17-24;11-17;40-48;19-51
+1-8;15-19;13-33;17-24;16-17;24-31;19-20
+14-17;6-28;24-50
+12-13;23-24;6-8;32-42;9-20
+0-1;2-3;8-16;9-17;40-48;24-50
+12-13;8-16;8-26;17-25;17-29;33-39;32-42;9-15
+15-18;8-28;31-46;9-15
+1-9;31-46;32-42
+6-28;40-48
+14-15;17-36;11-17;16-29;31-46;38-43;5-32;24-50
+20-21;6-17;9-20;9-17;3-9;19-51
+1-4;12-13;11-17
+1-4;20-21;23-24;17-20;6-25;19-41;19-20
+15-18;20-21;17-35;11-24;6-25;5-32;19-20
+1-8;8-28;39-42;48-49;40-49;24-38
+2-3;1-7;1-11;17-20;9-20;5-7
+15-19;8-20;6-17
+6-7;18-23;40-49
+6-8;6-34;39-42;9-15
+25-26;17-28;17-24;17-26;33-40;7-13;24-45
+1-9;8-26;33-40;31-45;9-20;9-31
+16-17;32-48;19-41
+14-15;17-35;17-36;6-34;38-43;5-7;3-9;19-51
+15-19;6-8;6-11;32-42;9-19;24-31;19-41
+8-26
+1-6;8-16;17-35;6-17;9-19;19-41
+1-4;1-8;20-21;20-22;17-25;31-47
+1-11;6-25;6-34;7-13;5-8
+15-19;24-50
+11-38;16-17;18-23;19-51
+1-7;8-26;31-37;48-49;9-15;24-50
+16-17;9-20
+0-1;2-3;15-19;17-25;6-34;32-48;32-42;9-20
+31-37;3-9
+39-42
diff --git a/examples/failures/failures-0.07 b/examples/failures/failures-0.07
new file mode 100644
index 0000000..3f1d247
--- /dev/null
+++ b/examples/failures/failures-0.07
@@ -0,0 +1,1000 @@
+1-6;1-11;17-18;33-40;6-28;9-19
+1-9;12-13;11-24;39-42;16-24;32-44;9-17;5-32;24-38
+1-9;25-26;6-8;32-48
+11-38;9-31;5-32
+14-16;11-17;6-25
+8-16
+20-21;8-20;8-26;17-36;32-44;24-31
+8-24;33-40;38-43
+15-19;6-28;48-49;5-7;24-38
+0-1;17-20;17-25;11-17;6-17;39-42;16-29;9-31;18-23;3-9;19-20
+6-8;31-47;9-17;40-49
+8-28;13-33;31-45;31-37;24-38;24-31;19-20
+1-4;8-16;17-36;6-34
+0-1;17-18;6-7;16-29;9-20
+15-18;17-20;19-41
+2-3;1-5;17-18;11-17;38-43;24-38
+1-8;40-49;3-9
+1-9;25-26;17-35;9-17
+33-39;9-19
+14-16;20-22;8-28;17-35;9-19
+2-3;1-11;14-16;11-17;31-47;48-49;7-13;9-19
+2-3;14-17;15-19;6-8;9-19
+6-25;6-17;5-7
+0-1;14-15;13-33;16-24;5-7
+1-7;23-24;8-16;8-28;8-24;17-24;38-43;9-30;40-48;24-45
+1-5;25-26;6-28;31-45;24-31
+1-11;15-18;27-28;8-26;17-26;11-38;33-40;38-43;9-17
+0-1;20-21;17-20;17-26;6-7;24-31
+17-26
+1-9;14-15;6-25;39-42;38-43;9-20;18-23;19-20;19-51
+1-6;12-13;14-16;23-24;8-16;11-24;32-48;5-32;19-20
+39-42;31-45;48-49;9-30;24-38
+6-17
+8-28;5-7;40-49;24-45
+33-39;16-29;18-23;24-38;24-31;24-45
+1-4;1-8;6-28;48-49;7-13;24-45
+1-9;6-7;6-25;16-24;5-8
+14-15;15-18;15-19;17-36;31-46;32-44
+23-24;9-30;9-17;24-38;3-9
+14-15;6-34;31-47;5-8;19-41
+1-4;1-5;20-22;17-18;17-29;33-40;6-7;39-42;31-37;9-31
+1-9;27-28;11-17;7-13;24-38
+14-17;17-18;17-24;6-28;6-25;6-8;31-46;32-44
+0-1;1-8;20-21;27-28;17-28;11-24;38-43;24-45
+14-16;8-26;17-29;31-45;24-45
+1-6;14-16;15-19;23-24;27-28;5-8
+1-5;15-18;11-38;33-39;9-20
+1-11;11-17;9-31
+1-10;20-21;27-28;8-20;6-7;6-11;16-29
+15-18;25-26;5-8;5-7;19-20
+1-5;1-6;15-19;17-25;6-8;31-46;32-44;24-50
+1-9;8-28;17-35;32-48;48-49;24-45;19-20
+8-16;8-24;17-28;11-17;6-7;16-24;16-29;32-48;24-45
+23-24;13-33;17-35;11-38;31-45;9-15;9-17;40-48;24-31;24-45;3-9
+20-22;6-28;38-43;19-51
+1-10;12-13;14-17;11-24;6-17;31-37
+1-9;14-15;8-20;17-18;11-24;16-24;40-48
+17-35;31-37;40-48
+8-16;8-24;16-29;16-17;31-45;18-23;19-51
+14-15;15-19;20-22;11-38;33-40;48-49
+1-5;14-16;21-31;7-13;5-32;40-48;3-9;19-41
+15-18;6-25;32-42;19-51
+13-33;5-7
+1-10;8-28;31-46;5-7;40-48;24-50
+1-8;20-21;8-26;17-36;11-17;31-37;19-51
+14-17;17-20;9-31
+0-1;1-7;6-34;31-45;48-49;40-48;24-31
+1-4;1-7;8-20;17-25;32-48
+1-10;21-31;17-24;6-11;32-48;7-13;19-20
+16-17;31-46;19-20
+1-6;14-17;11-17;33-39;33-40;40-48;40-49
+1-5;1-10;8-28;17-29;6-28;5-32;19-20
+15-18;8-16;7-13;9-30;18-23
+14-16;15-19;21-31;9-20
+20-22;8-26;17-20;17-26;31-37;48-49;24-31;3-9
+1-11;17-28;17-26;6-17;31-47;32-44;5-7;40-49;24-38
+17-26;9-30
+8-20;8-28;33-39;6-11;16-29;32-48;9-31;40-48
+17-20;24-38
+0-1;12-13;15-19;11-24;6-8
+20-22;17-18
+1-7;6-28;32-42;9-15;40-49
+15-19;17-24;11-17;9-19;5-8
+0-1;12-13;8-28;8-26;17-35;32-48;32-44;38-43;9-15;9-20;9-19;3-9
+1-9;15-18;17-28;17-25;6-34;16-17;32-48;7-13;9-31;9-19
+20-21;17-35;33-39;31-45;9-19;24-38
+14-15;13-33;33-40;6-25;9-20;18-23
+2-3;15-19;17-35;17-20;6-11;16-17;31-47;9-15;5-32;40-48
+2-3;27-28;8-20;17-36;32-42;5-7
+1-10;8-16;17-35;17-25;16-24;48-49;9-17;5-8;24-31;19-20
+6-7;6-17;9-30;40-48;3-9
+8-24;17-29;6-8;19-20
+17-35;11-38;6-34;9-15
+1-4;1-5;20-21;8-26;33-39;16-29;7-13
+17-35;11-24;31-47
+1-6;15-18;20-22;8-16;13-32;6-17
+1-8;1-11;17-25;32-42;9-31;3-9;19-41
+14-16;25-26;13-32;11-17;16-29;38-43;24-31
+14-16;17-28;6-8;40-49;24-45;19-41
+1-6;12-13;14-15;9-17
+13-32;17-18;33-40;6-28;9-20
+8-20;17-29;11-38;39-42;5-32
+14-15;15-19;31-37;5-7
+1-5;1-9;13-32;17-18;11-17;9-31;24-50
+1-6;16-24;5-32
+25-26;13-32;17-18;31-45;7-13;40-48;24-38
+17-24;31-47
+15-18;11-24
+1-9;17-20;11-38;9-17;40-48;24-38;19-51
+23-24;13-33;11-17;33-40;6-34;16-17;31-46
+0-1;13-32;31-37;40-49;24-31
+14-16;8-26;6-17;32-44;40-48;24-38;19-51
+1-5;17-25;31-45;48-49;38-43
+1-6;17-28;9-20
+12-13;14-16;8-26;13-33;17-29;39-42;48-49
+20-21;25-26;21-31;17-25;17-36;11-38;31-45;9-30
+1-6;1-8;27-28;17-36;9-15;9-30;9-17
+13-32;16-29;31-47;40-49;24-31;24-50
+0-1;27-28;8-16;17-35;17-18;6-28;31-37;9-15;9-20;24-45
+1-4;1-9;20-21
+1-6;12-13;14-15;15-18;8-20;8-24;17-35;17-18;11-24;6-34;32-44;5-32;19-41
+1-5;8-16;13-32;6-11;16-17;31-37;48-49;7-13
+1-8;8-26;13-33;17-20;17-28;6-7;9-20;40-49;19-41
+1-7;17-26;31-46
+6-17;16-17;32-44;5-7
+1-7;1-10;17-35;17-18;17-26;6-11;39-42;19-41
+15-19;23-24;8-24;13-33;17-28;17-26;16-24;32-48;32-44;40-48
+14-16;13-32;16-29;38-43;3-9
+14-15;21-31;33-39;6-11
+8-20;33-40;6-34;16-17;31-47;32-42;40-48;40-49
+14-15;25-26;8-28;19-20
+17-20;31-46
+1-7;21-31;17-24;11-17;16-24;32-48
+23-24;11-24;48-49;5-8
+1-9;17-35;17-18;17-24;17-29;6-28;6-25;16-29;31-37;9-20;3-9;19-41
+14-15;14-17;6-7;16-24;38-43;5-7;24-31;24-45
+1-6;8-28;18-23
+1-8;1-10;17-35;17-18;6-34;5-8
+2-3;14-17;17-28;11-17;6-8;9-20
+20-22;31-46;31-47
+0-1;8-16;5-32;24-38
+23-24;8-20;13-33;6-8;9-15;9-20;5-7;40-49
+14-15;8-26;33-40;38-43
+2-3;8-24;8-26;11-17;7-13;9-15;24-38;3-9
+2-3;1-10;14-15;20-21;17-36;6-25;9-20;18-23;24-50
+1-4;8-28;17-36;32-42;48-49;24-45
+1-5;1-7;8-28;21-31;17-29;31-37;9-20
+1-4;11-24;32-48;9-19;5-8
+1-4;1-5;1-11;9-20;9-19
+0-1;20-21;23-24;8-24;17-20;11-38;9-19;24-31
+8-20;13-33;9-19;5-8;18-23
+2-3;1-6;1-8;9-20
+2-3;1-10;12-13;14-17;31-46
+1-7;14-16;27-28;8-28;21-31;13-33;6-25;16-29;32-48;48-49
+8-24;17-25;9-20;9-31
+1-6;15-18;17-24;11-17;6-34;32-44;9-17;5-7;19-41
+23-24;17-29;39-42;38-43
+1-6;1-7;11-24;11-17;39-42;32-48;7-13;19-41
+2-3;1-5;20-22;9-20;9-30;24-50;19-41
+2-3;12-13;31-37;7-13;18-23;40-49
+1-6;1-10;8-16;8-24;11-24;6-25;16-17
+1-11;14-17;17-29;11-17;33-40;31-47;48-49;9-20
+8-26;17-35;6-11;39-42;24-31
+0-1;25-26;6-28;32-44
+2-3;14-15;23-24;9-15;9-20
+1-9;13-33;6-34;39-42;31-37;40-49;3-9
+1-7;6-7;6-17
+1-7;1-10;15-18;39-42;31-45;19-51
+1-11;15-18;25-26;8-16;24-50
+6-8;6-11;32-48
+15-19;20-21;21-31;19-20
+2-3;1-6;8-20;17-20;39-42;9-20;9-17;24-50
+0-1;2-3;1-4;1-8;1-9;12-13;20-22;17-25;17-36;11-24;11-38;33-40;6-8;6-11;19-20
+17-28;17-26;11-24;6-28;31-47;9-15;9-31;18-23;3-9
+1-4;1-8;27-28;13-33;17-26;16-24;24-50
+1-5;1-10;23-24;17-26;6-7
+1-8;1-11;14-17;48-49
+17-25;6-8;31-37;9-15;24-50
+15-18;17-25;16-24
+15-19;20-22;17-18;6-7;16-24;9-15;9-20;9-31;19-41
+12-13;25-26;8-16;17-29;33-39;6-7
+1-7;8-20;11-24;6-8;19-41
+39-42;38-43
+23-24;21-31;13-33;11-38;6-28;24-31;19-41
+1-9;15-19;17-29;48-49
+8-16;38-43;9-20
+12-13;20-21;7-13;5-32;5-8
+25-26;39-42;3-9
+0-1;17-20;11-38;33-40;6-8;32-44;40-49
+9-17;5-8;19-20
+8-20;17-24;17-29
+1-10;15-18;20-21;23-24;24-38
+2-3;15-19;17-29
+2-3;1-8;1-9;8-20;5-7
+6-17;9-20;5-7;24-31
+1-6;20-21;8-28;17-24;6-7;31-47;40-49;3-9
+14-16;20-22;17-29;32-44;48-49;9-15;9-17;18-23
+12-13;14-16;13-32;17-20;17-24;33-39;6-25;9-20
+2-3;1-5;14-17;13-33;11-24;9-30
+2-3;1-4;1-6;17-36;11-38;6-7;6-8;6-34;31-37;19-41
+1-4;15-19;17-36;9-20;40-49
+17-28;6-28;16-17;32-44
+8-26;17-20;33-40;6-28;39-42;16-24;3-9
+1-9;15-18;8-20;13-32;6-7
+1-11;12-13;25-26;8-16;17-35;32-44;9-20
+13-32;7-13;9-31;18-23
+1-6;14-15;17-28;6-25;31-37
+33-39;40-49
+14-15;21-31;17-29;16-24;48-49;7-13;5-8;24-38
+6-11;31-46;19-41
+1-10;17-20;31-45
+8-24;11-17;7-13;9-31
+1-9;13-33;17-24;11-17;33-39;33-40;6-25;6-34;9-20;9-17
+1-9;8-20;17-25;6-11;16-29;31-37;9-19;40-49
+1-11;17-25;9-19
+0-1;1-5;12-13;15-18;33-39;16-24;31-47;9-19
+17-29;9-20;9-19
+1-7;13-33;11-17;33-40;31-46;32-48;18-23
+6-34;31-45;32-42;7-13;9-31;24-45
+1-8;31-37;9-20;40-49;24-45
+13-33;17-35;11-24;6-25;6-8;16-29;31-47
+25-26;21-31;11-24;16-24;5-7
+1-10;39-42;32-48;5-7
+14-16;15-18;8-16;6-34;31-37;24-50
+12-13;8-16;6-7
+14-17;17-26;32-48
+1-6;1-7;8-16;17-26;6-17;6-11;16-17;48-49;9-31
+1-7;14-16;17-25;17-26;31-37;18-23;40-49;3-9
+1-4;15-18;17-36;9-15;24-45
+2-3;1-4;17-29;17-36;6-34;6-11;16-24
+1-4;1-8;8-24;17-20;17-36;11-38;6-7;32-48;18-23;24-50
+1-5;20-22;31-47;19-20
+1-8;1-9;6-8;9-31;40-49
+8-16;17-35;33-40;6-25;16-17;31-37;32-44;19-20
+8-28;17-20;17-28;16-29
+21-31;17-24;31-46;48-49;19-51
+1-10;20-22;21-31;11-38;16-24;31-46;32-42;38-43;9-20
+1-6;1-11;13-33;19-41
+14-16;15-19;6-7;48-49;9-15;19-51
+23-24;25-26;17-25;11-24;6-34;9-20;9-31;40-49;19-41
+8-28;13-33;31-37;9-15;24-50
+17-29;11-38;33-40;16-17;31-47;32-44;7-13;24-31
+0-1;1-9;6-7;9-20;9-30
+1-6;1-10;17-20;31-46;32-42;9-30
+1-5;1-11;21-31;9-17;40-49
+14-17;17-35;17-24;6-7;6-25;9-31
+0-1;1-8;25-26;17-35;17-26;17-36;39-42;16-29;38-43;9-20;40-49
+1-8;15-19;23-24;17-28;6-34;39-42;24-31
+1-6;20-21;25-26;17-20;16-29;32-42
+16-17
+14-15;8-16;17-25;6-7;6-17;5-7;3-9
+1-10;12-13;33-39;6-8;32-48
+1-6;14-16;15-18;8-28;8-26;17-20;17-28;17-36;11-24;33-40;6-25;39-42;16-24;9-20;19-20
+1-4;1-8;12-13;8-16;48-49;7-13;19-20
+1-9;8-28;6-11;31-45
+1-4;1-8;25-26;8-20;17-36;33-40;31-47;5-32
+20-22;21-31;9-20;9-17;24-31;3-9;19-51
+8-26;17-26;6-17;32-44
+1-8;1-11;14-17;17-28;11-38;31-46;9-15;5-8
+
+1-9;20-21;6-17;31-47;9-20;5-7;19-51
+13-32;17-25;31-37;5-8
+0-1;8-26;6-28;7-13
+14-15;25-26;11-38;16-17;32-42;9-20;24-50;3-9
+27-28;6-7;16-24;38-43
+8-16;9-17
+15-19;27-28;8-20;8-28;13-32;17-18;17-28;33-40;9-20
+0-1;14-15;8-16;6-11;16-29;31-45;31-37
+1-8;8-28;17-35;17-26;11-38;31-45;32-42;5-7
+27-28;21-31;6-28;39-42;48-49
+2-3;1-9;8-24;17-28;6-17;19-51
+2-3;14-17;27-28;6-11;16-24;16-17;32-42
+8-26;13-32;32-44;9-17;3-9
+23-24;27-28;17-25;11-24;6-34;18-23
+1-8;17-26;11-24;6-25;6-11;9-15
+27-28;8-16;17-26;11-38;38-43;24-45
+1-6;15-18;17-18;17-26;17-29;33-39;16-29;19-51
+27-28;17-35;6-25;16-24;24-38
+20-22;17-20;11-24;9-20;9-19
+1-9;17-20;11-17;6-25;38-43;19-20
+1-9;14-15;25-26;27-28;17-36;11-17;32-42;9-19;3-9;19-51
+1-6;14-16;23-24;17-24;11-38;16-29;48-49;9-19;24-38;24-31;19-41
+1-10;14-15;27-28;8-28;21-31;17-28;33-40;6-8;32-44;9-20;9-19
+1-4;15-19;17-24;6-34;38-43;9-31;9-30;24-45;19-51
+14-17;17-25;24-45
+1-5;17-24;17-25;11-17;9-20
+1-8;11-38;6-25;16-17;3-9
+1-6;1-11;8-24;17-24;32-48;32-42;5-7
+0-1;23-24;25-26;8-20;31-45;32-48;9-20
+1-10;20-21;8-28;31-37;9-31
+1-6;1-7;1-8;17-28;17-29;17-36;6-17;5-8;24-31
+1-7;21-31;17-18;17-28;11-24;11-17;7-13
+1-6;1-7;8-16;8-26;11-24;32-42;9-20
+13-32;6-8;6-34;48-49;19-51
+20-21;6-17;16-29;16-17
+1-11;33-40;39-42;5-8;24-38
+17-20;17-25;11-17;31-37
+17-25
+1-7;1-8;1-9;6-7;16-17
+1-7;15-19;19-51
+15-18;23-24;17-20;17-18;17-29;6-25;6-17;6-11;9-20
+1-7;13-33;33-40;9-31;40-49
+1-5;1-10;38-43
+27-28;9-31;24-31
+21-31;33-39;6-11;32-42;9-20
+2-3;27-28;8-24;31-47;40-49;24-50
+0-1;1-7;1-10;12-13;17-35;5-32;18-23;40-48
+15-19;27-28;13-33;17-36;5-8
+1-9;14-15;23-24;17-35;31-46;32-44
+1-4;14-16;14-17;17-25;31-37;38-43;19-51
+1-4;1-8;14-15;33-40;16-29;5-8;3-9
+2-3;15-19;20-21;33-39;18-23
+1-4;1-8;12-13;14-15;38-43;9-15;3-9
+12-13;15-18;8-16;17-18;6-25;39-42;32-42;40-48
+1-10;20-22;11-24;6-7;16-17;5-8;19-20
+24-50
+20-21;31-46;31-37;32-44;5-7;40-48;19-20
+1-5;1-6;1-9;21-31;6-28;9-15;5-7;40-49;19-41
+20-22;17-28
+1-11;8-20;6-34;6-11;9-15;9-20;19-41
+0-1;14-16;20-21;8-16;8-28;32-42;38-43
+14-16;14-17;8-26;17-28;11-38;6-8;6-17;48-49;24-45
+13-33;31-47;40-48;19-51
+1-4;1-5;1-11;15-19;17-20;16-24;31-47;32-48;5-8
+1-9;23-24;9-15;9-30;19-41
+1-11;17-26;6-17;32-42;9-30
+17-26;6-7;9-15;40-48;19-51
+17-26;11-24;11-38;6-28;39-42;31-47
+1-7;8-24;6-34
+0-1;1-8;1-10;15-19;17-18;33-40;31-46;18-23;40-48;40-49
+25-26;8-20;13-32;17-29
+12-13;14-17;8-26;17-35;6-25;38-43
+1-6;17-25;11-17;31-47;32-42;9-20;24-31;24-45;19-51
+1-9;8-24;6-7;6-28
+1-7;14-16;21-31;6-7;6-25;24-38
+14-16;33-40;31-45;9-15;5-8;24-38
+14-16;8-16;13-33;17-29;7-13;9-31;9-17;19-20
+1-4;15-18;17-20;17-36;5-32;40-48
+0-1;1-10;20-21;6-34;48-49
+1-5;12-13;25-26;13-32;11-38;33-39;6-7;19-41
+1-9;23-24;8-24;17-29;11-24;40-48
+27-28;8-16;8-28;17-20;11-24;33-40;32-42
+1-6;20-21;8-20;6-8
+1-11;15-19;27-28;21-31;6-7;31-46;32-48;38-43;40-48
+0-1;13-32;17-18;24-38
+12-13;27-28;17-24;6-8;6-11;31-47;9-19
+14-15;8-26;13-32
+20-21;17-35;33-39;6-7;6-28;32-44;9-20;9-19;5-8;24-31
+25-26;27-28;13-33;17-24;6-34;39-42;16-29;9-19;24-38
+1-5;15-18;17-35;17-28;6-11;16-24;31-37;9-19;3-9
+14-16;31-47;9-15;40-48
+1-7;1-11;14-16;8-28;17-25;6-7;31-46;9-17;24-38
+12-13;15-19;20-22;8-26;13-32;6-11;32-44;5-32
+14-15;11-24;39-42;31-45;32-42;40-48
+13-32;17-28;38-43;9-31;24-31
+8-16;19-20
+6-28;6-17;6-34;16-17;40-48
+1-8;1-11;20-21;8-24;13-33;6-17;9-15;40-49;19-51
+1-6;8-16;17-28;48-49;24-38
+1-5;12-13;8-28;17-20;6-11
+13-32;33-40;6-7;40-48;24-50;19-41
+15-18;17-18;9-31;24-38
+1-4;11-38;6-11;39-42;19-41
+1-4;1-8;23-24;8-20;8-24;6-7;6-28;5-8
+21-31;16-17;31-37;32-48
+1-4;1-8;14-16;15-19;17-36;6-11;32-48;32-44;32-42;48-49
+17-28;17-36;6-17;6-34;9-15;5-8
+20-21;11-38;6-7;31-47;9-31;9-30
+1-10;14-15;6-7;16-29;31-37;7-13;5-8;18-23
+1-11;8-24;17-24;17-25
+14-17;6-17;16-24;32-42;5-7;40-48
+8-28;8-26;17-29;33-40
+25-26;8-20;8-26;13-33;6-7;31-47;40-49
+14-15;6-28;6-8;48-49;9-15;40-48;24-50
+1-11;8-24;16-24;31-37;19-20
+13-32;17-28;17-26;17-29
+20-22;17-35;17-26;9-17;40-48;19-20
+1-9;8-16;17-26;5-32
+14-17;27-28;19-51
+0-1;8-16;11-38;6-8;6-11;16-17;31-45
+1-5;25-26;17-18;11-24;31-45;32-48;38-43;40-48
+21-31;13-33;33-39;16-29;32-48;24-31;19-41
+32-42;19-51
+8-20;6-17;40-48;19-41
+1-8;12-13;13-33;6-7;6-8
+1-7;8-16;17-20;6-28;6-25;48-49;7-13
+1-7;1-8;17-25;9-31;40-48;24-31
+11-24;33-40;39-42;18-23;19-41
+1-4;1-8;15-19;5-32
+23-24;17-28;33-39;32-42;24-50
+12-13;31-47;24-45;24-50;3-9;19-51
+1-4;1-8;8-28;13-32;17-36;16-29;32-44
+1-10;14-16;20-22;17-25;31-37
+12-13;13-33;6-8;6-34
+8-20;17-20;6-11
+6-28;16-24;24-38
+15-18;25-26;17-18;6-17;9-15;40-48
+1-6;12-13;14-15;8-24;17-25;16-24;5-32;19-41;19-20
+0-1;21-31;31-46;38-43;9-15
+1-11;8-16;5-8;40-48;24-31
+8-26;32-44;7-13;24-50
+15-18;20-22;13-32;16-24;5-8;24-45
+14-17;17-35;6-28;39-42;16-24;31-45;32-48
+14-16;8-24;32-48;5-8;40-48
+1-10;12-13;14-16;8-20
+11-24;31-37
+1-7;14-17;8-28;31-46;32-42
+1-7;8-16;17-20;33-39;9-17
+1-6;15-18;17-18;32-48;18-23;3-9
+15-19;17-29;9-30;5-7
+8-26;11-24;9-30;9-19;5-7;24-31;24-50
+13-33;31-37;31-47;9-19
+1-11;8-24;6-7;6-11;16-29
+0-1;1-5;1-6;17-24;6-25;48-49;9-19;5-32
+20-21;20-22;17-29;6-28;9-19;40-49;24-50;19-20
+14-17;17-24;9-15
+1-5;8-28;33-40;6-7
+1-4;1-8;13-32;17-24;17-36;5-32;18-23
+1-9;15-19;20-21;20-22;27-28;32-42;9-31
+1-8;1-10;1-11;14-16;21-31;31-46;7-13;24-38
+14-16;15-18;27-28;8-24;17-20;6-28;6-17;6-34;38-43
+0-1;1-8;8-16;17-36;11-17;32-42;9-15
+17-28;16-24;16-29;5-8;5-7;40-48;3-9
+17-25;32-48;32-42;48-49;9-17;19-51
+1-8;15-19;8-20;21-31;19-51
+12-13;14-15;17-20;17-26;33-39;19-41
+14-17;17-26;6-25;32-44;9-15
+8-16;17-24;17-26;6-17;16-29;19-51
+25-26;17-28;17-29;11-17;6-28;6-34;48-49;7-13;9-15;18-23
+20-22;11-38;31-45;32-42;5-32
+14-16;20-21;27-28;6-7;6-17;31-47;9-31;3-9
+15-18;6-28;16-17;48-49
+0-1;1-8;8-28;6-25;39-42;31-37;9-15
+1-6;8-20;33-40;31-46;5-7
+21-31;11-38;31-46;9-30;5-32
+1-8;13-33;11-24;11-38;31-45
+20-22;25-26;21-31;6-34;19-41;19-20
+2-3;25-26;17-28;17-25;32-44;32-42;7-13;24-50
+2-3;1-6;1-10;17-35;17-18;39-42;3-9
+15-19;6-25;31-46;9-15;18-23;19-51
+17-35;17-18;6-11;24-50
+1-4;17-20;32-42;24-31
+1-6;20-21;13-32;17-28;16-17;31-37;32-44;9-31;40-49;19-51
+2-3;14-16;15-18;6-8;48-49;9-17
+2-3;1-4;25-26;8-20;8-16;17-36;33-40;9-30;3-9
+1-7;1-10;20-22;33-39;6-11;32-48
+1-10;14-17;33-40;6-11;16-24;24-31
+1-10;1-11;12-13;17-28;17-36;11-38;6-34;9-30;24-38
+20-21;6-17;31-46
+1-7;1-9;15-19;21-31;11-24;6-28;31-45;5-7
+0-1;1-7;8-26;33-39;6-25;9-31
+2-3;14-15;14-17;16-17;32-48;5-32;24-50;19-41
+2-3;1-11;17-29;16-24;48-49;9-30
+25-26;27-28;8-28;39-42;16-29;7-13;9-17
+1-6;1-10;8-24;32-42
+0-1;23-24;8-20;17-28;6-8;5-32
+17-25;7-13;9-15;9-31;24-38;19-51
+6-7;31-37
+2-3;27-28;21-31;19-20
+1-9;8-28;16-24;16-17;9-15
+1-11;12-13;14-16;27-28;8-26;9-17;24-38;19-51
+17-24;6-28;6-17;24-31;3-9
+27-28;32-42
+13-33;17-24;24-38
+14-17;27-28;17-29;6-7;48-49
+17-24;6-34;31-37;31-47
+1-8;27-28;11-24;33-40;16-17;9-17;5-8;18-23;24-31;19-51
+15-18;17-18;17-24;17-25;33-39;6-28;39-42;32-44;19-41
+0-1;14-16;8-24;16-29;9-20
+1-8;17-29;17-36
+1-4;15-19;25-26;8-16;8-26;17-36;31-45;5-8;19-51
+1-4;12-13;23-24;25-26;27-28;8-26;21-31;17-36;39-42;32-42;24-38;24-45
+13-32;6-7;6-17;31-37;24-31;24-45
+14-17;20-22;6-34;5-8
+1-10;1-11;17-35;17-26;6-8;16-29;16-17;24-38
+17-26;31-47;32-44;9-15;9-19;5-32;5-7;24-50;19-20
+8-28;17-35;17-26;6-7;39-42;9-19;5-8
+20-21;8-24;33-40;9-19
+1-7;15-19;23-24;25-26;8-20;13-33;31-45;7-13;9-19
+1-5;14-16;13-32;17-18;6-28;6-25;6-11;40-49
+1-7;1-11;15-18;13-32;11-24;6-28;6-25;16-29;40-49;24-31
+17-29;24-38;24-45
+1-10;20-21;17-18;9-17;24-45;19-41
+13-32;6-34;32-44;32-42;38-43
+1-9;12-13;6-7;48-49;24-38;3-9;19-41
+13-32;17-29;6-17;24-31
+14-16;14-17;20-21;23-24;8-16;8-28;11-17;6-28;40-49
+1-11;14-15;31-37;24-38
+8-20;17-35;9-31;9-17;24-45
+14-15;24-45
+17-35;17-28;17-25;11-17;31-46;7-13;38-43;9-31;9-30
+12-13;13-32;13-33;17-35;33-40;9-30;5-32;5-7;24-38;24-45;3-9
+15-18;15-19;20-22;8-16;11-24;11-38;6-34;31-45;31-46;48-49
+0-1;1-5;13-32;17-35;11-24;32-48
+17-28;6-8;32-48
+14-15;27-28;13-32;17-29;6-11;9-30;18-23;19-20
+21-31;33-40;6-28;9-30
+1-4;1-10;27-28;17-36;31-46;31-37;38-43;19-20
+1-4;8-28;13-32;17-18;17-36;6-25;6-17;32-42;9-15;24-31
+14-16;27-28
+1-7;14-16;14-17;15-19;6-7;9-15;24-45
+48-49;9-30;9-19;24-45
+1-7;1-8;27-28;6-8;24-50
+1-5;20-21;25-26;33-39;16-29;32-44;32-42;19-41
+15-18;27-28;31-37;48-49;40-49;24-31
+1-9;1-10;1-11;11-24;6-8;31-45;31-46;38-43;19-41
+8-16;8-28;13-32;7-13
+17-24;33-40;16-24;9-31
+8-20;21-31;6-28;16-17
+8-26;17-24;31-47
+20-22;33-39;6-34;39-42;32-44;32-42
+20-21;8-24;5-8
+15-18;23-24;6-11;31-47;9-19;5-7;18-23
+1-11;17-18;6-7;6-8;31-46;7-13;9-17
+0-1;17-35
+1-9;20-22;6-28;5-8;5-7;19-20
+1-5;12-13;14-16;15-18;8-28;17-35;17-24;6-8;16-29;16-17;24-50
+1-10;23-24;9-15;24-45;19-20
+1-8;6-34;32-44;5-8;24-45
+1-5;25-26;17-29;6-25;32-42;9-15;9-17
+8-20;33-39;6-7;16-24;31-46;32-48;9-31
+0-1;1-7;5-8;18-23;3-9;19-41
+1-7;12-13;15-19;32-42
+1-9;1-10;15-19;20-21;17-36;6-17;9-17;9-19;19-41
+17-26;17-29;11-24;6-8;16-17;48-49
+1-9;1-10;23-24;17-26
+1-4;17-26;11-17;31-45;31-37;24-45;24-50
+14-16;17-20;17-26;16-24;32-42;9-31
+0-1;2-3;1-6;15-18;25-26;17-35;33-39;6-7;6-34;31-46;9-30;24-31
+2-3;1-5;8-26;17-36;16-29;31-47;5-32
+1-9;8-16;13-33;5-7;18-23
+11-24;31-45;31-46;31-47;9-30;5-32
+27-28;17-28;17-24;17-25;6-25;6-8;9-31;24-50
+1-5;14-17;8-16;21-31;40-49
+8-26;11-24;9-20;9-19;3-9
+14-15;17-20;11-17;6-28;16-17;32-42;24-38
+1-10;20-22;39-42;16-29;9-30;24-50;19-20
+13-32;6-34;6-11
+31-37;24-38;24-31;19-20
+15-18;8-20;8-16;8-26;17-20;11-24
+11-17;9-19
+9-19;5-7;18-23;24-38
+14-16;33-40;31-46;9-19
+17-20;6-11;9-19;3-9
+20-21;33-39;6-34;24-38
+0-1;1-6;11-24;11-38;6-25;31-46
+1-8;6-17;16-17;31-45;32-48;40-49
+23-24;17-24;11-17;6-7;31-37;32-48;18-23
+14-17;8-26;13-33;17-35;31-47;24-38
+1-4;1-6;1-7;20-21;17-24;17-25;6-25;16-24;32-44;24-50
+1-7;20-22;8-20;17-35;17-28;32-42;3-9;19-51
+1-4;1-5;1-7;15-19;17-36;6-7;9-31;19-41
+12-13;13-32;17-35;24-45;24-50
+5-7;24-31;24-45
+1-9;23-24;32-44;32-42;5-7
+14-16;17-28;17-25;6-7;6-25;19-20
+1-6;15-19;17-36
+20-22;11-17;6-17
+1-11;31-37;40-49
+1-6;14-17;8-26;9-15;9-31;19-20
+12-13;8-16;5-8;24-31
+1-9;25-26;13-32;31-45;32-44
+8-20;17-29;6-28
+1-6;15-18;8-24;33-39;6-17;6-34;32-48;5-8;24-45
+1-7;21-31;17-24;24-45
+0-1;1-11;14-15;15-19;11-17;6-25;16-29;7-13
+20-21;17-24;17-29;9-17;5-8;24-50
+1-6
+25-26;13-33;9-20
+2-3;14-17;25-26;8-24;8-26;13-32;16-24;5-7
+1-8;13-33;6-11;16-29;9-30;5-8;5-7
+14-16;20-22;8-20;17-29;33-40;32-42;48-49;38-43
+1-6;1-8;6-28;6-25;6-34
+0-1;1-5;6-8;6-11;16-17;31-37;31-47;5-8;24-31;24-45;19-41
+8-16;17-26;11-24;31-45;24-45;3-9
+1-10;15-18;20-22;17-26;16-24;19-20
+1-4;8-28;21-31;17-26;6-8;6-17;6-11;9-30;5-8;24-38
+1-9;17-28;9-31
+1-4;27-28;13-33;17-36;32-48;48-49;19-20
+1-4;1-9;8-16;6-28;6-8;48-49
+1-4;17-36;33-39;6-11;5-8;24-38;24-50
+1-11;12-13;21-31;17-24;17-29;6-34;32-44;5-32;40-48;24-31
+6-28;6-8;5-7;18-23;40-49
+14-16;8-28;17-36;11-24;6-17;16-24;32-42
+0-1;14-17;6-11;5-8;19-41
+23-24;8-24;33-40;31-37
+1-10;1-11;15-18;13-32;31-46;32-44;24-50
+1-5;13-33;17-35;33-39;6-11;16-24;31-47
+21-31;32-48;24-31
+15-19;17-25;17-29;6-34;7-13;9-31
+1-4;1-8;1-11;14-17;23-24;32-48
+8-28;6-7
+1-11;20-22;8-20;11-17;6-28;31-46;31-47;32-44
+1-6;20-22;8-28;21-31;13-33;5-32;18-23;24-50
+17-35;17-28;31-47;32-42
+0-1;14-17;8-16;33-39;39-42;16-24;31-46;32-44;7-13;24-38;3-9;19-41;19-51
+15-19;23-24;8-24;8-26;17-35;17-29;19-20
+1-9;15-18;16-29;31-37
+11-38;32-48;32-42;40-49;24-38;19-51
+11-24;33-40;6-28;31-45;32-48
+25-26;8-16;21-31;17-25;17-29;39-42;31-46
+14-16;14-17;31-46;24-31
+1-6;8-20;8-24;17-25;9-31
+1-4;1-5;6-8
+0-1;23-24;17-20;33-39
+1-10;8-28;13-33;17-24;9-17;9-19
+1-6;1-8;17-36;31-47;9-19;5-7
+20-21;8-24;9-19
+14-16;6-25;6-34;31-45;31-46;9-31;9-19
+0-1;14-16;15-18;17-24;24-45;19-41
+16-29;32-42;9-30;3-9
+20-22;8-20;17-24;9-30;9-17;40-48;19-51
+1-8;14-16;8-20;11-17;33-40;9-17
+1-6;17-25;17-29;33-40
+21-31;17-24;17-25;5-8
+1-11;8-28;39-42;9-31;40-48
+20-21;6-17;31-46;31-47;18-23
+1-6;27-28;8-16;8-26;13-33;6-25;32-44;48-49;9-30;40-49;24-31;3-9;19-20
+0-1;14-17;15-19;21-31;33-40
+17-25;6-17
+1-10;1-11;39-42;32-48;9-17
+1-6;15-18;17-35;17-26;11-38;31-45;31-46;5-7
+1-5;14-16;8-16;17-26;17-29;32-44;24-50
+14-15
+14-16;17-28;17-26
+1-8;17-26;11-24;16-17;48-49;38-43
+1-5;20-22;8-26;3-9
+14-17;23-24;11-38;6-25;9-31
+1-10;17-24;6-28;31-37;31-47
+1-4;1-7;12-13;13-33;6-17;39-42;31-46;7-13;9-15
+8-24;21-31;17-24;17-25;33-39;32-44;18-23;19-41
+14-17;33-40;9-15;40-48
+0-1;1-6;13-32;17-28;11-38;16-17;38-43;24-50;3-9
+15-18;8-20;16-29;9-31;5-32
+15-18;13-32;39-42;31-47;9-15;9-20
+8-28;17-36;39-42;31-45;31-46;40-49
+1-5;12-13;17-36;6-25;9-17;24-31;19-20
+1-6;20-21
+1-9;13-32;11-38;33-39;31-47;32-44;5-32;40-48;24-45;19-20
+8-16;21-31;17-29;18-23
+1-10;1-11;14-17;8-28;17-18;16-17;9-31
+20-21;25-26;17-28;32-48;40-48
+12-13;23-24;17-18;33-40;6-17;32-48
+1-6;8-20;13-32;11-24
+17-35;48-49;40-48
+1-11;14-15;25-26;6-34;16-17;7-13;5-7;24-38;19-51
+15-18;20-21;24-45
+12-13;17-29;32-48;9-31;5-32;24-31
+1-9;1-10;1-11;15-19;8-24;33-39;6-25;16-17;31-47;32-48;9-15;5-7
+1-5;1-7;20-22
+1-7;14-15;23-24;25-26;16-24
+17-29;7-13
+
+1-8;12-13;14-17;20-22;8-20;8-24;17-25;6-28;6-17
+17-18;32-42;38-43;9-30;24-45
+11-38;33-39;16-17;9-30;3-9;19-20
+1-5;17-25;31-45;32-44;48-49;24-31
+1-4;8-26;17-35;6-25;16-24;31-37;48-49;18-23;24-50
+23-24;8-28;17-24;39-42;9-17;5-32
+8-24;13-32;17-18;17-25;9-31;9-30;40-49
+1-8;1-9;8-28;31-37;7-13;5-7;24-38
+1-6;13-32;17-18;6-25;31-45;9-15;9-17
+15-19;20-21;17-28;6-34;32-42;18-23
+0-1;1-7;1-11;8-20;17-35;17-36;11-17;24-38;24-50
+1-7;14-17;8-24;21-31;11-24;16-24
+1-6;1-9;17-35;17-25
+1-10;6-7;16-29;24-50
+12-13;8-28;18-23;24-38
+12-13;17-20;17-18;17-25;11-24;11-17;9-20;19-20
+17-28;18-23
+1-11;15-18;23-24;13-32;16-24;31-37
+12-13;20-22;8-24;11-17;33-40;16-17;32-42;9-17;9-19;5-32;40-49;24-31
+2-3;1-5;20-22;13-33;17-25;17-26;9-31;9-19;5-8
+2-3;1-11;12-13;23-24;17-26;31-37;9-15;9-17;9-19;24-45;19-51
+1-8;17-28;17-26;33-40;6-8;24-45
+0-1;20-21;8-28;6-25;32-44;5-8
+14-17;48-49;40-49;19-51
+17-28;16-29;3-9;19-41
+2-3;1-9;32-42;5-8;24-31
+31-46;9-31;24-38;19-51
+2-3;14-16;6-17;6-34;18-23
+15-18;23-24;13-33;33-39
+17-29;11-24;6-25;31-37;31-47;7-13
+15-19;17-28;16-29;32-42;24-45
+0-1;1-4;17-35;32-48;48-49;24-38;24-45;19-41
+1-9;32-48;3-9
+2-3;20-22;21-31;31-46;5-7
+2-3;8-28;8-24;17-18;17-36;24-38
+1-8;23-24;17-36;31-37;5-8;18-23
+17-25
+8-28;21-31;13-32;13-33;6-8;19-20
+1-10;20-22;25-26;33-39;32-48;32-42;24-45
+12-13;15-19;17-28;39-42;31-47;24-31;24-45
+1-11;15-18;8-28;13-32;17-20;6-8;3-9
+1-9;17-29;6-28;6-25;6-17;31-46
+1-5;8-20;8-26;17-28;11-38;39-42;31-37;38-43;9-17;19-20
+13-33;17-35;16-29;48-49
+17-18;31-47;19-20
+1-10;14-17;13-32;33-39;31-45;9-30
+1-7;15-19;13-33;11-17;32-44;32-42;9-30;19-51
+1-7;1-11;11-38;6-28
+1-6;8-24;16-29;9-20
+1-6;17-20;17-29;31-37;9-17
+1-8;14-17;8-28;24-31
+8-16;11-24;6-7;6-11;16-29;31-46
+15-18;8-24;8-26;11-17
+8-26;31-45;19-51
+1-7;1-9;15-19;20-22;17-18;17-25;40-49
+1-6;1-7;23-24;25-26;8-28;6-25;31-37;9-17
+17-29;11-24;11-17;6-28;32-44
+14-17;17-20;17-28
+20-22;6-17;32-42
+8-20;40-49;24-31
+1-4;1-8;14-15;39-42;16-17;48-49;19-51
+2-3;1-5;17-28;6-8;31-46;40-49
+2-3;14-15;14-17;31-37;9-17;24-50
+1-7;25-26;6-11;19-20
+1-9;1-11;8-24;13-32;17-36;33-39;32-44;7-13;9-31
+8-20;17-36;33-40;19-20
+12-13;14-16;17-18;17-25;6-11;5-32;40-49
+6-25;16-17;9-15;19-41
+13-33;17-29;6-17;31-46;31-37;9-17;24-45
+0-1;1-10;20-21;8-24;13-32;17-28;17-26;6-11;9-15;19-41
+11-17;33-39;39-42;16-17
+14-17;17-24;17-26;33-40;32-42;9-31;3-9
+8-26;21-31;13-32;17-26;6-17
+8-26;17-24;17-29;19-51
+1-5;1-9;14-15;20-21;11-24;5-7
+17-24;16-17;32-48
+1-8;15-18;6-25;32-48;19-51
+8-16;17-25;9-31;24-31;24-45
+17-28;24-45
+6-8;32-42;38-43;24-38
+20-22;8-28;17-20;17-29;16-29;32-48
+20-22;17-26;31-45;31-47
+17-28;33-39;31-45;32-48;5-8
+1-9;14-17;20-21;11-38;6-34;32-44;9-30;9-19;24-31;24-50
+0-1;1-4;1-7;14-17;15-19;33-40;31-37;31-47;9-17;9-19;19-41;19-20
+1-4;21-31;17-29;16-29;9-19;5-8;24-45
+8-20;17-35;11-24;31-45;7-13;9-15;9-19;24-45;24-50;19-41;19-20;19-51
+1-4;17-36;11-24;6-28;9-30;24-45
+1-8;15-18;8-28;17-36;6-25;32-44;9-15;9-30;5-8
+1-9;17-29;5-7;19-51
+23-24;17-28;6-8;16-17;31-37;9-17;5-7
+1-11;6-34;39-42;32-42;48-49;18-23
+23-24;17-26;9-31;9-17
+1-7;8-26;17-18;6-17;19-51
+8-16;21-31;6-8;31-47;3-9
+
+25-26;8-20;32-44;24-50;19-51
+25-26;17-29;31-37;24-38
+2-3;20-22;21-31;11-17;32-44;9-15
+13-33;33-39;33-40;31-47
+11-38;6-7;6-34;39-42;16-24;9-15
+1-11;12-13;13-32;17-25;5-7;3-9
+1-9;23-24;13-33;17-35;17-20;17-18;17-25;6-25;6-11;16-17;9-17;5-7
+0-1;1-8;15-18;17-26
+2-3;8-16;8-28;11-17;31-37;32-42;5-32;18-23
+2-3;27-28;8-24;17-35;17-18;6-7
+8-20;39-42;16-17;19-20;19-51
+1-6;27-28;21-31;17-20;33-39;24-50
+1-9;6-28;32-48;32-42;7-13;3-9
+14-16;13-32;6-25;6-34;32-48;38-43;40-49;19-51
+0-1;2-3;14-16;8-24
+2-3;1-6;17-20;16-29
+8-26;33-40;6-7;6-11;18-23;24-31;19-41
+1-4;1-5;16-17
+2-3;17-18;17-36;33-40;6-17;24-45;3-9
+1-4;1-8;13-33;17-36;11-17;6-28;31-45;32-48;24-38
+6-11;32-42;48-49;9-31;19-51
+2-3;1-8;1-10;20-21;20-22;6-7;6-17;16-24;38-43;5-7;3-9
+1-9;14-17;23-24;8-20;5-7;24-38
+21-31;17-35;17-18;17-26;6-34;31-37;19-51
+17-25;17-26;17-36;6-8;32-42;24-50
+17-35;17-18;17-26;11-17;16-24;31-47
+17-26;11-24;31-46;9-31;19-51
+1-5;1-9;6-8;48-49;9-15;3-9
+0-1;14-15;15-18;17-20;6-7;16-29;24-38
+9-20
+2-3;20-22;11-38;6-7;16-29;40-49;24-45
+8-16;33-39;24-31
+1-6;1-11;12-13;8-20;13-33;17-28;11-17;7-13;9-30;18-23;19-20
+6-25;6-34;31-46;38-43;9-17
+23-24;33-40;16-17;31-45;31-37;5-32
+1-9;11-24;9-15;5-8;5-7
+1-5;32-44;48-49;38-43;9-30;24-45;3-9
+2-3;14-15;21-31;17-28;9-30
+14-17;20-21;6-17;31-46;31-47;5-8;24-31
+17-35;6-28;6-25;9-31
+1-6;1-7;15-19;27-28;13-33;32-42
+1-7;14-15;8-28;17-18
+15-18;20-22;23-24;17-25;6-34;9-17;5-8;24-50
+14-16;25-26;8-16;31-37;31-47;3-9;19-41
+2-3;32-44;7-13
+1-4;1-6;1-8;17-18;33-40;6-8;16-29;16-17;32-42;5-8
+1-5;8-26;33-39;9-31;24-45
+14-17;8-26;17-20;16-24;31-45
+11-24;6-25;6-8;5-8
+2-3;1-11;15-19;23-24;8-24;21-31;17-29;6-11;31-37;5-32
+2-3;1-9;8-16;11-38;32-48
+17-36;6-17;31-46;24-31;3-9;19-20
+24-50
+1-7;15-18;9-19;19-51
+8-20;17-35;17-24;9-19
+0-1;1-11;8-24;9-19;24-45;24-50
+1-6;8-26;17-24;11-38;33-39;6-8;6-11;31-45;48-49;9-19;40-48;40-49
+2-3;14-15;23-24;32-42;9-17;9-19;24-31
+2-3;8-28;6-25;31-37;9-15;3-9
+12-13;20-21;17-25;17-29;7-13;19-51
+1-6;1-10;20-22;11-24;31-45;31-47
+14-17;17-18;11-24
+8-20
+0-1;33-39;6-7;39-42;31-45;9-31
+2-3;1-8;20-21;33-40;48-49
+23-24;17-20;31-37;32-42
+1-9;6-11;32-44;40-48;19-51
+25-26;8-16;21-31;11-38;6-8;31-46
+14-16;20-21;13-33;6-34;39-42
+14-16;19-20
+1-4;14-16;15-19;9-15;9-17
+13-32;17-18;11-17;31-37;19-20
+1-10;8-24;6-25;6-17;9-15
+1-8;14-15;14-17;8-20;8-28;17-20;33-39;32-42
+15-19;25-26;21-31;6-11;48-49;9-20;5-8;24-31
+8-16;17-35;17-26;31-46;9-30;3-9
+1-8;1-9;25-26;17-26;17-36;6-17;16-29;48-49;5-7;19-41;19-51
+12-13;15-18;8-26;17-35;17-26;33-40;32-42;38-43;9-15;5-8
+20-22;8-24;17-20;11-24;6-8;6-34;32-48;9-31
+21-31;13-32;17-28;11-24;6-25;9-17;24-50;19-51
+15-19;23-24;27-28;13-33;9-30;5-8;40-49
+8-28;16-24;31-45;32-44;7-13;9-30;24-31;3-9
+1-5;1-7;1-11;27-28;17-20;17-25;19-51
+0-1;1-7;12-13;14-16;14-17;20-22;25-26;8-24;48-49;5-32;5-8
+15-19;17-28
+2-3;1-4;17-36;11-38;6-28;31-47;3-9
+8-26;40-49
+27-28;8-26
+1-10;23-24;21-31;17-18;17-28;17-29;6-25;39-42;31-37;5-32
+15-18;8-16;6-17;32-42
+12-13;17-18;11-38;5-8
+1-6;25-26;19-20
+1-5;25-26;13-32;13-33;17-29;11-24;31-47;24-50
+15-19;20-21;8-28;17-35;39-42;32-48;32-42;5-8
+8-16;13-32;16-17;5-32
+1-6;1-7;8-26;17-35;6-34;16-24;31-45;40-48;24-50;3-9
+2-3;12-13;8-26;11-24;31-37;9-15
+1-7;14-16;6-28;32-42;9-31
+14-16;14-17;20-22;6-8;40-49
+1-4;1-8;39-42;40-48
+1-5;1-6;11-24;16-24
+1-8;13-33;17-36;11-38;6-11;32-42;19-41
+13-32;17-29;17-36;40-48;24-31;24-45
+1-9;20-22;24-45
+8-20;21-31;13-33;6-25;16-29;31-45;31-47
+1-11;8-28;17-28;6-17;16-17;31-37;40-48
+23-24;17-29;11-38;32-44;9-15;18-23
+6-7;6-11;32-48;9-20;5-8;24-45;19-41
+25-26;13-32;33-39;39-42
+17-20;6-8;32-44
+6-11;16-17;38-43;9-31;9-17;40-49
+1-10;8-16;8-28;24-38;19-41
+0-1;17-25;16-29;3-9
+15-18;6-34;32-42;24-31;19-41
+17-29;31-47;32-48;5-7;24-38
+1-8;15-19;27-28;33-39;6-28;32-48;9-30
+8-20;17-35;6-8;6-17;31-45;32-44;9-30
+27-28;17-28;11-24;16-29;32-42;24-38
+1-11;20-21;17-35;39-42;7-13;9-30;24-45;19-20
+1-10;20-21;17-35;17-29;9-19
+6-17;9-17;9-19;24-45
+0-1;20-22;17-18;16-17;38-43;9-19
+14-16;21-31;6-34;16-29;31-46;32-44;9-30;9-19;40-49
+1-5;14-15;8-28;17-18;17-28;17-24;17-26;17-29;16-24;9-15;24-50
+1-4;15-18;25-26;17-26;33-39;38-43;5-32;18-23;19-51
+13-33;17-18;17-26;11-24;11-17;6-28;6-8;32-42;40-48
+8-20;11-24;5-7
+16-24;16-29;31-46;7-13;5-7;19-51
+13-32;6-7;6-8;9-31;9-17;40-48
+14-16;15-18;6-8;16-17;19-51
+0-1;14-17;23-24;24-45
+1-6;1-11;8-16;8-28;17-36;6-34;31-45;31-47;32-48;48-49;24-45
+25-26;9-15;40-48;19-20
+25-26;6-17;32-42;3-9
+1-9;1-10;24-31
+1-6;14-16;8-26;17-25;38-43;5-32;40-48
+1-11;15-18;20-22;27-28;8-16;13-32;6-17;5-8
+1-10;20-22;8-28;17-28;6-8;24-38
+13-32;31-46;38-43
+2-3;33-40;6-28;6-11;31-37;5-7
+14-17;8-20;17-18;31-45;9-31;5-32;5-7;40-48
+14-16;11-38;6-11;9-20;5-8;19-20
+1-5;1-8;1-9;17-28;32-42;5-7;3-9
+1-11;20-22;17-29;33-39;16-24;24-31
+1-8;6-11;16-17;24-50;19-41
+1-6;13-32;17-18;18-23
+14-17;8-26;6-25;6-8;31-45;32-42;40-49;19-41
+0-1;31-46;31-37;32-48;48-49;5-8
+17-20;32-44;9-31
+1-6;23-24;6-8;6-34
+1-4;11-17;6-11;31-45;38-43;19-20;19-51
+33-40
+0-1;2-3;1-8;23-24;25-26;8-16;17-25;33-39;6-7;6-17;48-49;7-13;38-43;9-17
+13-32;17-20;17-25;11-38;6-28;31-46;19-20
+2-3;1-10;15-19;17-35;6-17;6-11;32-44;9-30;19-51
+2-3;13-32;17-24;48-49;5-7
+0-1;8-28;21-31;11-17;31-47;7-13;24-31
+20-21;20-22;23-24;8-16;17-20;17-24;17-36;6-11;31-37;5-32;24-50;19-51
+8-20;6-34;31-46;40-49
+1-5;12-13;14-15;27-28;17-25;32-44;9-30
+1-7;15-18;23-24;8-16;17-35;17-36;6-7;6-28;9-31
+1-7;17-28;31-46;32-42;7-13
+17-35;32-44;9-30;24-50
+2-3;12-13;17-28;19-51
+1-6;14-16;23-24;21-31;6-25
+1-10;14-16;20-21;25-26;17-35;11-24;16-24;31-47;32-42;5-32;5-7;40-48;24-38
+11-17;33-39;48-49;24-50;19-51
+1-11;27-28;8-20;17-35;6-34;39-42;18-23
+11-38;32-48;9-17;40-48;24-38
+0-1;12-13;27-28;17-20;16-24;32-42;40-49;19-51
+14-15;17-28;17-25;7-13;19-20
+1-9;15-18;27-28;11-17;33-40;38-43;40-48;3-9
+1-10;14-15;25-26;8-16;8-28;17-26;6-25;31-46;9-31;19-20
+1-9;8-24;8-26;17-26
+6-34;6-11;32-44;9-20;5-8;5-7
+23-24;17-25;6-34;39-42;31-37;24-38;24-45
+1-5;21-31;6-7;7-13;24-45;24-50
+1-4;20-22;8-28;6-8
+8-20;31-45;38-43;9-31;24-31;19-51
+12-13;14-17;8-24;11-38
+1-9;17-36;6-7;5-7;40-49
+15-19;17-28;11-17
+1-7;15-18;33-39;9-19
+1-10;6-7;39-42;9-19;24-45
+13-32;17-35;11-38;6-8;32-42;9-31;9-19;24-38;24-45;3-9;19-51
+1-9;8-24;8-26;17-18;9-30;5-32;24-50
+23-24;6-8;31-37;40-49;24-31
+1-10;8-20;17-28
+12-13;25-26;11-17;7-13;19-20
+1-6;14-17;20-21;8-28;17-35;11-24;6-17;6-11;32-44
+8-24;17-20;11-38;6-25;19-20
+33-39;16-24;31-45;7-13
+21-31;6-34;6-11;31-37;32-42;48-49;40-49;24-50;3-9
+1-5;1-6;1-8;14-15;23-24;8-16;11-17;6-8;5-7
+1-7;15-18;15-19;33-40;39-42
+1-7;11-38;6-11;16-24;16-29;9-30;19-41
+11-17;6-25;19-51
+0-1;1-5;6-7;32-44;9-30;5-8;24-31
+1-6;8-20;17-25;31-47;18-23
+0-1;27-28;8-16;17-20;17-24;24-31
+21-31;32-44;32-42;7-13;9-30;5-32;19-41
+1-4;1-5;14-15;20-21;8-24;11-38;9-17;5-8;24-38
+12-13;8-26;17-29
+17-20;18-23;40-49;19-51
+1-4;17-28;5-8;24-38
+14-16;15-18;13-33;6-28;6-8;5-7
+1-6;11-38;9-15;3-9;19-51
+1-10;17-29;33-40;6-28;6-11;39-42;16-24;16-17;9-20;5-8;24-45
+0-1;17-20;48-49;24-38;19-20
+12-13;33-40;6-17
+1-7;1-10;6-34;16-24;31-47;19-20;19-51
+1-5;8-26;17-36;11-24;39-42;16-29;31-37;5-32;24-38
+20-22;23-24;17-20;24-50
+1-9;14-17;8-16;17-28;6-8;19-51
+1-11;17-25;24-38
+17-25;6-25;5-32
+20-22;6-8;9-17
+1-6;1-10;15-18;15-19;21-31;31-37;38-43;24-31
+2-3;20-22;8-28;16-29;24-45
+17-35;17-29;6-17;31-45;31-46;7-13
+12-13;6-34;31-47;32-42;48-49;5-32;19-51
+25-26;8-16;13-33;17-20;17-26;18-23
+8-26;17-26;7-13
+1-9;13-32;17-26;9-15;9-17;19-51
+1-6;23-24;13-33;11-38;33-40;31-37;32-44;5-32
+17-28;32-48;38-43;9-15;24-38
+12-13;14-17;15-19;8-28;17-25;31-46
+0-1;1-5;17-25;11-17;6-25
+1-4;1-6;1-8;13-32;11-24;9-31;24-38
+2-3;12-13;23-24;25-26;11-24;32-44;48-49
+15-18;8-20;21-31;33-40;32-44
+17-35;17-29
+14-16;32-42;5-7;24-38
+1-6;12-13;14-15;13-33;17-35;16-17;31-37
+1-5;1-11;27-28;17-36;6-25;6-11;7-13
+20-22;23-24;8-16;17-35;11-38;32-44;48-49;9-30;18-23;24-50
+14-17;11-24;16-17
+1-6;25-26;6-11;16-24;3-9;19-41
+8-20;8-28;13-32
+1-11;17-36;32-42;38-43;40-49
+0-1;1-9;14-15;8-24;21-31;33-39;16-17;32-42;9-17;24-38
+8-26;17-29;17-36;11-38;33-40;6-11;31-45;32-48
+1-6;33-39;32-48;9-30
+14-15;23-24;21-31;17-28;6-7;31-37
+1-7;14-16;6-8;31-47;5-7;19-41
+1-7;1-11
+8-28;13-32;33-40;9-19
+12-13;11-17;6-7;6-8;16-17;9-31;9-19;24-45
+1-10;17-35;17-28;9-19;24-45;19-20;19-51
+2-3;1-5;12-13;16-24;9-19;19-20
+8-26;17-20;17-24;31-47;3-9
diff --git a/examples/failures/failures-0.08 b/examples/failures/failures-0.08
new file mode 100644
index 0000000..8465ab0
--- /dev/null
+++ b/examples/failures/failures-0.08
@@ -0,0 +1,1000 @@
+15-18;20-22;27-28;21-31;17-29;6-17
+16-29;9-15;24-31
+1-8;23-24;8-28;11-24;11-17;16-17;5-7
+1-8;20-21;16-24;5-7;3-9
+16-24;18-23
+13-33;17-35;17-29;5-32;24-45
+12-13;14-15;14-17;16-17
+1-8;23-24;17-18;11-24;33-39;31-47
+20-21;25-26;17-20;17-36;38-43;19-51
+15-18;17-28;9-17
+1-11;12-13;8-26;5-32;24-50;19-51
+1-11;33-39;31-37;7-13;40-48;24-31;19-20
+0-1;20-22;27-28;17-25;6-7;6-17;6-11;19-41
+33-40;31-37;32-44;9-17;9-19;18-23
+17-35;17-20;5-8
+1-10;14-15;21-31;17-24;6-25;6-17;16-24;31-47;9-17;5-8
+1-8;12-13;14-17;20-21;17-18;6-25;16-24
+1-10;8-28;8-26;6-34;9-15;9-17
+0-1;1-9;25-26;17-35;5-32
+14-16;17-25;31-37
+15-19;8-28;17-18;17-28;11-24;9-31;9-17;40-49;24-38;19-51
+17-20;31-45;3-9
+12-13;27-28;8-16;8-24;8-26;33-39;6-28;31-37;9-30;19-20
+1-6;1-11;25-26;17-25;17-36;6-17;6-34
+1-9;12-13;20-22;21-31;17-26;33-39;33-40;16-24;16-17;32-44;32-42;9-19;24-38;3-9
+1-5;1-11;14-15;8-28;17-18;17-36;11-38;6-7;9-19;40-48;19-20
+1-9;1-11;20-22;8-24;17-36;9-15;9-19
+1-11;14-16;17-20;17-36;16-17;5-8
+1-7;1-11;14-16;17-26;17-36;6-34;9-31;9-17;19-51
+14-17;20-22;8-24;8-26;17-35;17-26;6-7;6-11;32-42;24-50
+1-4;1-8;27-28;8-20;17-24;6-11;31-37;32-44
+1-10;12-13;15-18;20-21;6-28;39-42;31-47;32-44;24-50
+8-16;17-20
+1-9;33-39
+14-15;6-34;40-49;3-9
+1-6;14-15;20-21;8-24;17-35;17-26;11-17;33-40;6-7;16-24;16-29;31-37;32-44;38-43;9-31;9-19
+1-5;1-6;6-8;9-31;19-20
+2-3;1-11;20-21;8-20;13-32;13-33;17-28;17-24;6-7;6-8;16-24;31-46;32-42
+12-13;17-35;17-20;17-24;17-25;5-32;18-23
+15-19;17-18;6-34;32-42;24-31
+1-7;1-11;23-24;8-28;17-28;31-46;24-45;19-51
+1-11;17-29;6-8;16-29;31-46;9-15
+1-6;17-35;6-8;9-30
+1-10;8-24;17-36;6-8;16-17;31-47;5-8;24-50
+12-13;15-19;20-21;8-28;17-36;16-24
+1-4;17-28;11-38;6-34;16-17;9-15;24-38;24-45;24-50;19-41
+2-3;8-26;13-33;17-20;33-40;32-48;32-44;5-32;18-23
+8-26;33-40;16-29;32-42
+8-28;13-32;33-40;16-17;31-47;24-50
+20-22;17-20;33-39;6-7;9-30
+0-1;1-5;14-17;20-21;9-15;5-7;19-41;19-20
+8-28;17-24;31-47;9-17;5-7;24-45
+1-8;23-24;27-28;17-25;32-44
+1-9;15-18;20-22;25-26;8-26;17-29;32-48;32-44
+14-16;31-46;48-49;24-38;19-51
+1-10;14-15;8-28;13-33;11-24;6-28;31-46;31-47;7-13;9-31;5-32
+21-31;17-35;6-28;31-46;32-42;48-49;9-17
+17-28;17-24;17-36;38-43;19-41
+20-21;8-24;17-36;16-24;18-23;3-9
+14-17;17-24;17-26;17-36;16-24;5-8;5-7
+17-26;5-8
+1-4;1-5;12-13;8-24;13-33;17-35;16-29;19-20
+1-4;1-8;20-22;17-20;17-28;16-17;19-51
+8-16;6-25;31-45;9-31
+0-1;1-6;14-17;13-32;9-15;9-19;24-50;19-51
+8-26;17-20;17-24;11-17;9-19
+15-19;11-38;48-49;9-19;24-50
+0-1;1-7;1-10;21-31;6-25;6-34;31-37
+27-28;8-24;17-36;11-17;3-9
+17-18;39-42;9-15;9-17;18-23
+2-3;8-28;21-31;17-28;11-17;16-24;9-30
+0-1;20-21;17-29;33-39;6-11;16-24;31-47;7-13;9-30
+12-13;8-24;6-25;6-11;40-49;3-9;19-41
+1-7;1-11;14-15;15-19;8-28;32-44;9-15;24-45
+1-11;27-28;13-32;32-44;5-32;19-20
+2-3;1-11;15-18;6-8;31-47;32-44;9-31
+0-1;1-11;8-20;11-17;16-17;32-44;48-49;38-43;3-9;19-51
+1-7;15-19;20-22;8-26;17-18;24-38
+2-3;1-4;20-21;16-17;7-13;38-43;5-8
+15-19;17-35;33-39;31-45;32-48;48-49;5-7;19-20
+1-4;1-8;17-35;17-24;11-17;6-7;9-17;24-45
+23-24;17-28;6-28;39-42;16-17;38-43
+17-18;16-29;31-37;3-9
+14-15;15-18;8-20;31-47;40-49
+20-21;8-26;11-38;11-17;5-7
+1-6;1-7;1-11;12-13;31-46;31-37
+1-6;1-11;17-18;17-28;17-24;33-39;39-42;31-46;7-13;5-32;19-41
+1-11;11-38;11-17;31-46;31-37;24-50;19-20
+1-5;14-16;8-20;21-31;19-51
+1-5;1-7;25-26;8-24;17-20;17-26;32-48;24-50
+1-5;1-10;1-11;12-13;5-32
+0-1;20-22;17-26;11-17;6-11
+1-6;20-21;8-16;17-29;33-39;33-40;6-11;16-24;5-7;24-50
+1-8;6-11;32-48
+0-1;1-10;14-17;17-35;5-8;24-50
+14-16;23-24;13-33;17-18;17-36;6-34;9-31;9-30;3-9;19-41
+14-16;8-20;17-25;6-28;6-25;16-29;9-30;24-50
+1-6;12-13;15-18;23-24;8-28;17-28;17-29;33-39;6-28;6-25;16-17;9-15;9-30
+15-19;17-35;11-24;48-49;5-32;24-38;24-50
+0-1;1-5;20-21;25-26;8-16;9-17;5-7;3-9
+1-5;8-16;13-33;17-20;6-17;16-29;48-49;5-7
+1-9;13-32;11-24;6-7;9-15;18-23;40-49;19-20
+1-11;8-16;17-24;17-29;5-7;40-48
+1-6;14-17;15-19;17-25;33-39;6-17;32-44;9-31;40-48;24-38;24-45
+1-6;25-26;6-7;31-47;32-44;32-42
+1-9;17-18;32-44;9-19;24-31
+12-13;17-29;32-48;32-44;9-19;19-41
+1-5;11-17;33-39;6-28;16-24;24-45
+8-20;17-35;17-36;24-31;19-51
+25-26;8-28;17-36;18-23
+1-4;1-6;1-10;8-24;39-42;31-46;9-31
+1-4;13-33;17-28;31-46
+1-6;14-15;6-17;31-47;40-49;19-51
+1-10;15-18;8-26;9-31;5-8;24-45;19-51
+1-7;1-9;12-13;20-22;8-28;48-49;7-13;9-15;9-17;24-45
+8-20;8-24;13-32;5-32;40-48
+20-21;48-49
+23-24;6-7;6-28;6-25;6-8;39-42;9-17;5-7;40-48
+14-15;15-19;8-28;17-28;17-24;6-25;5-7
+17-35;9-31;5-32;24-31
+14-15;15-18;25-26;8-26;17-26;11-24;39-42;31-45;9-30;5-8;24-38
+1-9;17-26;16-17;7-13;5-8
+1-6;15-19;20-22;8-20;11-17;6-8;6-11
+1-6;20-21;17-28;16-29;9-15;3-9
+15-19;31-45;31-47
+9-17;18-23
+1-7;13-33;17-20;17-24;17-36;31-45;48-49;5-7;24-50
+20-22;8-26;17-36;33-40;9-31;5-32;5-7
+1-6;8-20;21-31;17-36;33-40;6-17;48-49;40-48
+1-6;13-32;17-35;17-36;11-17;33-40;6-8;38-43;9-15;19-51
+1-4;1-7;14-15;25-26;11-24;6-8;6-17;16-24;31-47;32-48;9-17
+20-21;16-24;38-43
+12-13;15-19;8-24;6-17
+1-5;23-24;21-31;17-29;11-24;11-38;11-17;16-29;31-47;32-48;5-7
+2-3;1-5;15-18;33-39;6-17;31-37;7-13;5-7;24-38;19-41
+2-3;1-7;1-9;11-38;11-17;6-28
+20-22;23-24;8-24;17-25;38-43
+20-21;8-28;11-17;6-17;19-20
+17-29;6-25;6-8;16-29;38-43;9-15
+12-13;14-16;17-35;17-20;6-17;18-23
+2-3;1-10;14-15;14-17;25-26;11-17;33-39;31-37
+1-8;8-28;6-17;31-45;32-44;5-7;24-38;19-51
+0-1;15-18;6-28;6-11;32-44;7-13;5-7;40-48
+17-35;17-36;6-25;6-11;40-48
+1-4;8-16;8-28;13-33;6-11;16-24;32-42;9-30;18-23;40-48
+1-4;1-8;12-13;25-26;8-16;13-32;17-28;6-34;9-30;9-19
+13-32;17-28;6-25;7-13;24-31
+27-28;8-24;11-24;6-7;31-45;31-46;9-31;9-19
+8-20;17-35;17-24;11-38;16-29;31-46;9-15;9-19
+31-46;24-45;19-41
+1-8;20-22;23-24;8-24;13-33;33-40;48-49;7-13;9-17
+0-1;14-15;8-26;17-26;11-38;33-40;6-34;16-24;31-45;5-8;19-51
+20-21;17-26;11-24;16-24;16-29
+6-17;9-17;5-8;19-51
+16-17;31-37;32-42;9-31;24-45
+25-26;33-39;9-17
+2-3;1-6;8-26;16-17;9-15
+14-16;13-33;17-25;6-28;9-15;24-45;3-9
+1-9;1-11;20-21;13-33;17-35;6-17;6-34;16-29
+1-5;1-11;12-13;15-19;17-36;6-7;16-17;40-48
+0-1;2-3;1-11;17-29;17-36;31-37;32-48
+1-9;1-11;14-15;8-20;17-36;33-39;9-17;40-49
+0-1;17-36;6-25;6-34;31-37;31-47;48-49;9-31;18-23
+14-16;14-17;8-26;17-35;17-20;6-25;16-17;31-47;7-13;9-17;24-31;24-50
+14-16;21-31;11-17;48-49
+17-28;16-29;5-7;24-50
+1-10;23-24;8-20;33-39;31-45;31-47;9-17;24-31;24-45
+15-19;13-32;17-35;6-34;39-42;31-37;24-50;19-41
+1-5;15-19;8-26;11-38;11-17;31-45;31-37
+2-3;1-6;1-8;1-9;14-17;8-26;13-33;11-38;31-46;32-44
+1-6;21-31;17-29;31-46;32-44;9-31;40-48;24-31;24-50
+25-26;8-24;13-32;17-24;11-24;31-45;31-46;32-44;18-23;19-51
+14-16;15-19;27-28;17-25;6-17;31-46;32-44;40-49
+14-15;20-21;6-34;31-37
+2-3;1-6;1-11;13-33;16-24;48-49;9-30;3-9
+1-6;1-7;1-11;11-38;6-11;9-30
+1-9;6-11;31-45;18-23;24-31
+2-3;1-4;14-17;15-19;33-39;6-28;16-17
+15-18;17-36;33-40;7-13
+0-1;1-7;24-31;24-45
+8-20;6-8;16-29;16-17;32-48;5-8;40-49
+1-5;1-10;6-8;5-8;24-38
+17-28;17-26;16-17;24-45;19-41
+1-7;14-17;15-19;23-24;17-26;32-48;24-31;19-51
+1-9;11-24;3-9
+20-22;23-24;8-20;9-19;18-23;24-38
+1-11;15-18;6-25;6-17;48-49;9-15;9-19;19-20
+1-7;1-11;15-19;8-28;8-26;6-25;6-8;9-19
+1-11;20-21;27-28;8-24;39-42;32-48;3-9
+2-3;1-11;17-25;11-24;6-34
+20-21;25-26;16-24;9-31;19-51
+25-26;17-18
+1-5;1-9;14-17;8-28;32-48;7-13;9-15
+8-20;17-28;11-38;5-32;19-51
+18-23;24-45
+1-4;1-10;27-28;17-18;17-29;6-28;31-37;31-47
+12-13;25-26;8-16;17-29;6-34;6-11;16-17;32-44
+1-7;14-17;23-24;11-24;6-17;6-11;31-45;9-31;9-17;5-32;3-9
+20-22;8-20;8-16;13-33;6-7;16-29;32-44;48-49
+1-9;23-24;17-18;31-47;7-13;9-17;18-23;24-38;24-45;19-20
+15-18;8-16;6-34;16-17;31-45;32-44;48-49;24-50
+17-28;11-38;11-17;6-7;6-25;6-34;31-46;19-20
+1-11;23-24;17-28;9-15;40-49
+1-5;11-24;16-24;32-48;9-30;19-51
+13-33;6-7;24-38
+27-28;8-26;9-31;9-17;5-32
+21-31;6-25;31-45;31-37;32-42
+0-1;20-22;8-16;8-28;17-25;6-25;6-11;5-8
+17-24;6-11;31-46;5-8;18-23
+8-24;39-42;16-24;31-46
+25-26;33-40;6-7;48-49;9-17;19-20
+2-3;1-4;27-28;8-26;21-31;13-33;17-25;17-26;6-28;6-25;3-9
+15-19;23-24;13-33;11-24;6-11;31-46;32-48;9-15;5-8;24-31
+13-32;17-26;11-24;6-28;6-34;16-29;7-13;40-49
+1-7;14-15;18-23
+1-6;1-8;14-16;17-35;17-28;16-17;7-13;38-43
+23-24;25-26;11-24
+1-5;8-26;21-31;17-18;17-29;11-38;16-17;38-43;9-31;19-51
+6-7;16-29;31-45;31-37
+33-39;16-17;38-43
+8-24;17-20;17-28;6-28;32-44;48-49;3-9
+14-17;31-46
+11-17;6-17;31-47;9-30;24-31
+2-3;1-7;8-26;6-11;32-42;5-7
+1-7;8-26;17-25;31-46;18-23
+1-8;6-34;31-45;9-30;19-20
+1-9;1-11;8-16;21-31;17-36;33-40;18-23
+0-1;1-11;8-16;17-28;17-25;17-36;9-19;3-9
+1-11;8-16;17-36;9-19
+1-4;1-8;23-24;17-24;9-19
+0-1;17-29;16-24;16-29;16-17;9-15;9-31;24-31
+1-5;15-18;48-49;7-13
+1-5;1-7
+1-8;1-9;20-22;13-33
+1-10;27-28;8-28;17-35;6-11;16-29;18-23;24-45
+12-13;14-16;14-17;11-38;11-17;33-39
+0-1;17-29;11-38;6-11;39-42
+1-11;13-32;33-39;6-11;31-37;24-31;19-41;19-20
+1-6;1-11;20-22;8-28;17-20;17-25;11-17;9-31
+1-11;8-24;21-31;13-33;17-35;31-37;7-13
+12-13;18-23;24-45;3-9
+14-16;23-24;8-28;11-24;31-45;48-49;38-43;9-17;5-32
+2-3;1-7;14-16;14-17;25-26;17-36;33-39;32-42;19-51
+1-6;23-24;17-20;17-28;17-24;17-26;17-36;32-48;48-49
+1-6;14-15;20-21;17-18;17-25;17-26;17-36;11-17;31-37;5-8
+1-4;15-18;8-20;17-26;6-25;31-45;32-44;9-31;5-8
+1-8;8-20;32-48;32-42;5-32;40-49;24-31
+1-4;1-7;20-22;11-24;32-44;19-41
+1-8;25-26;11-17;16-29;32-44;38-43;40-48;24-50
+1-9;1-10;17-18;5-32;18-23;40-48
+1-6;31-45;38-43;24-50
+2-3;14-17;15-19;8-20;13-32;17-24;9-30;40-49;24-38
+1-8;1-11;21-31;7-13;38-43;9-30;24-45
+1-5;1-11;15-18;6-11;16-17;31-47;9-31;9-30
+14-15;8-26;17-28;6-28;6-11;38-43;9-15;9-17;40-49;3-9
+1-6;12-13;15-19;6-28;16-17;48-49;24-38
+1-9;8-24;17-20;11-38;39-42;31-47;38-43
+2-3;15-18;6-7;6-34;16-29;3-9;19-41
+25-26;8-28;13-33;33-40;5-8;18-23
+1-7;14-16;13-32;17-24;11-17;16-24;31-46;5-8
+2-3;14-17;20-22;8-24;11-38;6-8;16-24;31-46;7-13;9-15;9-17
+1-4;6-7;31-46;9-31;40-48
+1-4;1-6;1-8;11-24;31-46;19-20
+2-3;1-7;1-10;13-33;17-25;17-36;32-48
+1-5;14-17;23-24;32-42;24-31;24-45
+1-5;1-10;6-8;6-11;7-13;38-43;40-49
+1-8;14-15;8-26;6-7;6-8;6-11;16-24;16-29;9-19
+1-6;1-7;1-9;12-13;15-18;17-18;17-24;16-24;9-19
+1-4;20-21;13-33;11-17;9-31
+0-1;1-6;1-11;13-33;17-28;6-34;39-42;32-48;9-31;9-19
+1-11;8-28;17-35;17-20;16-29;31-47;48-49;19-51
+1-11;6-7;7-13;40-48
+1-7;1-8;20-22;6-8;40-48;24-38
+8-26;5-7
+1-6;15-19;8-28;13-33;17-35;17-26;6-34;16-24;31-45;31-47;9-30;24-45;24-50
+1-5;1-9;17-26;17-29;11-17;19-20
+1-5;1-8;27-28;8-20;16-17;5-32;24-50
+1-4;25-26;21-31;17-25;11-38;3-9
+1-4;1-9;15-19;6-8;31-45;7-13
+1-5;1-6;1-10;14-15;20-22;8-16;8-24;21-31;18-23;24-31
+1-6;1-10;13-33;17-28;6-25;6-8;6-34;9-15;19-51
+1-6;20-22;17-20;11-38;6-25;6-17;5-7
+15-18;8-16;6-28;48-49
+0-1;1-9;25-26;27-28;21-31;17-35;31-46;24-50
+15-19;6-11;16-29;31-45;31-46;9-17;5-8
+20-22;17-29;6-17;6-34;31-46;9-15;40-48;19-41
+1-5;1-7;32-44;7-13;40-48;19-20
+1-5;25-26;6-17;32-44;40-49
+15-19;17-28;33-39;6-7;16-29;32-48;32-44
+14-15;8-28;17-35;17-29;32-44;5-7;19-51
+1-6;25-26;8-16;8-26;33-39
+1-7;1-8;8-16;8-26;21-31;17-18;17-24;17-29;33-40;6-34;24-38
+1-6;8-16;7-13;9-17;24-31
+1-6;15-19;8-16;6-8;39-42;16-29;18-23
+1-9;20-22;8-28;17-35;17-20;17-36;33-39;48-49
+1-7;12-13;14-17;17-29;17-36;33-40;31-47;9-15;24-31;19-41
+0-1;1-10;15-18;8-20;8-26;17-36;33-40;48-49;40-48;24-45
+16-17;9-17;5-7;40-48
+1-6;21-31;5-7;40-49;24-45;19-20
+23-24;17-20;17-28;33-39;16-17;31-47;7-13;3-9;19-51
+6-25;31-37
+12-13;39-42
+2-3;1-9;12-13;8-24;17-25;11-38;6-28;6-34;16-17;24-31
+25-26;8-26;9-17
+15-18;20-21;21-31;13-33;17-26;16-24;31-45;9-31;9-30;24-45
+13-32;17-28;17-26;6-25;24-31;3-9
+1-9;17-25;17-26;38-43;9-19
+27-28;31-47;7-13;9-19
+1-5;1-10;12-13;8-20;13-32;9-19;5-32;24-31
+1-5;1-8;1-9;14-17;9-15;40-49;24-38;24-50;3-9;19-41
+0-1;2-3;1-4;1-10;17-28;33-39;38-43;5-8;40-48
+1-4;1-7;20-21;21-31;11-38;16-24;31-37;9-31;19-20
+27-28;17-18;11-17;6-28;9-17;24-31;19-51
+1-10;6-11;16-24;31-45
+2-3;17-35;17-18;6-17;6-11;39-42;5-7;24-45;3-9
+8-20;8-26;13-33;5-7
+0-1;6-17;5-32;18-23
+25-26;6-7
+15-18;23-24;17-35;17-20;17-18;6-17;6-34;32-44
+2-3;20-21;17-28;32-44;9-31;19-41;19-51
+23-24;11-24;6-25;16-17;31-47;32-44;48-49;40-49
+17-24;5-7
+14-15;25-26;8-24;13-32;13-33;17-35;17-18;11-38;33-40;6-17
+0-1;1-7;6-7;6-28;31-45
+1-8;17-20;11-24;33-40;6-34;31-47;9-30;5-8;40-48
+0-1;1-9;1-10;27-28;6-25;6-17;31-46;40-48
+1-4;27-28;8-24;33-40;7-13;38-43;9-30;24-38;24-45
+1-10;20-21;17-25;31-46;9-31
+1-9;8-20;6-28;31-46;32-48;32-42;38-43
+12-13;8-28;6-28;31-46;24-31;19-41;19-51
+17-24;6-28;31-46;24-38;24-50
+2-3;14-17;5-7
+15-19;27-28;8-28;8-26;11-38;48-49;24-38
+20-22;13-32;13-33;11-24;6-8;16-24;31-45;31-37;7-13
+0-1;1-4;8-20;13-33;6-17;6-11
+1-8;21-31;17-26;33-40;16-24;32-44;5-7;24-38
+14-15;23-24;21-31;17-26;6-7;6-34;39-42;16-24
+8-16;17-28;17-26;9-17
+11-24;33-39;6-28;31-37;24-45;3-9;19-20
+1-7;15-19;17-25
+0-1;1-6;1-10;31-45;9-31;40-49
+1-11;12-13;15-18;8-24;17-20;17-18;31-47
+1-11;14-16;8-16;13-33;11-17;5-32;5-8
+0-1;17-24;17-29;6-7;31-46;32-44;5-8;24-45
+1-4;14-15;15-19;20-22;8-28;31-46;32-44;9-15;19-51
+2-3;1-4;1-6;8-26;11-17;31-46;32-44;18-23
+25-26;8-26;13-33;17-20;17-26;17-29;11-24;11-38;11-17;6-8;32-44;32-42;48-49;5-7;24-31;19-41
+21-31;17-20;17-36;33-40;32-42
+12-13;23-24;8-20;13-32;11-38;33-39;16-24;38-43;9-31;9-19;19-20
+0-1;1-7;15-18;25-26;27-28;8-28;17-29;6-7;16-24;9-19
+14-16;23-24;17-25;6-25;6-11;16-29;7-13;9-30
+13-32;17-24;11-24;11-38;18-23;40-49
+1-10;8-26;19-41
+1-11;14-17;11-17;33-39;6-28;48-49
+1-9;12-13;20-21;20-22;25-26;6-25;16-17;38-43;9-17
+27-28;8-20;8-24;13-33;6-7;6-25;5-32
+1-5;1-8;11-17;32-42;5-8;24-38
+8-16;8-28;32-44;9-15
+0-1;6-34;31-37;9-30;5-7
+25-26;8-24;13-32;17-28;17-24;33-39;39-42;9-15
+16-29;9-17
+0-1;12-13;17-36;11-17;16-29
+1-4;1-6;23-24;8-20;19-20
+8-16;8-28;13-33;6-7;6-17;48-49
+8-16;17-24;17-25;6-34;32-42
+17-35;11-38;33-40;6-17;32-44
+1-6;1-7;1-9;15-19;17-26;6-8;32-44
+1-6;20-21;8-20;21-31;17-26;11-24;32-44;9-31
+1-9;12-13;15-19;17-28;17-24;9-30;5-32
+16-24;32-48;32-44
+0-1;1-5;33-40;6-34;40-49
+12-13;15-18;27-28;8-16;16-29;18-23
+2-3;14-15;15-19;6-17
+8-24;21-31;39-42;31-45;5-32
+1-5;25-26;8-20;6-17;31-46;19-20
+0-1;20-21;13-32;6-34;16-29;16-17;48-49;9-31;5-8;19-20
+8-24;17-35;17-20;39-42
+14-16;14-17;17-36;11-24;31-45;31-46;31-37;9-15
+0-1;1-4;1-7;1-8;23-24;6-28
+14-15;14-17;23-24;8-20;11-38;11-17;33-40;6-7;31-47;9-30;40-48;24-38
+11-38;9-30
+20-21;16-24;16-29;9-17;19-51
+13-32;32-48;32-42;38-43;5-7;18-23;24-31
+20-22;17-28;17-29;7-13
+1-5;12-13
+13-32;33-39;48-49;24-45
+6-25;6-17;6-34;9-15;19-20
+1-5;1-11;39-42;31-37;32-44
+2-3;1-6;1-11;17-35;11-24;33-40;6-7;6-17;32-44;9-19;5-7;24-31
+1-6;1-11;25-26;33-40;16-17;31-37;32-44;9-19;5-7
+14-15;8-16;17-36;6-17;40-49;19-51
+1-11;12-13;23-24;33-39;33-40;39-42;32-44;5-7;18-23
+1-8;6-34;31-46;32-42
+20-22;27-28;17-35;17-20;6-17
+8-20;21-31;6-7;3-9
+1-6;1-9;8-26;13-33;16-29;31-37
+1-8;6-8;39-42;32-48;18-23
+2-3;12-13;17-25;17-26;11-24;6-34;6-11;48-49;5-7
+1-5;14-17;15-19;17-20;17-26;17-36;6-11;7-13
+8-20;17-28;31-45;40-49;19-20
+2-3;1-6;15-18;27-28;13-33;17-24;31-37;31-47;24-45
+1-6;1-9;14-16;15-18;23-24;11-24;33-39;33-40;6-25;6-8;9-30
+20-21;8-16;8-28;32-42;19-41
+1-9;1-10;1-11;14-15;15-19;8-16;6-8;6-34;16-24;40-49;19-51
+1-11;8-16;17-35;17-25;16-24;31-45;7-13
+8-24;39-42;31-47;32-48;9-30;5-7;18-23
+2-3;1-8;17-18;9-30;5-7;40-48
+14-17;23-24;8-20;21-31;11-24;40-48
+8-24;17-35;17-24;6-34;5-8
+2-3;12-13;23-24;6-8;48-49
+0-1;1-4;1-8;1-9;8-16;17-18;17-28;6-28;6-8;9-15;5-32;19-20
+1-4;14-17;8-16;6-28;19-41
+1-6;1-7;14-16;8-26;17-18;17-25;33-40;31-45;32-48;9-30;9-19
+14-15;15-19;8-20;8-26;17-35;6-25;5-7;24-50;19-20
+17-29;6-34;16-29;9-17;5-7;18-23;24-38
+1-7;1-8;15-18;17-18;17-24;17-25;9-31;24-50
+0-1;12-13;9-15
+1-10;20-21;27-28;33-39;33-40;39-42;32-44;9-17;24-50
+14-16;15-19;11-38;6-7
+14-16;20-22;8-26;17-18;48-49;7-13;18-23;24-50
+13-32;31-45;31-37
+14-15;23-24;13-33;17-28;17-24;40-49
+2-3;1-9;15-18;8-24;21-31;17-35;11-17;39-42;16-17;40-48;19-20
+1-4;20-21;23-24;17-20;33-40;6-7;6-28;9-31;9-30;9-19
+14-15;23-24;27-28;13-32;17-18;16-24;16-29;5-32;24-45;24-50
+0-1;8-28;11-38;16-24;31-45;38-43;19-51
+17-25;11-17;31-37
+14-17;13-33;17-35;16-17;7-13;19-51
+1-4;1-8;21-31;17-26;9-30;9-19;5-32
+1-10;12-13;17-26;11-24;38-43;9-19
+20-21;17-29;6-7;31-45;9-30;9-19;24-38
+2-3;6-11;32-48;32-42;48-49;9-30
+8-20;8-28;17-18;17-28;6-11
+0-1;14-15;18-23
+1-4;21-31;13-32;6-28;31-37;9-30
+1-5;1-6;39-42;32-48;9-15
+23-24;8-28;17-35;6-28;6-34;24-50
+14-17;8-24;11-24;33-40;16-24;19-20
+17-28;33-40;16-24;32-48;40-48;24-50
+2-3;27-28;8-20;8-16;11-38;33-39;6-25;32-44;32-42;5-7;18-23;40-48;24-38;19-51
+25-26;8-16;8-28;8-24;13-33;6-25;6-8;39-42;31-37;32-44;24-50;3-9
+1-10;1-11;17-35;11-17;6-8;32-48;48-49;5-32
+1-11;14-15;11-38;7-13;9-31;5-8;24-50
+1-11;17-24;16-17
+2-3;1-4;15-18;15-19;8-20;13-32;11-17;33-39;31-46;24-50
+1-4;1-9;1-10;17-28;17-25;17-29
+1-10;25-26;8-20
+13-33;17-18;16-17;31-46;31-37
+1-7;17-36;31-45;5-7;24-50
+2-3;13-32;17-25;17-36;11-17;6-8;16-29;5-7;18-23;19-41;19-20
+1-5;32-42;19-51
+17-18;19-20
+1-9;14-17;20-21;6-28
+12-13;14-15;20-22;23-24;8-20;17-29;6-28;32-48;40-48;24-45
+1-10;1-11;14-16;13-33;6-34;48-49;9-15;9-30;5-32;18-23;40-48
+1-11;14-16;15-19;17-18;17-28;6-11;9-30;5-7
+1-10;1-11;14-17;8-26;11-24;6-17;9-30;5-8;5-7
+1-6;15-19;13-33;17-18;17-24;33-39;39-42;32-44;9-15;18-23;24-45
+0-1;2-3;1-11;17-29;38-43;9-30
+8-20;8-24;17-29;31-47;24-38
+15-18;15-19;20-21;8-28;13-32;17-24;17-26;38-43;19-51
+1-5;17-26;11-38;16-17
+39-42;32-48;38-43;5-32;19-20
+14-16;11-17;16-29;16-17;5-7;18-23;40-49
+1-6;14-15;17-18;17-36;33-40;6-25;31-46;3-9
+17-36;33-40;6-25;6-34;16-17;31-46;32-48;24-38
+12-13;14-17;25-26;33-39;31-37;31-47;32-44;9-17
+1-9;15-18;8-28;39-42;32-44;40-48
+14-17;8-26;16-17;31-45;40-49;19-20
+1-10;8-26;17-18;6-7;6-17;31-45;32-48;9-15;9-19;18-23;40-48
+1-6;14-16;23-24;17-20;11-24;6-28;32-42;9-19
+1-5;1-6;1-10;14-16;27-28;21-31;17-35;6-28;6-34;9-31;9-19;24-45
+0-1;1-5;14-16;23-24;25-26;8-20;6-28;5-8;5-7
+17-25;11-17;6-7;5-7;3-9;19-20
+8-26;17-24;31-37;9-17
+0-1;1-8;1-9;17-35;17-20;6-11;5-32
+25-26;11-17;33-39;24-50
+17-25;33-39;16-29;18-23
+1-4;8-20;13-33
+1-9;14-16;15-18;11-38;11-17;6-8;6-34;16-24
+2-3;1-8;17-35;17-29;39-42;16-17;32-48;32-42;7-13;24-38;24-31
+0-1;20-21;8-26;17-20;40-48
+15-18;8-16;17-36;16-17;9-30;40-48;19-51
+1-10;32-48;9-15;18-23;40-48
+40-48;19-51
+8-20;33-40;31-45;38-43;40-48;19-41
+12-13;14-17;20-21;27-28;13-33;17-20;17-18;11-24;33-40;6-8;32-48;19-20
+33-39;33-40;7-13;3-9
+1-9;16-29;18-23;24-38;19-20
+15-18;17-35;17-26;31-45;5-8
+1-7;12-13;27-28;8-24;6-8
+20-22;8-24;17-18;17-26;39-42;32-44;9-31
+15-19;25-26;21-31;13-33;17-20;17-26;31-37;32-44;9-17
+2-3;1-6;1-8;14-15;27-28;6-25;6-34;5-32;40-49
+1-4;20-21;17-35;17-28;6-25
+1-10;1-11;17-18;17-36;6-28;31-45;7-13;9-17
+2-3;1-7;1-9;1-11;17-36;11-38;19-51
+17-20;17-36;31-37;9-15;9-17;18-23;3-9
+1-6;23-24;8-20;17-35;6-34;31-46;32-48;48-49;9-31;5-7
+21-31;17-28;17-36;31-37;31-47;32-42;5-32;24-50
+15-19;17-18;7-13;18-23;19-20
+1-5;14-15;20-22;17-18;11-24;5-8;40-48;24-38
+20-21;11-24;31-46;24-50;3-9
+17-24;11-38;16-24;31-47;38-43;9-15;9-17;24-31
+0-1;15-18;33-39;6-28;31-45;40-49;24-50;19-51
+2-3;1-6;12-13;14-15;21-31;17-28;11-24;5-8
+15-19;17-25;17-29;11-38;39-42;16-29;9-31;18-23;24-50
+0-1;1-8;31-47;9-30;24-38
+1-7;1-11;8-24;13-32;33-39
+1-6;1-10;1-11;14-17;6-34;32-48;9-19;24-31
+1-6;1-11;27-28;17-20;17-24;6-7;6-11;9-19;19-20
+1-10;1-11;15-18;8-24;17-29;9-19;24-45
+14-17;13-33;17-28;11-17;9-15
+1-11;21-31;6-17;48-49;9-15
+2-3;17-35;17-18;6-25;9-31;19-41
+8-24;6-25;6-17;39-42;32-48;18-23
+20-22;17-29;9-17;5-8
+2-3;1-6;1-7;14-15;23-24;25-26;5-8
+1-5;27-28;8-28
+31-45;32-42;3-9
+17-26;11-38;6-34;16-29;31-46;18-23
+1-6;1-8;8-28;13-33;17-20;17-26;6-28;31-46
+1-11;14-16;20-21;25-26;8-16;13-32;17-35;17-18;6-7;5-7
+17-25
+1-10;14-17;8-26;39-42;16-24;7-13
+17-24;33-39;31-45;31-37;5-32;3-9
+1-8;15-18;20-22;8-28;13-32;6-34;24-38;19-51
+0-1;1-7;1-9;17-18;6-8;6-17
+21-31;6-7;32-44;19-41
+8-24;8-26;13-32;31-45;32-44;32-42;7-13;18-23;3-9
+1-8;12-13;14-16;20-21;20-22;8-20;33-39;6-11;16-24;31-37;5-7
+1-7;14-16;8-16;6-34;16-24;31-47
+1-5;14-17;25-26;17-24;17-29;17-36;39-42;24-38;24-45
+15-18;23-24;11-24;6-8;9-31;40-49
+1-11;8-26;13-32;17-36;11-24;6-17;38-43;3-9
+27-28;17-20
+0-1;14-15;17-18;6-8;6-17;16-17;32-48;19-20
+12-13;15-19;11-24;5-7;19-41
+1-10;14-16;17-29;6-25;5-7
+2-3;1-7;9-17
+20-22;27-28;17-18;33-39;33-40;24-45
+17-35;11-38;31-45;19-41
+25-26;11-17;6-34;31-37;32-48;32-44;24-31
+1-4;1-6;1-8;20-21;8-24;17-28;16-24;3-9
+1-7;14-15;8-28;21-31;17-29;11-24;6-28;48-49;40-49
+1-10;23-24;25-26;16-29;32-42;9-31;40-49
+1-5;23-24;17-35;17-24;17-36;11-17;6-28;9-31;24-45
+1-5;8-24;17-36;6-28;32-42
+0-1;1-8;14-17;6-7;6-25;6-34;31-37;19-20
+1-7;17-18;11-17;9-19
+20-22;17-25;17-29;6-17;9-15;9-19;19-41;19-20;19-51
+17-26;31-47;32-48;9-19;5-32;5-8
+14-17;21-31;17-26;11-17;32-44;7-13
+1-7;20-22;13-32;32-44;24-38
+17-28;17-29;16-17;31-46
+2-3;1-9;15-18;11-38;39-42;31-47;24-38
+1-8;12-13;20-21;32-48;7-13;9-15;9-31;18-23;24-38
+12-13;20-21;27-28;11-17;33-39;6-7;6-17;6-11;31-37;38-43
+1-5;12-13;14-15;27-28;17-25;16-17;32-42;48-49
+17-18;9-30
+8-16;6-17;31-47
+1-4;23-24;8-16;8-26;17-28;11-17;6-7;31-47;40-48
+1-5;1-11;8-24;33-40;6-17;40-48
+0-1;1-10;1-11;14-17;23-24;8-20;17-20;17-18;17-36;33-40;6-28;31-45;9-17;24-38;19-51
+1-9;20-22;27-28;8-28;17-36;11-24;11-17;6-28;5-32;40-49
+23-24;27-28;8-16;8-24;13-32;17-29;6-11
+1-7;8-26;17-35;17-36;11-38;6-11;9-15
+1-8;14-15;14-17;13-33;11-17;33-39;33-40;6-25;6-11;31-45;32-42;40-49
+1-10;8-20;13-32;17-28;5-32;24-38
+1-5;25-26;33-40;6-25
+48-49;19-41
+31-37
+1-11;17-28;17-25;6-28;6-11;16-17;31-47;5-8
+1-6;1-11;8-26;17-29;32-48
+1-11;12-13;21-31;33-39;6-8;39-42;31-37;38-43;9-31;19-41;19-20
+1-11;13-32;13-33;11-17;40-48;40-49
+1-8;1-9;14-15;8-28;17-18;7-13;38-43;40-48;19-20
+0-1;1-4;1-10;14-17;23-24;17-28;17-29;6-34;32-44;5-32;24-38
+1-4;15-18;8-26;13-32;11-17;6-7;32-48;32-44;18-23;40-49
+1-8;31-37;3-9;19-20
+1-9;1-10;23-24;6-8;32-44;24-45;24-50
+1-7;20-21;17-28;11-38;32-44;38-43;9-15;5-8
+1-8;23-24;27-28;6-34;31-47;32-44;7-13;9-17
+12-13;14-16;8-24;17-26;17-36;11-24;6-28;38-43;19-51
+8-28;17-26;17-36;11-38;33-39;31-37;5-32;24-31
+1-7;14-17;17-24;6-8;40-48
+2-3;8-24;17-35;17-28;24-45
+11-38;6-25;6-34;18-23;24-31
+15-19;27-28;8-28;11-17;6-17;9-30;19-20
+14-15;21-31;33-39;31-37;9-30;40-49
+13-33;17-20;17-18;11-38;11-17;16-29;31-46;48-49;5-7;19-41
+1-11;14-16;14-17;20-22;8-26;6-17;9-19;24-31
+1-11;13-33;17-28;17-29;11-17;9-19;24-45
+1-11;15-18;15-19;17-24;6-34;9-19
+1-4;1-10;17-25;48-49;24-38;24-31;19-41
+1-4;12-13;11-17;6-7;16-17;31-37;32-48;7-13
+0-1;1-8;1-10;20-21;8-26;17-29;16-29;48-49;18-23
+1-7;33-40;16-17;31-45;9-31
+1-9;23-24;11-17;33-40;6-34;6-11;40-48;24-38
+27-28;33-40;32-42
+1-8;17-24;17-25;6-7
+14-15;8-28;39-42;31-46;9-15;18-23;19-20
+12-13;11-24
+1-6;1-9;1-11;11-17;31-45;19-41
+1-6;1-11;20-22;8-24;13-32;17-20;3-9
+1-5;1-8;14-17;27-28;8-16;21-31;13-33;17-35;11-24;33-39;6-34;9-31;5-7
+1-9;1-11;27-28;31-47
+14-16;8-16;13-32;17-24;39-42;24-45
+1-10;14-16;8-28;11-38;48-49;9-30;5-8;40-49;24-50;3-9
+1-6;20-21;25-26;11-17;32-44;5-8;24-45
+0-1;13-32;16-29;31-47;32-44;9-15;18-23;24-50;19-20
+2-3;1-4;1-7;8-28;17-20;17-25;6-25
+1-4;14-17;33-39
+20-22;27-28;21-31;17-26;11-17;6-7;6-25;9-31;40-48;24-50;19-41;19-20;19-51
+1-9;25-26;17-26
+1-6;14-16;15-18;23-24;8-16;17-24;17-26;31-46;31-47;9-17;24-50
+0-1;1-6;1-7;14-16;8-16;13-33;17-35;11-17;31-46;7-13
+2-3;1-5;20-21;17-20;17-29;31-37;5-32;24-50
+13-32;17-25;6-7;6-11;32-48;3-9
+1-11;11-17;6-17;32-42;18-23;24-45
+1-7;1-11;8-20;21-31;33-39;6-34;16-17;48-49;9-15;9-31;5-8
+1-11;14-17;24-31
+17-28;11-17;16-17;3-9;19-41;19-51
+12-13;15-18;27-28;6-7;6-17;16-24
+1-5;14-15;27-28;8-28;17-24;5-32;40-48
+1-5;1-7;1-8;20-22;17-20;19-20
+1-4;14-17;17-35;17-28;40-49;24-45
+1-10;8-16;8-26;13-33;6-25;31-47;3-9
+1-4;1-6;8-28;8-24;33-40;6-28;9-31;9-17;18-23;24-31
+1-8;12-13;15-18;25-26;11-17;7-13
+27-28;17-36;31-37;38-43;9-19;40-49
+17-24;17-29;17-36;33-39;6-34;39-42;31-45;31-47;9-19;24-45
+2-3;1-7;14-16;20-21;8-26;13-32;17-29;11-38;6-25;6-8;16-24;48-49;38-43;9-19;19-51
+1-6;1-8;14-15;23-24;8-20;21-31;16-24;9-17;40-49
+1-7;8-28;17-18;17-25;17-26;6-25;16-17;19-51
+38-43;9-15;24-31
+12-13;14-17;13-32;11-24;11-38;31-37;31-47;5-8;24-38
+1-7;17-29;33-39;6-34;7-13;18-23;40-48
+2-3;31-46;32-48;9-30;40-48
+1-5;1-10;20-22;8-26;21-31;17-28;11-24;16-17;31-47;32-44;32-42;38-43;40-48
+14-16;13-33;17-35;11-17;6-8;9-15;3-9
+14-17;17-20;33-39;6-8;32-48;40-49;24-31
+12-13;15-19;8-24;16-29;18-23
+1-4;17-26;6-28;6-34;16-29;31-47
+8-26;17-28;17-24;17-26;11-17;32-48;5-7;24-38;24-31;19-51
+1-5;20-22;25-26;17-28;17-26;32-42;9-15;9-30;9-17
+20-21;8-20;17-36;5-7;3-9;19-41
+1-7;27-28;17-20;17-36;33-39
+15-19;23-24;17-25;11-17;6-7;31-45;9-31;18-23;24-31
+1-5;12-13;17-35;6-34;39-42;32-42;9-15;5-32
+1-5;14-17;23-24;11-38;6-11;5-8;24-50;3-9;19-20
+1-7;15-18;8-28;8-26;18-23
+1-9;15-19;20-22;17-20;33-39;31-45;24-50
+1-10;17-18;17-24;11-38
+14-15;25-26;8-28;17-25;11-17;33-40;6-34;16-24;9-15;24-45;24-50;19-51
+33-40;16-24;9-31;19-41
+2-3;1-11;17-26;17-29;33-40;16-17;9-30;5-7;40-48
+1-8;8-26;6-25;16-29;18-23;24-38
+15-19;8-16;16-29;16-17;31-45
+1-4;15-18;9-15;24-38;3-9
+1-11;8-20;8-24;21-31;6-25;9-31;9-30;40-49
+1-6;1-11;17-28;6-25;9-30;24-31
+1-6;1-11;20-22;8-28;17-36;11-17;9-30;9-17;5-32;19-20
+2-3;8-24;8-26;13-32;17-36;39-42;9-30;24-38;3-9
+23-24
+12-13;14-17;8-20;8-28;11-24;24-38;24-45
+20-21;17-24;6-7;48-49;38-43;24-50;19-51
+1-7;1-10;14-16;8-28;21-31;17-20;11-24;38-43;19-41
+1-8;1-11;8-24;33-39;33-40;31-47;9-30;5-7
+1-6;21-31;32-48;9-17
+1-7;8-26;38-43;5-8;24-50;3-9;19-41
+14-17;25-26;27-28;9-19
+11-38;31-46;32-48;38-43;9-19;24-50
+13-33;17-28;6-7;6-11;31-46;9-19
+1-9;1-11;14-15;15-18;21-31;6-11;38-43;9-15;24-50
+1-5;1-11;20-21;17-24;17-26;11-38;16-17;5-32
+1-11;14-15;20-22;17-18;17-26;39-42;16-24;9-31;24-45
+1-11;16-24;31-47;5-7;19-51
+1-7;1-11;27-28;8-20;8-28;13-32;31-45;38-43;5-7;3-9
+1-9;17-18;6-7;6-28;31-45;19-41
+1-11;11-17;39-42;16-17;9-15;5-8;5-7
+1-6;1-8;1-10;6-28;38-43;5-8;18-23
+0-1;8-24;13-32;6-28;16-17;48-49;9-17
+20-21;8-28;17-36;33-40;6-25;6-8;38-43;5-32;24-38
+1-9;23-24;13-33;17-24;17-36;33-40;6-11;16-24;9-31
+2-3;8-24;16-24;32-48;9-15;9-30;19-51
+1-6;8-20;5-7
+1-6;12-13;17-28;11-24;7-13;5-7
+15-18;20-22;8-26;33-40;6-34;39-42;24-50
+21-31;13-32;13-33;6-7;6-8;18-23;24-31;19-41
+0-1;1-11;11-24;11-38;11-17;33-40;31-37;38-43;9-30;18-23;40-49;24-38;24-31;19-41
+0-1;1-7;1-11;20-21;17-29;11-24;11-17;33-39;6-8;16-29
+1-9;1-11;8-20;17-24;17-25;9-31
+1-4;17-24;11-24;11-17;6-17;16-24;7-13;24-38
+1-4;8-26;16-24
+1-7;1-8;17-18;17-29;6-7;5-7
+27-28;13-32;17-20;17-28;11-24;11-38;6-8
+1-10;11-17;6-8;31-46;31-37;40-49;19-51
+14-15;15-19;20-21;20-22;23-24;17-24;6-28;16-17;19-41;19-20
+1-8;1-9;21-31;17-18;9-15;9-31;24-31
+23-24;25-26;11-17;39-42;24-45
+14-15;15-18;25-26;8-20;13-33;17-20;17-25;16-24;9-31
+6-25;31-47;24-38
+1-11;14-17;13-33;32-44;7-13;24-31;24-50
+1-11;17-35;17-18;17-28;6-11;31-45;32-44;18-23
+0-1;1-7;21-31;17-26;6-11;16-24;16-29;40-49;24-50
+8-28;17-24;17-26;39-42;16-24;31-47;24-31;24-45;3-9
+2-3;12-13;17-20;17-26;6-25;9-17;24-50
+0-1;1-8;14-16;14-17;8-16;33-40;5-32
+1-4;1-10;14-16;8-16;8-28;17-28;33-40;31-45;31-47;32-42;18-23;24-31;24-50;19-51
+2-3;1-4;15-18;8-16;33-40;31-47;9-30;5-8
+20-22;8-16;33-40;32-48;9-30;9-19;40-48;19-20
+1-5;1-9;1-10;12-13;20-21;13-32;16-24;19-20;19-51
+17-35;17-20;17-18;9-17;9-19;40-48;24-31;19-41
+17-24;6-17;31-45;9-15
+11-17;39-42;9-17;5-32
+14-17;17-25;33-40;7-13;24-45
+23-24;19-41
+14-16;15-18;8-26;21-31;17-20;17-36;6-17;9-17;18-23
+2-3;1-5;20-21;27-28;11-24;6-7;19-51
+14-15;25-26;8-16;8-24;32-48;9-17;24-38;3-9
+1-7;17-24;17-29;38-43
+16-29;19-41
+1-5;1-7;1-8;14-15;21-31;11-17;6-7;6-11;3-9
+39-42;18-23;19-20
+27-28;24-38;3-9
+1-4;20-22;17-18;17-28;6-8;6-11;24-31
+1-7;17-35;17-24;33-39;6-7;6-8;6-11;32-44;40-49
+0-1;1-9;32-44;40-48
+23-24;13-33;17-20;39-42;16-29;31-46;40-48;24-31
+8-26;17-18;6-25;31-45;31-46
+0-1;8-20;17-35;17-28;17-36;24-38
+2-3;15-18;20-21;17-36;33-39;6-7;9-15;24-31
+1-5;21-31;17-36;6-8;16-29;16-17
+1-10;14-16;17-18;48-49;24-38;24-45;19-41
+15-19;8-24;13-33;17-18;17-24;33-40;6-8;24-45
+20-22;25-26;17-35;17-26;6-25;31-45;9-17;5-7;24-31;19-20
+0-1;14-17;8-20;8-26;17-26;6-17;5-7
+17-29;33-39;16-17;48-49;9-17
+21-31;17-18;17-29;11-24;6-17;9-31;24-31
+15-18;20-21;6-8;48-49;5-32;5-8;40-48;19-41
+2-3;25-26;6-8;32-48;5-32;5-8;40-48;19-51
+27-28;8-26;31-47;9-15
+1-4;1-5;1-9;17-29;33-39;9-17;24-38
+2-3;1-5;39-42;24-45
+1-9;14-16;27-28;11-24;33-40;6-17;40-48
+1-11;12-13;14-17;23-24
+7-13;9-15;9-31
+17-20;6-28;16-24;16-29;31-37
+20-22;8-16;17-36;11-24;31-46;19-20
+15-19
+14-16;25-26;32-48;32-44;38-43;9-15;9-19
+14-16;8-24;17-18;17-25;11-24;11-38;32-44;9-19;18-23;24-38;24-31
+1-11;20-21;17-20;17-28;16-29;38-43;9-19
+0-1;2-3;1-6;1-11;6-34;7-13
+8-28;17-24;17-29;11-17;33-40;6-28;38-43;24-31;19-51
+1-4;1-10;20-22;23-24;33-40;31-45;48-49;38-43;5-8
+1-9;8-20;17-18;33-40;6-28;31-45;32-42
+2-3;1-5;33-40;16-29;40-48;24-45;3-9
+14-15;14-16;20-22;17-20;11-17;6-25;5-32;40-48;24-38;24-31
+1-4;14-15;14-17;17-35;17-25;6-11;38-43;5-7;40-49
+1-6;14-16;20-21;8-26;6-11;31-45;9-15;18-23
+1-10;15-18;6-11;16-24;31-47;7-13
+1-8
+6-7;6-25;6-8;6-17;6-11;39-42
+13-32;17-18;11-24;31-37;9-15;24-31
+0-1;14-17;15-19;20-21;25-26;8-24;17-26;11-17;6-17;6-34;16-17;9-31;9-30;3-9;19-41
+2-3;1-4;1-6;15-18;8-26;17-28;33-40;6-7;31-47;9-15;9-17
+14-16;21-31;17-26;39-42;31-37;40-49;19-41
+0-1;12-13;14-15;13-32;9-30
+17-18;17-28;11-17;6-7;31-47;7-13
+27-28;6-8;31-37;9-15;5-32;3-9
+1-9;20-22;16-29;48-49;9-17;40-48
+8-26;21-31;11-17;6-28;39-42;40-48;24-38
+20-21;17-35;6-28;32-48;9-31;5-8;19-20
+1-4;8-20;8-28;7-13;18-23;3-9;19-51
+1-10;23-24;11-17;32-42;19-41
+17-20;6-8;24-38
+1-6;17-24;6-7;6-25;16-17
+17-20;32-44;38-43;9-31
+14-15;8-28;17-35;6-8;32-44;40-49
+2-3;8-16;13-33;9-15;24-38
+0-1;1-8;14-17;17-20;11-17;33-39;32-48;19-41
+12-13;20-22;8-20;8-28;17-29;33-40;6-7;16-24;16-29;31-46;48-49
+1-6;17-18
+15-18;8-24;21-31;17-24;32-48;32-42;9-15;9-17;5-7
+1-7;8-26;17-25;6-11;16-17;31-37;7-13;38-43;5-7
+0-1;15-19;20-22;8-28;17-28;33-39;5-7;18-23;40-49;24-45;19-20
+27-28;8-24;11-17;40-48;19-51
+1-6;1-10;12-13;23-24;6-28;6-25;40-48
+39-42;31-37;32-44;32-42;19-51
+0-1;8-28;13-32;38-43;9-15;9-17;40-48;3-9;19-41;19-51
+23-24;11-38;39-42;31-37
+1-4;15-18;25-26;8-26;17-18;17-28;11-24;11-17;38-43;9-30;9-19;24-45
+2-3;1-7;1-11;14-16;27-28;6-25;16-29;7-13;9-19
+1-11;14-16;8-28;21-31;31-45;32-42;38-43;9-31;9-19
+0-1;1-11;12-13;14-16;20-21;11-17;9-17
+2-3;20-22;17-18;17-25;33-39;39-42;16-24
+1-9;25-26;8-28;8-26;17-26;6-28;31-46;24-45
+0-1;14-15;17-24;17-26;17-29;31-46;9-15;19-20
+31-46;3-9
+21-31;6-25;31-47;38-43;40-49
+1-10;17-18;6-8;32-44;7-13;19-20
+8-24;17-36;33-40;6-7;6-8;5-32;24-31;19-51
+23-24;33-40;24-38
+1-11;8-26;48-49
+1-6;8-28;21-31;17-28;17-24;11-38;39-42;24-38
+15-18;13-32;13-33;18-23
+14-15;8-16;9-17
+27-28;8-28;17-20;6-17;16-24;24-45
+15-19;6-7;31-47;5-7
+1-7;1-10;21-31;17-28;17-25;17-29;6-17;6-11;39-42;5-7
+27-28;13-33;6-34;16-29;9-19;19-51
+1-8;14-16;14-17;20-22;8-28;17-29;6-11;31-45;31-46;48-49;19-20
+12-13;8-24;33-39;6-17;16-29;31-46;38-43;5-8
+15-18;15-19;13-33;31-46;48-49;9-31;9-30;19-51
+1-7;8-16;6-25;31-46;9-30;5-32;24-31
+1-6;27-28;8-16;8-24;17-35;6-25;16-24;31-46;7-13;9-30;40-49
+1-6;25-26;8-16;13-32;6-25;16-24;31-46;9-30
+2-3;12-13;15-19;17-25;17-36;9-17;3-9
+13-33;17-24;5-7
+17-35;17-29;31-45;18-23;24-45
+1-8;20-21;17-20;11-24;32-42;24-31
+1-5;1-11;14-15;8-16;13-32;17-18;31-46;9-19;19-20
+33-40;39-42;31-37;32-44
+13-32;32-48;48-49
+6-25;9-17
+0-1;1-4;1-6;17-25;11-17;6-8;7-13;9-15;9-31;19-20
+1-4;1-6;20-21;32-48
+8-26;17-26;39-42
+1-11;12-13;23-24;17-26;11-17;32-42
+27-28;8-24;17-26;32-48
+1-6;21-31;6-17
+11-24;16-17;9-19
+1-5;1-11;12-13;14-17;8-16;17-35;31-46;9-19
+1-8;8-16;13-32;11-17;16-29;31-45;31-47;32-48;48-49;7-13;9-19;5-8
+0-1;1-9;1-10;14-15;8-16;13-33;33-39;6-7;6-8;16-17;9-19;40-49;19-41
+12-13;14-17;15-18;15-19;8-16;6-28;6-17
+8-16;6-28;24-45;19-20
+25-26;17-28;6-17;16-29;31-45
+2-3;1-11;17-24
+20-21;11-38;33-40;38-43
+23-24;8-24;11-17;31-46;31-47;9-30;24-50
+1-5;17-35;39-42;31-46;32-44;38-43;9-30;9-17;5-7;18-23;40-49
+1-4;14-15;15-18;6-28;16-29;48-49;24-50
+1-11;15-18;17-24;17-25;6-11;39-42;31-46;31-47;32-48;5-32
+14-16;8-24;17-29;11-17;33-39;6-28;38-43;9-15
+20-22;17-24;17-29;9-31;9-17;24-38;24-50
+0-1;1-10;15-19;17-35;17-25;32-42;38-43
+1-6;1-7;1-9;25-26;8-20;39-42;18-23;24-50;19-41
+11-24;7-13;38-43;5-8
+17-29;33-39;6-11;5-32;5-7;24-45
+15-19;11-17;39-42;16-17;5-7;18-23
+0-1;8-26;21-31;17-36;6-25;19-41;19-51
+1-6;14-15;8-20;17-24;40-49
+1-6;6-17;31-45
+1-11;11-17;16-29;31-46;9-15;9-31;24-45
+0-1;1-9;6-34;16-24;48-49;24-45
+1-8;6-17;32-42;7-13;18-23
+0-1;23-24;8-28;11-38;24-38
+20-22;8-26;17-26;6-17;9-15
+1-4;1-7;17-20;17-24;17-26;6-28;39-42;31-45;31-46;3-9
+0-1;2-3;1-8;20-21;8-28;13-32;6-28;6-17;6-34;31-46;19-20
+12-13;8-24;16-29;31-46;5-32;19-51
+25-26;39-42;16-24;31-46
+1-7;13-32;17-18;31-45;9-15;24-38;3-9
+1-8;14-17;15-18;17-20;6-17
+1-11;20-21;13-33;17-36;16-24;31-46;40-48
+0-1;27-28;8-20;13-33;33-40;6-34;32-42;19-41
+1-5;17-28;17-24;17-36;32-44;9-30
+20-21;17-18;17-36;39-42;32-44;9-30
+0-1
+14-17;8-16;8-26;9-17;19-41
+14-16;8-28;33-39;7-13;40-49
+12-13;15-18;17-25;9-19;24-31;24-50
+2-3;1-8;20-21;13-32;13-33;17-24;6-11;32-42;9-19
+1-4;1-9;27-28;11-24;11-38;16-24;19-20
+1-4;8-24;6-28;16-24;38-43;9-17;18-23;40-48
+14-17;33-39;48-49;40-48
+2-3;1-11;33-39;6-17;39-42;31-46;31-37;48-49;9-15;40-48
+0-1;1-11;12-13;11-38;6-7;38-43;24-45
+14-16;17-25;6-17;7-13;5-32;19-41
+6-25;31-45;32-48;38-43;5-8
+20-21;20-22;17-18;11-38;6-25;31-47;9-17
+2-3;15-19;17-36;31-37;38-43;9-15;3-9
+6-17;16-17;32-48;32-42;5-7;24-45
+1-10;12-13;14-17;13-32;31-47;38-43;5-7
+2-3;1-7;8-20;21-31;17-18;17-25;39-42;16-29;19-20;19-51
+1-10;15-18;15-19;5-32;3-9
+25-26;17-35;17-29;6-25;38-43;40-49
+1-7;9-30;40-48
+1-6;1-8;14-16;23-24;8-26;13-32;33-40;31-37;5-32
+20-21;27-28;17-35;17-24;17-26;33-40;32-48;48-49;40-48;19-41
+1-7;23-24;17-26;16-29;16-17;31-37
+1-11;8-20;8-28;24-38
+1-11;17-28;9-15
+1-6;14-17;17-35;11-24;6-28;32-44;9-30;40-49;24-45
+14-15;14-16;15-18;8-28;8-26;17-20;17-18
+0-1;1-7;20-22;17-24
+1-8;8-24;17-25;11-24;16-24;9-15
+12-13;25-26;27-28;8-20;17-36;33-39;19-20;19-51
+2-3;12-13;20-22;23-24;8-16;11-38;11-17;6-7;9-15;40-48;3-9
+2-3;11-38;48-49;9-17;5-8
+6-8;16-17;9-31;19-20
+8-16;17-25;6-28;6-8;31-47;9-15;3-9
+11-17;6-8;6-17;31-45;7-13
+1-7;1-9;14-15;25-26;6-7
+12-13;27-28;16-17;9-17;5-32;18-23
+8-20;17-28;40-48;3-9
+0-1;1-9;6-8;6-11;32-48;9-17
+14-17;6-7;9-31;5-7;24-50;19-51
+15-18;17-28;16-17;5-8;5-7
+1-8;8-16;8-24;7-13;5-8;40-49;24-45;19-51
+12-13;20-21;6-28;6-34;31-37;5-8;3-9
+1-8;14-16;6-28;24-45
+1-7;27-28;8-16;8-26;39-42;9-17;9-19;5-32;24-38;19-41
+1-5;1-10;25-26;8-16;6-7;6-8;31-47;48-49;7-13;9-19;24-31
+1-5;8-16;8-28;8-24;6-17;31-47;9-17;9-19;3-9
+2-3;14-17;48-49;9-31;9-30;24-45
+1-9;20-22;8-16;13-32;18-23
+1-6;1-10;14-15;8-24;11-24;6-7;6-8;24-45;19-41
+17-20;17-25;17-26;39-42;31-45;7-13
+0-1;1-11;13-32;17-26;6-25;31-46
+1-4;23-24;8-16;17-24;6-34;24-38
+1-7;1-8;14-16;14-17;20-22;17-26;33-40
+33-40;6-11;16-29;9-15;24-38
+15-18;23-24;27-28;8-20;8-16;11-38;6-11;31-37;32-44;9-31;24-45;19-20
+1-9;8-16;33-39;32-44
+1-4;1-5;1-8;12-13;20-21;6-25;32-42;48-49;9-17;5-7
+15-19;11-38;6-25;6-8;7-13
+13-33;16-24;19-51
+2-3;17-29;33-39;6-28;24-45
+1-9;8-20;13-32;6-25;32-48;38-43
+1-7;15-18;20-22;8-26;17-18;6-7;31-45;40-48;24-38;19-41
+1-5;11-38;11-17
+12-13;15-19;6-34;5-32;5-7
+20-21;17-29;5-7
+0-1;8-28;16-24;7-13;38-43;24-50;19-20
+1-5;1-7;14-17;8-24;21-31;17-20;31-45;32-48;32-42
+1-5;14-16;15-19;8-20;8-26;39-42;16-29;38-43;9-15;5-8;24-50;19-20
+12-13;14-16;17-29;40-49
+14-15;25-26;8-28;8-24;17-29;31-47;38-43;24-45;24-50
+20-22;17-25;33-39;5-7
+2-3;11-38;9-30;5-7;24-50;19-41
+1-4;1-10;15-19;8-28;39-42;7-13;3-9
+1-4;1-9;13-33;17-20;17-26;6-28;9-17;24-38
+0-1;8-26;17-35;17-20;6-34;31-47;9-31;40-48;24-50
+1-8;1-10;12-13;14-17;11-38
+15-18;17-28;33-39;32-42;18-23;40-49
+1-6;20-21;27-28;6-28;16-29;31-47;24-45
+14-15;11-24;16-24;16-29;32-44;48-49;9-30;3-9
+8-26;17-24;6-25;16-24;31-37;32-44;19-20
+1-5;8-28;8-24;17-29;6-7;6-34;7-13;19-51
+17-25;17-26;31-47;9-31;9-17
+0-1;1-6;13-32;17-35;17-26;9-19;3-9
+1-8;1-9;15-18;27-28;8-24;17-28;32-48;9-19
+1-8;15-19;8-26;17-25;17-26;6-28;6-8;16-29;9-15;19-20
+20-21;23-24;39-42;31-37;9-19
+13-32;16-24;32-42
+1-10;8-20;8-16;17-35;17-24;31-45;9-17;40-49;24-38
+1-4;1-7;1-8;14-15;11-17;7-13;5-32;24-50
+1-4;6-11
+1-11;14-17;13-33;17-20;6-11;39-42;48-49;24-50
+1-5;1-9;1-11;11-17;33-39;6-34;16-29
+1-7;20-21;8-20;17-28;6-8;32-48;48-49;9-17;24-45;19-20
+2-3;8-16;6-28;6-8
+14-16;6-8;24-50
+12-13;17-35;33-40;6-7;6-8;31-37;32-42;24-45;19-41
+1-7;14-17;13-32;11-17;7-13;18-23
+17-35;24-50
+2-3;1-6;8-24;21-31;17-29;16-29;31-46;19-41
+1-6;1-11;12-13;20-22;27-28;31-46;38-43
+15-19;25-26;8-20;17-28;11-17;6-28;32-44;48-49;9-30
+1-8;17-20;17-18;6-28;31-47;32-44;9-30;18-23
+33-39;6-34;9-17
+20-21;11-38;9-15;24-31
+0-1;27-28;8-26;17-35;17-20;16-24;24-45;19-20
+14-15;15-18;13-32;13-33;16-17;7-13;9-31;5-8;40-49;3-9
+14-17;27-28;33-39;33-40;48-49;5-32
+17-24;17-25;11-38;5-32;18-23
+11-24;33-39;6-34;9-17
+1-5;1-9;1-10;20-22;13-32;31-47;9-15
+1-8;15-19;25-26;8-26;17-18;11-38;3-9
+14-17;20-21;23-24;13-33;32-42
+14-16;8-20;8-16;8-24;17-20;17-26;31-47
+15-18;8-16;21-31;17-26;31-47;9-31
+17-29;31-46;31-37;24-38
+17-29;11-24
+12-13;20-21;8-26;17-36;6-17;24-38;19-20
+2-3;15-18;20-22;21-31;17-28;7-13
+6-11;38-43
+1-7;8-20;13-32;17-35;17-28;11-24;33-39;6-17;6-34;6-11;39-42;16-29;32-42
+1-6;25-26;17-24;6-8;48-49;38-43;9-17;24-31
+1-10;27-28;31-47;24-38
+0-1;1-4;1-5;15-19;17-25;6-25;32-44;38-43;9-15;5-7
+1-11;12-13;23-24;17-35;6-28;6-17;9-19;24-38
+1-11;14-15;21-31;11-38;33-39;6-28;6-34;16-24;31-47;38-43;9-19;5-32;40-49;3-9
+1-6;1-11;23-24;6-7;6-28;16-24;9-17;9-19;19-41
+1-6;14-15;15-19;16-24;16-17;32-48
+1-7;14-16;15-18;17-18;9-17
diff --git a/examples/failures/failures-0.09 b/examples/failures/failures-0.09
new file mode 100644
index 0000000..e1a7d7e
--- /dev/null
+++ b/examples/failures/failures-0.09
@@ -0,0 +1,1000 @@
+13-33;17-35;17-36;33-40;6-7;6-8;16-24;16-17;9-17;19-41
+9-20
+2-3;1-7;25-26;17-18;17-25;16-17;19-41
+0-1;1-4;27-28;16-17;31-47;9-17;19-51
+15-18;21-31;17-28;17-29;38-43;9-17
+1-4;1-6;14-15;15-19;9-31;5-32;24-45
+8-28;6-7;16-29;16-17;31-46;9-19;24-31;24-45;3-9
+1-5;20-22;25-26;17-20;17-24;31-37;9-20;9-19;18-23;24-45
+20-21;13-32;17-29;33-39;31-45;9-19;24-38
+1-6;14-17;17-28;17-24;11-38;6-17;48-49;9-19
+1-10;13-32;17-25;9-20;9-19
+1-11;20-22;17-24;17-25;33-40;24-38;24-31
+23-24;17-29;31-45;9-17;24-50;3-9;19-41
+2-3;1-5;1-7;14-15;13-32;16-24;7-13;9-20;9-17;24-50;3-9
+1-7;8-28;6-25;9-20;5-7
+1-8;8-20;8-26;17-26;11-38;16-24;31-37;38-43;9-30;24-38;24-45;19-41
+1-9;13-32;13-33;17-18;17-26;6-28;7-13;9-15;5-32;18-23;24-45
+1-5;1-11;21-31;17-26;33-39;33-40;16-17;9-20;24-45
+1-10;8-16;8-28;13-32;17-18;17-26;17-29;6-8;38-43
+0-1;1-8;14-16;8-24;6-34;16-24;31-46;31-47;32-44;24-31
+23-24;21-31;17-35;11-17;6-28;9-20;9-30
+1-8;1-9;17-28;6-8;9-17;18-23;19-41;19-20
+6-17
+14-17;13-32;6-25;31-37;9-20;9-31
+1-11;20-21;6-8;9-15;24-38;24-45;19-41
+1-6;33-39;16-29;16-17;18-23;24-38;24-31;24-45
+20-22;8-20;8-16;17-36;11-17;31-45;38-43;24-45;24-50
+12-13;14-15;15-18;15-19;17-36;31-46;32-44;40-48;24-50
+23-24;13-33;9-30;9-17;24-38;3-9
+14-15;6-34;31-47;5-8;19-41
+1-4;1-5;20-22;17-18;17-29;33-40;6-7;39-42;31-37;9-31;40-48
+1-9;27-28;8-28;11-17;7-13;24-38
+14-17;17-18;17-24;11-38;6-28;6-25;6-8;31-46;32-44
+0-1;1-8;20-21;27-28;17-28;11-24;38-43;40-48;24-45
+14-16;8-26;17-24;17-29;31-45;5-32;24-38;24-45
+14-17;8-28;13-32;13-33;16-17;31-46;31-37
+1-7;1-8;23-24;8-28;6-17;39-42;32-48;40-49;19-41
+1-5;1-7;1-9;14-15;8-20;32-48;48-49;38-43;9-20;9-17;5-7
+1-8;1-9;17-20;11-17;31-46;32-44;19-51
+15-18;17-28;17-29;31-37;32-42;9-15;18-23
+8-16;13-33;16-24;16-17;9-20;19-20
+1-10;12-13;15-19;11-24;39-42;5-32;19-51
+17-20;33-39;6-28;6-11;9-31;24-50;3-9;19-41
+2-3;1-9;8-26;11-38;16-17;31-46;31-47;7-13;5-8
+0-1;2-3;1-5;1-8;14-15;17-24;11-17;33-40;16-29;48-49;40-48
+2-3;1-11;20-21;27-28;8-28;13-33;6-25;6-34;32-48;24-50
+17-18;6-11;39-42;9-15;24-50;19-41
+1-8;20-22;8-20;32-48;19-41
+16-24;9-20;24-38;24-31
+1-9;13-32;11-24;31-46;9-31
+15-18;8-28;21-31;17-36;11-24;16-29;9-15;18-23;3-9
+13-32;17-25;31-37;9-20;24-38
+2-3;17-35;17-25;6-7;6-28;39-42;48-49;9-15
+0-1;1-4;8-26;17-28;40-49;24-31
+1-4;1-5;23-24;25-26;8-26;13-32;16-24;9-15;40-48
+12-13;15-19;17-20;17-18;33-40;6-25;6-17;31-47;7-13;9-17
+1-10;14-17;8-20;17-28;31-46
+1-10;12-13;17-28;17-25;6-25;16-29;32-44;5-32;5-7;18-23;24-38
+2-3;1-4;1-11;17-29;17-36;31-37;32-44;40-48
+2-3;21-31;16-24;9-30;18-23;40-49;24-50
+8-16;6-7;9-30;24-50;19-20
+1-8;14-16;13-33;39-42;40-48;19-41
+14-16;15-18;23-24;16-29;31-45;9-17;24-38;19-20
+25-26;8-28;8-26;17-25;33-40;19-41
+20-22;8-24;8-26;17-35;17-20;17-25;17-26;31-37;48-49;24-31;3-9
+1-11;17-28;17-26;6-17;16-24;31-47;32-44;5-7;40-49;24-38
+20-21;17-26;9-30;5-32
+1-5;8-16;17-18;17-26;11-24;9-30;18-23
+0-1;1-9;14-15;8-26;17-18;33-40;48-49;40-48
+17-20;33-40;9-15;24-38
+14-17;23-24;17-29;9-20;24-50
+1-7;20-21;6-28;32-42;9-15;9-19;5-32;40-49
+1-7;1-10;25-26;6-7;48-49;9-19;24-38;24-31
+0-1;1-11;12-13;8-28;8-26;17-35;32-48;32-44;38-43;9-15;9-20;9-19;3-9
+1-9;15-18;17-28;17-25;17-29;6-34;16-17;32-48;7-13;9-31;9-19
+20-21;17-35;33-39;31-45;9-19;24-38
+14-16;11-38;6-7;38-43;19-51
+1-8;14-16;23-24;8-20;7-13;9-17;24-31;19-41
+1-5;32-44;24-38;19-20
+1-11;15-18;25-26;8-16;24-50
+1-8;1-10;14-17;25-26;21-31;17-36;6-8;48-49;5-7;19-51
+1-4;8-28;17-36;11-24;39-42;16-29;9-31;19-20
+0-1;8-16;16-24;5-32;18-23;24-38
+1-4;27-28;8-26;6-25;6-8;6-17;6-34;40-49;19-51
+14-15;20-22;17-29;33-39;6-11;40-48;19-41
+27-28;8-28;13-33;16-29;16-17;31-46;24-38
+14-15;15-18;15-19;17-18;39-42;16-24;9-17;24-50;19-51
+27-28;8-24;33-40;6-28;6-8;31-47
+1-5;20-22;25-26;8-20;21-31;17-24;6-7;31-45;32-48;24-38
+1-9;27-28;8-16;17-35;11-17;39-42;9-20;5-7;40-49;19-51
+1-5;14-15;23-24;31-46;31-47;9-31;24-38
+1-11;17-20;17-24;6-8;6-34;18-23;24-31
+14-16;21-31;17-35;17-25;6-25;31-47;48-49;24-38
+1-7;12-13;14-17;23-24;8-24;8-26;17-24;17-25;11-24;6-17;16-24;16-17;31-46;7-13;9-20;9-17;19-51
+1-7;1-8;11-24;33-39;9-15
+15-19;17-20;17-28;39-42;38-43
+0-1;14-15;20-21;17-29;6-7;31-37;9-15;9-20;24-31;24-50;19-51
+13-33;31-45;5-32
+1-5;1-8;15-18;8-24;33-40;31-46;19-41
+1-10;12-13;6-28;9-20;9-31;18-23;19-20
+20-21;21-31;17-18;17-29;6-7;32-44;24-50;19-41
+14-16;39-42;16-29;32-42;7-13;40-48
+6-25;31-45;9-30;9-17
+8-28;17-36;38-43;9-20;9-30
+0-1;8-16;17-28;6-28;16-29;16-17;5-7;24-31
+1-9;20-21;5-7
+1-9;12-13;11-24;33-40;6-17;31-46;9-20;9-31
+1-10;14-17;20-22;40-49
+23-24;17-20;6-7;6-11;32-44;9-17;18-23
+1-4;15-18;8-20;21-31;17-36;6-34;16-24;31-47;9-20;9-30;24-31
+8-28;17-25;11-38;33-39;6-25;31-45;32-48
+1-5;20-22;8-16;13-32;6-11;16-17;31-37;48-49;7-13
+20-22;11-38;6-17;31-37
+17-28;6-28;16-17;32-44;18-23;19-51
+1-8;8-26;13-33;17-20;17-28;6-7;9-20;40-49;19-41
+17-24;17-26;16-24;31-47;32-44;18-23;24-50
+1-7;1-10;17-35;17-18;17-26;6-11;39-42;19-41
+1-7;1-11;14-16;14-17;17-24;17-26;11-38;6-28;9-20
+14-16;13-32;17-26;17-29;16-29;32-48;38-43;3-9
+14-15;21-31;11-24;33-39;6-11
+1-6;8-20;33-40;6-34;16-17;31-47;32-42;40-48;40-49;24-38
+14-15;14-17;25-26;8-28;6-7;6-17;16-24;5-7;19-20
+1-5;1-9;15-18;20-21;8-24;17-28;17-25;6-11;16-29
+14-15;8-26;13-32;17-25;11-38;6-28;6-25;31-45;40-48;19-20
+1-9;27-28;8-20;13-33;17-24;17-25;11-17;33-39;33-40;6-25;6-34;9-20;9-17;24-31
+1-6;1-11;23-24;11-17;39-42;9-17;24-50
+12-13;27-28;13-32;13-33;6-7;6-11;9-31
+20-21;17-20;40-48;3-9
+27-28;8-24;21-31;31-46;31-37;7-13
+8-16;13-33;11-38;33-39
+1-8;14-17;15-19;25-26;17-35;17-18;11-17;5-7;40-48;19-41
+1-6;1-9;20-21;6-17;16-29;7-13;9-17;5-8;5-7
+23-24;6-25;31-45;32-42;48-49;9-31;18-23;19-41
+14-16;17-25;17-36;6-7;39-42;40-48;3-9
+0-1;15-18;8-16;6-17
+1-5;14-16;17-18;17-36;11-17;33-39;9-15;5-8;19-41
+1-5;1-6;20-21;27-28;11-17;6-28;16-29;31-46
+1-4;1-7;6-34;38-43;9-15;9-19;5-32;40-48
+1-7;1-9;25-26;13-33;17-24;33-39;6-7;16-24;9-19;40-49;24-50
+1-4;1-10;12-13;13-32;17-36;6-25;39-42;9-31;9-30;9-19;19-41
+1-6;21-31;17-24;17-29;17-36;48-49;9-30;9-17;9-19;40-48;19-20
+14-15;17-35;17-25;6-8;16-29;31-46;9-19
+0-1;1-11;8-20;8-26;6-7;16-24;24-31;19-51
+1-5;1-9;23-24;17-35;17-28;7-13;9-15;9-20;5-32;5-7;19-20
+15-19;21-31;17-20;33-39;39-42;31-47;9-30;24-38
+12-13;20-22;25-26;11-24;11-38;6-28;6-34;9-15;9-30;19-51
+15-19;11-24;32-44;40-48;24-50
+1-10;14-16;15-18;13-32;11-24;33-39;6-7;16-29;16-17;31-45;31-46;9-20;18-23
+1-11;20-21;21-31;33-40;48-49;24-38;3-9
+1-8;8-16;17-18;17-29;6-25;9-17;19-51
+1-7;13-33;32-44;9-20;9-17;40-49
+8-28;8-24;17-25;11-38;19-41
+15-19;20-21;8-20;8-26;17-25;6-28;6-8;32-44;48-49;5-32;24-50;19-51
+1-9;14-17;17-20;9-30;40-48;19-41
+25-26;33-39;6-7;16-17;31-47;32-48
+1-6;17-35;17-28;6-34;9-17;18-23;3-9;19-51
+0-1;1-5;14-16;20-21;8-16;8-24;40-48;40-49
+12-13;14-17;25-26;8-24;17-18;17-26;11-24;9-17;3-9
+0-1;17-35;17-20;6-28;6-25;32-44;9-31
+1-7;1-10;15-18;39-42;16-29;31-45;19-51
+1-6;1-7;31-37;48-49;9-15;5-7;40-48
+15-19;20-21;21-31;17-18;17-29;32-48;5-7;19-20
+1-4;17-36;33-39;6-7;6-17;16-17;7-13;38-43;9-15;40-49;19-51
+14-15;25-26;27-28;8-20;8-26;17-18;17-24;40-48
+2-3;8-28;17-28;17-26;11-24;33-39;6-28;31-47;9-15;9-31;18-23;3-9
+1-4;1-8;14-15;27-28;13-33;17-24;17-26;16-24;24-50
+1-5;1-10;23-24;17-26;6-7
+1-8;1-11;14-17;17-26;17-36;48-49
+1-10;17-26;5-8;5-7;18-23;19-20
+1-9;20-22;8-28;33-40;24-38
+15-18;17-25;16-24;18-23
+2-3;1-6;15-18;17-20;9-31;9-17;3-9
+0-1;14-16;8-26;17-35;31-45;9-17;24-38
+39-42;16-17;38-43
+1-10;6-7;6-34;32-44
+14-15;14-17;27-28;13-32;17-18;11-17;9-20;24-50;19-51
+2-3;12-13;11-24;6-28;6-11;16-24
+0-1;1-6;1-11;14-15;27-28;6-7;16-17;9-31;9-17
+1-9;21-31;17-35;6-25;9-15;9-20
+0-1;17-25;17-26;16-17;31-46;48-49;5-32
+1-5;1-7;8-24;6-11;48-49;24-31;3-9
+1-7;14-17;17-35;17-25;33-39;6-28;16-17;31-45;7-13;38-43
+1-10;15-18;20-21;23-24;9-30;5-32;24-38
+14-15;20-22;8-26;21-31;17-35;6-7;6-8;6-34;31-46;9-31;5-7;19-20
+1-5;14-16;20-22;17-18;17-29;11-17;6-28;39-42;16-24;32-42;5-32;18-23;19-20;19-51
+1-7;1-10;23-24;27-28;11-38;32-48;9-30;40-49;24-50
+1-7;1-9;12-13;17-18;17-36;31-46;32-48;7-13;5-7;3-9
+1-7;1-9;14-17;25-26;31-45;31-37
+1-4;8-16;17-18;6-7;32-44;5-8;24-50
+20-21;21-31;17-24;16-29;9-30;5-32
+2-3;15-18;17-26;17-36;6-28;7-13
+1-4;15-19;20-22;17-18;17-36;9-20;40-49
+1-4;1-5;1-6;13-33;17-35;17-24;17-25;17-36;31-45;31-46;32-42;9-17;5-8
+1-9;15-18;8-20;13-32;6-7
+1-11;12-13;25-26;8-16;17-35;16-29;32-44;38-43;9-20
+13-32;7-13;9-31;18-23
+1-6;14-15;17-28;11-38;6-25;31-37
+1-8;6-7;6-17;31-46;31-37;9-20;24-31
+1-5;1-9;17-25;48-49;7-13;5-7
+1-8;1-9;1-11;27-28;8-16;16-29;32-42
+1-6;1-7;12-13;8-26;13-32;11-24;6-8;39-42;9-15;9-20;9-19;5-32;3-9
+1-4;1-6;1-7;1-8;17-35;17-28;17-29;17-36;6-17;5-8;24-31
+20-22;25-26;21-31;6-8;48-49;9-20;9-19;19-20
+1-11;8-16;17-35;17-25;9-19;40-49
+0-1;1-5;12-13;15-18;8-20;33-39;16-24;31-47;7-13;9-19
+17-35;11-24;6-11;9-19
+1-7;15-19;13-33;11-17;33-40;31-46;32-48;18-23
+1-9;1-10;11-17;6-8;9-17;24-38
+20-22;27-28;17-20;17-25;6-7;39-42;40-49
+14-16;20-21;25-26;8-28;17-28;17-24;33-40;16-17;31-46;9-20;24-31
+14-17;23-24;8-26;21-31;17-36;32-42;5-32
+8-20;8-24;13-33;17-26;17-29;11-38;33-39;16-24;5-7;19-51
+1-7;13-33;33-40;9-31;40-49
+1-4;1-6;1-7;15-19;8-16;17-26;6-17;6-11;16-17;32-44;48-49;9-31
+1-7;14-16;17-25;17-26;31-37;18-23;40-49;3-9
+0-1;2-3;13-32;17-26;31-46;38-43;19-51
+2-3;1-4;15-18;17-29;17-36;6-34;6-11;16-24
+2-3;1-6;15-19;8-24;13-32;6-28;6-17;24-31
+1-10;25-26;8-16;21-31;17-28;33-40;32-44;32-42;38-43;9-17
+20-22;8-26;13-32;17-24;31-45;9-30;19-20
+27-28;31-47;48-49;9-20;24-38
+14-17;20-21;23-24;8-20;33-39;39-42;38-43;9-15;3-9
+1-5;12-13;21-31;11-17;6-7;5-32;5-7
+1-6;14-17;15-19;8-20;8-16;7-13;9-30;40-49;24-38
+1-4;1-7;1-8;12-13;14-15;8-20;17-35;38-43;9-15;18-23;3-9
+6-34;16-24;16-29;16-17;31-46;9-30
+1-11;14-16;17-20;6-28;31-45;9-31;18-23
+20-22;25-26;8-28;13-33;31-37;9-15;24-50
+15-18;17-29;11-38;33-40;16-17;31-47;32-44;7-13;24-31
+0-1;1-9;6-7;6-25;9-20;9-30
+1-6;1-10;17-20;31-46;32-42;9-30
+1-5;1-11;21-31;7-13;9-17;40-49;24-50
+8-20;17-29;48-49;9-20
+1-8;15-19;23-24;17-28;33-40;6-34;39-42;24-31
+1-6;20-21;25-26;8-20;17-35;17-20;16-29;32-42
+23-24;25-26;11-38;6-17;31-45;31-46;9-20
+1-8;27-28;13-33;6-28;31-46;31-37;9-20;5-7
+17-35;17-29;31-37;5-8
+1-10;12-13;14-17;33-39;6-8;32-48
+1-6;14-16;15-18;8-28;8-26;17-20;17-28;17-36;11-24;33-40;6-25;39-42;16-24;16-17;32-48;9-20;19-20
+8-24;6-17;16-29;31-45;31-47;9-17;5-32;5-8
+1-4;31-46
+1-4;25-26;8-16;6-34;9-20
+0-1;1-4;1-7;1-11;21-31;6-11;31-46;31-37;3-9
+1-9;12-13;17-18;48-49;9-31;5-32;24-50
+1-10;8-24;17-35;17-36;11-38;9-20
+1-8;27-28;17-35;9-17
+14-17;15-19;17-36;6-11;16-17;32-42;7-13;9-17;24-31
+17-28;6-28;6-25;39-42;38-43;9-15
+1-11;14-15;17-24;31-45;9-20
+1-6;1-8;6-17;6-11;16-24;31-47;32-44;9-15;40-49
+12-13;15-18;25-26;13-33;17-24;11-38;9-31;5-7
+1-6;14-16;23-24;31-47;24-45
+12-13;32-44;24-45;19-51
+0-1;14-15;8-16;6-11;16-29;31-45;31-37;24-45
+11-17;33-39;33-40;7-13;40-48;40-49
+2-3;1-6;1-9;8-24;13-33;17-28;11-38;6-17;31-47;19-51
+2-3;8-26;17-28;11-17;6-25;32-42
+1-11;20-22;25-26;8-26;5-8;19-41;19-20
+14-17;17-28;17-24;6-25;6-8;31-47
+14-15;21-31;17-26;6-7;31-45;5-7;40-48
+12-13;8-28;13-32;17-26;6-34;39-42;16-17;5-7;40-49
+1-7;14-15;15-18;8-24;17-26
+0-1;1-8;20-21;17-26;6-7;32-48;9-20;9-31;9-19;24-50
+1-10;14-16;8-20;17-20;17-26;33-40;16-29;31-37;32-48;32-44;7-13;9-19
+1-4;1-8;8-16;8-28;13-33;17-25;17-29;6-28;32-42;9-15;9-30;9-19;18-23
+39-42;9-19;40-48;24-50;3-9
+12-13;14-17;20-21;8-24;11-38;6-7;6-25;7-13;9-15;9-17;9-19;5-32;24-50
+0-1;2-3;14-16;20-21;27-28;21-31;33-40;9-20
+1-6;14-17;16-17;9-31;19-51
+17-29;33-40;6-34;16-29;32-44;32-42;40-48
+23-24;13-32;17-28;31-47;48-49;9-30;18-23;24-38
+0-1;1-10;17-18;6-7;16-24;9-30
+14-17;8-20;8-28;8-24;17-35;17-20;31-45;31-37;40-48;40-49;3-9
+1-5;1-9;15-18;13-33;17-18;17-29;6-25;9-15;5-7;24-38
+17-24;6-28;6-8;16-29;9-31;19-51
+15-19;13-32;6-17;16-24;16-17;9-17;40-48;19-41
+14-16;20-22;17-20;24-38;24-31;19-20
+14-16;23-24;31-46;40-49;19-41;19-51
+2-3;8-28;24-31
+0-1;1-10;14-15;8-16;17-28;33-39;32-48;7-13;38-43;18-23;40-48;3-9;19-20
+1-11;8-28;33-40;39-42;32-48;5-8;24-38
+17-20;17-25;11-17;31-37
+17-25;40-48
+1-7;1-8;1-9;27-28;17-25;6-7;39-42;16-17
+1-7;15-19;19-51
+0-1;15-18;20-22;23-24;27-28;17-20;17-18;17-29;6-25;6-17;6-11;31-46;32-48;32-44;9-20
+1-5;1-10;12-13;8-16;16-29;38-43
+20-21;17-18;17-28;31-37;9-15;3-9;19-51
+21-31;13-33;33-39;6-11;32-42;9-20
+15-19;13-32;33-39;6-28;6-34;31-46;24-45
+14-17;25-26;8-28;17-20;17-36;6-17;48-49;9-15;5-7
+2-3;17-28;17-36;6-7;16-17;19-51
+2-3;20-21;6-11;9-15;9-20;19-41
+1-9;14-15;23-24;17-35;31-45;31-46;32-44
+1-4;14-16;14-17;17-25;31-37;38-43;19-41;19-51
+8-20;8-16;8-24;17-35;6-7;6-34;6-11;9-20
+2-3;15-19;20-21;33-39;18-23
+2-3;1-8;15-18;21-31;17-36;7-13;9-17;24-38;19-51
+1-5;1-10;20-22;17-20;17-36;11-24;6-7;16-17;5-8;19-20
+0-1;8-28;17-18;17-28;6-28;6-17;16-29;5-7
+14-17;20-22;13-33;9-20;5-7
+23-24;33-40;32-42;7-13;9-30;5-32;24-38;24-31;19-51
+17-18;17-24;6-11;16-17;31-47;48-49;9-20;40-49
+14-15;6-17;16-24;3-9
+2-3;1-7;20-22;13-33;17-24;6-25;24-38
+2-3;1-7;12-13;8-26;33-39;6-11;16-29;32-42;9-20
+1-10;8-26;21-31;17-24;11-38;33-40;31-45;31-46;32-48;32-44;9-15;9-31;24-31;19-41
+0-1;1-11;8-28;17-20;17-29;6-7;6-8;9-30;40-49;24-38
+15-18;23-24;8-16;6-11;39-42;9-20
+1-5;21-31;17-26;16-24;16-17
+2-3;17-26;6-8;31-37;18-23;24-38
+1-5;1-9;15-18;20-21;23-24;25-26;8-20;8-16;17-28;6-7;7-13;24-50
+17-26;11-24;11-38;6-28;39-42;31-47
+14-15;17-26;33-39;6-25;6-17;32-42;9-31;9-17
+1-9;8-20;6-34;9-30;5-7;24-38;24-31
+25-26;9-15;9-20;19-41
+1-8;23-24;8-20;13-33;17-18;7-13;5-32
+2-3;14-16;14-17;20-21;8-16;39-42;32-42;24-38
+2-3;1-4;1-8;12-13;20-22;27-28;17-18;17-36;9-20;19-20
+1-4;1-5;17-36;6-7;31-46;38-43;9-31;18-23;24-31
+15-18;27-28;17-35;17-28;24-38;24-50;19-20
+1-4;33-39;6-28;32-48;9-20;9-17
+8-28;6-25
+20-22;27-28;17-25;6-25;16-29
+2-3;23-24;8-24;31-47;24-38
+27-28;8-16;8-28;13-32;17-20;11-24;33-40;32-42
+1-7;14-17;8-26;17-36;6-17;16-24;31-37;40-49
+1-11;15-19;27-28;21-31;6-7;6-17;31-46;32-48;38-43;40-48
+13-33;17-29;6-28;31-45;32-48;32-44;9-17;9-19;18-23
+1-5;1-9;1-10;8-24;17-20;17-28;32-42;48-49;9-19;5-7;19-41
+0-1;2-3;8-16;33-40;6-34;16-24;38-43;9-19
+23-24;33-39;6-7;6-25;9-15;9-19;5-32;40-49
+1-8;1-11;14-16;15-18;13-32;17-18;17-29;16-17;31-46;9-19;24-31
+1-5;14-15;17-20;17-36;6-28;6-11;9-15;3-9;19-41
+17-25;32-48;32-42;48-49;9-17;19-51
+17-20;11-38;32-44;18-23;24-50
+14-15;8-20;8-26;17-35;7-13
+33-40
+0-1;1-10;14-15;8-20;11-24;39-42;16-24;31-45;32-42;40-48
+13-32;17-28;38-43;9-31;24-31
+1-9;14-15;14-17;23-24;25-26;21-31;33-39;6-7;6-11;5-7;3-9
+1-11;13-33;11-38;6-28;6-17;6-34;16-17;40-48
+20-22;17-25;16-29;31-45;31-37;32-44;32-42;19-20
+20-21;32-48;9-30;18-23
+13-32;33-40;6-7;9-30;9-17;40-48;24-50;19-41
+8-26;21-31;11-38;31-46;32-48;9-30;5-32;5-8
+0-1;1-4;1-9;1-10;15-18;6-28;9-31;9-17
+1-4;1-6;11-38;6-11;39-42;19-41
+1-7;20-21;23-24;25-26;8-16;17-20;17-18;17-28;40-48
+25-26;21-31;16-17;31-37;32-48;9-15;24-38;3-9
+1-4;1-8;12-13;14-16;15-19;17-36;6-11;32-48;32-44;32-42;48-49
+1-6;17-24;17-29;11-24;6-25;31-45;7-13;9-30;40-48;40-49
+1-8;13-32;17-20;17-25;39-42;16-17;18-23;24-31
+1-5;1-11;8-24;17-24;17-25;6-11;38-43
+14-17;6-17;16-24;32-42;5-7;40-48
+8-28;8-26;17-29;33-40;31-45;9-15
+1-10;14-17;33-40;6-11;16-24;24-31
+12-13;25-26;8-20;8-26;13-33;6-7;6-11;31-47;40-49;19-51
+14-15;15-18;6-28;6-8;48-49;9-15;40-48;24-50
+15-19;8-20;17-35;33-39;24-50
+0-1;14-15;17-26;6-25;6-34;16-29;16-17;19-51
+1-11;8-28;17-20;17-26;16-24;38-43;5-8;18-23;19-41
+1-6;17-18;17-26;32-42;48-49
+23-24;17-26;17-29;11-38;6-25;31-45;40-49;24-31;19-41
+8-16;17-25;6-7;6-28;6-17;31-37;5-8;3-9
+1-10;20-22;25-26;27-28;8-28;8-26;17-20;16-24;31-37
+0-1;1-5;1-8;8-26;21-31;33-39;31-47;32-44;9-17;19-51
+6-7;31-37
+14-17;15-19;27-28;17-29;6-34;16-17;9-17
+1-8;12-13;13-33;33-40;6-7;6-8
+15-18;27-28;11-17;48-49;18-23;19-51
+8-28;8-24;17-35;33-40;31-37;32-42
+14-15;27-28;8-16;13-33;6-7;6-25;16-24;31-45;31-46;31-37
+1-4;1-6;1-10;17-35;17-36;16-29;7-13;19-51
+1-4;14-15;27-28;17-18;17-36;33-39;32-44;48-49;24-45
+14-16;8-26;21-31;11-17;39-42;16-17;5-32
+1-4;14-17;8-24;17-18;33-40;6-7;6-28;6-8;31-45;9-15;24-31;19-51
+1-5;1-6;20-21;8-20;31-46;9-31;3-9
+17-35;33-39;6-34;31-45;5-8;19-20
+1-11;17-18;17-36;6-25;16-29;16-17;31-47;32-42
+8-20;17-36;6-8;32-44;5-7;19-51
+1-10;15-18;15-19;13-33;17-28;11-38;39-42;31-37;40-49
+15-18;20-21;8-24;11-24;48-49;24-31;24-50
+1-8;8-28;17-20;17-25;33-39;9-17
+1-6;13-33;17-28;17-29;6-7;6-11;39-42;31-47;9-31;24-45
+31-45;31-46
+1-9;1-11;23-24;8-16;8-26;11-38;6-34;16-17;32-42;5-32;40-49;3-9
+1-5;1-9;8-24;17-20;33-40;9-30
+0-1;1-6;1-10;13-32;6-7;6-28;16-24;31-47;7-13;9-30
+12-13;20-21;25-26;27-28;21-31;17-25;9-30;9-19;19-20
+0-1;14-16;15-19;17-28;39-42;48-49;24-31
+1-7;14-17;8-28;31-46;32-42
+11-38;6-17;16-29;32-48;7-13
+1-6;15-18;17-18;6-28;16-24;32-48;18-23;3-9
+20-21;27-28;16-17;32-42;9-19;5-8;40-48
+1-5;15-19;8-26;11-17;6-25;6-11;9-19
+6-28;16-24;9-31;9-19;24-38
+23-24;25-26;17-18;11-38;48-49;9-19;5-8;40-48;24-31
+8-20;8-24;13-33;11-24;6-7;16-29;9-19;5-32;40-49;24-45;19-51
+1-4;1-10;33-39;31-46;24-31;24-45;3-9
+1-7;8-16;17-20;17-29;11-38;7-13;9-19
+2-3;15-19;20-22;23-24;17-28;6-8;6-17;16-17;48-49;38-43;24-45;19-20
+2-3;1-4;17-36;31-37;9-31;5-8;40-48;24-45
+0-1;2-3;1-6;14-17;17-24
+15-18;23-24;8-26;13-33;48-49;19-41
+8-26;33-40;6-25
+20-21;27-28;13-32;17-18;11-24;31-45;7-13
+1-6;8-16;8-28;13-33;17-36;11-24;24-31;3-9
+8-20;13-32;17-20;17-18;17-26;16-24;16-17;48-49;9-31;5-7
+8-24;17-28;17-26;6-8;24-38
+0-1;1-11;15-19;17-25;17-26;31-45;31-46;31-37
+1-7;17-36;11-17;6-8;9-19
+1-6;1-7;21-31;17-26;31-37;24-50
+1-7;12-13;14-17;8-16;17-20;11-38;6-34;16-24;24-38
+8-26;13-32;17-35;17-29;11-38;16-29;32-48;32-44;32-42;3-9
+15-19;8-24;6-25;38-43;5-32;18-23
+1-6;1-11;15-18;20-22;13-32;13-33;33-40;31-46;48-49;24-38
+1-5;14-16;17-20;17-24;17-25;32-42;19-51
+1-10;20-21;13-32;38-43
+0-1;12-13;23-24;8-20;8-28;17-24;16-17;32-44;24-38
+1-6;14-15;8-24;6-17;31-37;9-31;18-23;19-51
+1-11;20-22;17-20;33-40;6-25;6-34;31-46;32-42;5-32;5-7;3-9;19-20
+15-18;23-24;8-28;17-35;17-36;16-29;9-19
+14-17;8-26;11-17;16-24;16-17;32-48;19-41
+1-8;8-26;13-32;17-28;17-29;16-29;48-49
+1-6;15-19;31-45;32-44;19-41
+1-4;1-7;1-8;1-10;8-24;17-20;17-36;6-8;9-15;9-30
+1-7;15-18;16-24;31-46;40-49
+1-4;1-8;12-13;14-15;25-26;6-28;6-25
+14-16;8-20;8-28;17-24;11-17;6-11;32-42;3-9;19-41
+0-1;1-8;15-19;23-24;8-16;17-36;33-40;6-7;16-17;31-45;9-30;24-31;24-50
+1-5;8-24;18-23
+1-8;20-22;31-37;32-48;32-42;9-31;5-7;40-49;24-38;19-51
+8-24;17-18;31-45;32-48;32-44;38-43;9-19
+2-3;14-15;14-17;16-17;32-48;5-32;24-50;19-41
+20-21;11-38;6-7;6-25;6-8
+12-13;14-15;8-16;17-35;17-18;33-40;38-43;9-30;24-38;19-41;19-51
+1-6;1-10;25-26;8-24;32-42;9-15;3-9
+0-1;14-15;23-24;8-20;17-20;17-28;6-28;6-8;5-32
+0-1;15-18;17-25;7-13;9-15;9-31;24-38;19-51
+2-3;27-28;21-31;19-20
+1-5;1-7;1-9;8-28;33-40;16-24;16-17;9-15
+2-3;8-24;13-33;31-47;48-49
+14-15;14-17;8-28;17-29;11-17;6-11;9-15;5-8
+1-4;1-10;20-21;21-31;17-28;17-25;17-36;11-24;33-40;6-25;6-34;24-50
+8-26;11-24;9-20;9-19;3-9
+12-13;21-31;17-25;33-40;32-42;9-31;9-17;5-7
+1-7;1-11;15-19;16-29;31-45;32-44;9-17;24-31
+14-15;17-35;17-18;11-24;16-24
+1-8;27-28;11-24;33-40;6-8;16-17;9-17;5-8;18-23;24-31;19-51
+15-18;17-18;17-24;17-25;33-39;6-28;39-42;32-44;19-41
+1-4;1-8;17-29;17-36
+1-4;15-19;25-26;8-16;8-26;17-24;17-36;11-17;16-24;31-45;5-8;19-41;19-51
+0-1;23-24;6-25;5-32
+1-4;32-48;48-49;7-13;38-43;18-23
+12-13;14-15;20-21;17-29;39-42;32-48;32-44;24-38
+0-1;1-4;1-5;1-6;12-13;17-28;11-24;11-38;6-25;31-46
+1-6;14-16;14-17;20-22;23-24;17-25;17-26;17-36;11-24;6-17;6-34;31-37;9-19;24-31;19-41;19-20
+17-26;11-24;33-40;6-8;31-45;31-37;38-43;9-31;9-19
+1-6;1-9;15-19;8-20;8-24;17-18;17-26;31-45;32-44;9-19;5-7;24-31;19-41
+1-8;17-26;17-36;31-37;32-42;9-19
+14-15;17-28;11-17;38-43;9-17;9-19;19-41
+15-18;8-26;17-25;6-11;31-46
+1-6;1-11;20-21;13-33;6-8;6-17;16-17;7-13
+17-20;6-7;16-29;32-48;24-31;19-51
+11-24;6-11;32-48;5-32;18-23
+1-5;33-39;6-8;31-47;9-30;24-50
+0-1;20-22;11-17;6-17;31-37
+1-7;15-19;20-21;17-35;9-30;24-50;19-51
+1-7;14-16;17-20;6-7;6-11;16-29
+8-20;21-31;17-35;9-31;9-17;24-45
+1-11;8-26;16-17;19-51
+0-1;14-17;20-21;20-22;6-11;39-42;31-45;32-42;38-43;24-31
+8-28;17-18;17-25;6-17;3-9
+1-6;1-9;17-29;33-40;6-28;6-8;6-34;9-30;18-23;40-49;19-51
+23-24;8-16;13-33;17-18;6-11;31-46;31-37;9-15
+1-5;17-24;6-17;32-42;9-31;5-32
+1-4;20-22;17-18;6-7;39-42;48-49;19-20
+25-26;21-31;13-33;9-20
+1-4;1-6;1-8;17-24;17-29;11-24;11-17;6-11;7-13
+17-25;11-38;33-40;6-28;32-48;18-23;24-45;19-41;19-20
+0-1;1-4;1-7;1-8;1-9;8-20;8-16;8-26;17-36;31-46;32-48;24-45;3-9
+1-7;14-16;14-17;15-19;6-7;9-15;24-38;24-45
+1-6;14-16;23-24;33-39;6-34;38-43
+13-33;6-28;24-50
+15-18;8-28;11-38;33-40;6-7;6-11;16-24;31-45;48-49;9-17
+39-42;32-44
+8-24;13-33;16-29
+2-3;1-7;6-7;6-8;32-44;3-9
+1-4;1-9;8-16;13-32;17-36;6-28;6-8;48-49
+2-3;1-5;1-6;1-7;1-9;12-13;15-19;17-18;11-17;39-42;48-49;24-38
+2-3;1-7;1-10;20-22;23-24;8-20;8-26;21-31;17-28;17-25;11-24;11-38;6-17;6-34;24-31
+20-22;8-20;33-39;6-34;39-42;32-44;32-42;24-45
+25-26;8-24;17-24;17-29;6-17;48-49;24-31
+1-5;1-10;6-28;31-37
+15-19;8-16;17-24;16-24;32-48;9-31
+14-16;13-33;17-18;17-25;11-38;32-48;32-42;19-51
+0-1;15-18;20-22;17-29;39-42;32-48;32-44;38-43;5-32;40-49;19-20
+14-15;8-24;17-18
+12-13;8-28;33-40;32-42;5-7;18-23
+1-4;1-7;1-8;1-11;14-17;23-24;32-48
+20-21;8-26;17-18;31-45;48-49;38-43;5-8;40-48;24-31;19-20
+1-5;14-17;8-20;13-33;17-28;17-25;11-38
+27-28;17-20;17-18;16-24;31-46;40-49;24-50;3-9
+8-24;17-35;6-28;31-37;32-42;5-8;40-48;24-50
+1-4;27-28;13-32;17-24;17-26;17-36;11-17;33-40;31-45;18-23
+14-15;17-35;17-26;32-48;9-17
+27-28;8-28;17-24;17-26;17-29;11-24;11-38;31-47;9-31;5-8;40-48
+1-8;14-16;15-18;17-26;11-24;6-11;39-42;48-49;40-49
+1-7;8-24;9-30;3-9
+1-6;13-32;17-28;11-17;31-46;9-30;5-8;40-48
+14-16;14-17;17-24;31-46;5-32;24-31
+1-5;17-29;17-36;6-7;6-25;6-11;38-43;19-41
+20-22;8-16;13-32;6-17;31-37;5-7
+12-13;13-33;6-28;39-42;9-15;5-32
+1-6;1-11;8-24;6-11;7-13
+14-17;17-29;33-40;6-7;31-46;48-49;9-15;9-30
+20-21;25-26;11-17
+13-32;33-39;6-34;6-11;31-45;7-13;5-32
+1-6;15-19;8-28;8-26;21-31;17-18;17-25;16-17;31-47;32-42;18-23
+1-9;1-11;12-13;15-18;23-24;8-24;13-32;17-29;6-7;9-19;40-49;24-50;19-20
+2-3;14-16;20-21;8-20;17-18;17-24;33-40;31-46;31-37;32-48;9-19;24-31;19-51
+20-22;6-25;7-13;9-31;3-9;19-51
+2-3;13-32;13-33;16-17;32-48;9-15;9-19
+1-6;14-15;15-19;17-24;11-38;32-42;48-49;9-19
+25-26;33-39;6-7;9-19;5-32;24-45;19-51
+1-9;1-11;14-17;27-28;38-43;9-31;5-7;24-45
+21-31;32-42;7-13;24-45
+1-10;8-26;40-48
+2-3;8-26;11-24;11-17;6-17
+14-17;27-28;6-28;6-17;16-17;7-13;9-17
+0-1;1-4;1-8;15-18;8-28;17-36;31-47;48-49
+1-6;20-22;25-26;8-20;8-16;33-40;16-24;16-29;31-45;9-31;40-49;3-9
+1-5;1-11;12-13;23-24;8-26;13-33;17-20;11-24;6-11;18-23;24-50
+1-8;14-15;15-19;17-28;33-39;6-25;39-42;32-44;18-23
+13-33;11-17;5-7;24-31;24-45
+2-3;1-10;14-16;21-31;13-32;17-35;17-25;6-34;24-45
+14-16;20-22;17-28;17-25;6-7;6-25;19-20
+1-11;8-26;17-18;17-36;31-37;40-49
+1-6;14-17;8-26;17-36;16-24;9-15;9-31;19-20
+12-13;8-16;11-17;38-43;5-8;24-31
+1-9;25-26;13-32;11-24;31-45;32-44
+1-5;8-20;17-29;6-28;18-23
+1-6;15-18;23-24;8-24;33-39;6-17;6-34;32-48;48-49;5-8;24-45
+1-7;1-10;15-18;8-24;17-28;17-29;33-39;6-7;6-34;32-44;9-17;24-38;19-41
+1-7;21-31;17-24;32-48;24-45
+0-1;1-11;14-15;15-19;17-28;11-17;33-40;6-25;16-29;7-13;9-17
+12-13;20-21;17-24;17-29;9-17;5-8;24-50
+1-6;24-31
+8-28;8-24;17-24;6-7;7-13
+1-8;13-33;17-35;6-11;16-29;9-30;5-8;5-7
+1-11;14-16;20-22;8-20;17-29;33-40;32-42;48-49;38-43;9-31
+17-18;11-38;24-45
+0-1;1-5;14-17;8-20;21-31;6-8;6-11;16-17;31-37;31-47;5-8;24-31;24-45;19-41
+0-1;8-16;8-24;17-18;17-25;17-26;11-24;31-45;5-32;24-45;3-9
+12-13;14-15;17-18;11-24;48-49;24-38
+1-7;20-21;25-26;33-40;9-20;40-49
+1-4;14-15;15-18;15-19;17-26;17-29;11-24;16-29;31-46;32-44;32-42;9-30;9-17;24-45
+2-3;1-6;20-22;25-26;27-28;13-32;17-18;17-26;16-17;18-23;19-20
+1-9;25-26;8-26;17-28;17-26;9-31
+1-4;27-28;13-33;17-20;17-36;31-45;32-48;48-49;19-20
+1-5;15-19;8-16;8-24;6-17;16-29;32-48;19-41;19-51
+27-28;17-35;7-13;3-9
+0-1;23-24;8-20;33-40;6-25;31-37;38-43
+2-3;1-9;14-17;20-21;17-35;17-20;17-28;17-24;11-38;31-37;5-7;24-50;19-51
+2-3;14-16;13-32;17-36;9-17;40-48
+25-26;17-24;17-36;31-47;5-32
+0-1;1-7;27-28;8-28;6-28;32-42;24-45;24-50
+1-10;48-49;19-51
+1-6;1-7;15-18;20-21;11-24;39-42;31-45;32-42
+1-8;1-11;15-19;8-28;8-26;11-38;33-39;6-28;31-46;32-44;9-15
+20-22;6-17;6-11;38-43;5-32;5-8;24-38;3-9;19-51
+13-33;17-18;6-25;6-34;9-15;9-17
+1-6;14-17;17-28;17-25
+1-5;1-9;17-29;6-11;16-29;24-38;24-45;19-51
+14-16;25-26;11-38;40-49;19-41
+14-16;17-35;17-28;33-40;31-47;32-42
+0-1;1-11;14-17;8-16;33-39;6-11;39-42;16-24;31-46;32-44;7-13;24-38;3-9;19-41;19-51
+6-8;16-29;31-45;38-43;5-32;24-38
+14-15;15-19;23-24;8-24;8-26;17-35;17-29;24-50;19-20
+1-6;1-10;12-13;8-26;48-49
+11-38;6-25;32-48;32-42;7-13;18-23;40-49;24-38;24-31;19-20;19-51
+17-20;11-24;33-40;6-28;16-24;31-45;32-48
+24-45
+1-6;8-20;8-24;17-25;16-17;9-31;24-38;24-45
+1-4;1-5;6-8;9-19
+0-1;23-24;17-20;33-39;6-28;9-19
+1-4;14-17;17-29;17-36;6-17;48-49;9-19;40-49
+27-28;8-16;8-26;39-42;31-46;31-37;32-42;9-19;40-48;24-31
+2-3;1-8;1-11;15-19;27-28;17-29;6-7;6-25;9-20;5-7;18-23;24-31
+20-21;8-28;8-24;17-25;11-24;11-17;6-34;16-29;7-13;9-30;9-17;9-19
+1-10;17-28;11-24;33-40;6-17;31-47
+1-9;15-18;20-22;17-36;32-48;32-42;5-7;18-23
+14-16;6-7;32-48;40-49;3-9;19-51
+15-19;33-39;6-17;16-24;9-30;5-32;24-38
+8-20;21-31;17-24;17-25;5-8
+1-5;1-11;8-28;39-42;9-31;40-48
+20-21;6-17;6-34;31-46;31-47;18-23
+25-26;8-28;6-34;6-11;16-17;38-43
+0-1;14-17;15-19;21-31;33-40;5-32
+2-3;8-24;21-31;17-28;32-44;19-20
+23-24;17-25;6-17
+1-10;1-11;39-42;32-48;9-17;24-45
+1-6;15-18;17-35;17-20;17-26;11-38;31-45;31-46;32-48;5-7;18-23
+1-5;14-16;8-16;17-26;17-29;33-39;32-44;24-50
+14-16;17-28;17-26;33-40
+1-8;17-26;11-24;6-34;16-17;48-49;38-43
+1-5;20-22;8-26;17-26;3-9
+14-17;15-19;23-24;21-31;11-38;6-25;16-24;9-31
+1-6;1-7;14-15;16-29;40-48;24-45
+1-4;1-7;12-13;13-33;6-17;39-42;31-46;7-13;9-15;24-45
+2-3;1-5;17-24;11-24;7-13;19-41
+1-7;8-28;8-24;21-31;17-24;17-25;33-39;32-44;18-23;24-31;19-41
+1-4;15-19;20-22
+1-5;14-17;20-21;6-28;6-17;31-47;48-49
+14-15;15-18;25-26;17-36;6-7;6-25;6-8;6-34;6-11;9-15;19-51
+23-24;8-28;17-36;39-42;31-45;31-46;40-49
+1-10;14-15;8-24;8-26;16-17;32-48;32-44;38-43;9-15;5-7;18-23;24-50
+14-16;8-16;17-25;6-11;16-24;32-48;19-41;19-20;19-51
+12-13;23-24;13-33;11-38;6-7;6-28;31-37;9-17;5-8;24-31
+27-28;17-20;17-36;16-17;38-43;9-17;40-48;24-38;24-50
+1-5;1-9;17-24;6-25;31-45;48-49;9-15;40-49
+1-10;20-22;8-20;17-25;16-17;31-45;31-46;9-20;5-8
+1-11;14-15;18-23;19-41
+14-17;8-16;17-24;6-7;6-28;6-34;9-15;40-48;24-38
+14-17;13-33;17-28;11-38;33-40;6-34;24-45
+15-18;20-21;24-45
+0-1;8-16;6-28;16-29;32-42;38-43;5-7;40-49;24-45;24-50;19-41
+1-6;14-15;14-16;21-31;7-13;40-48;24-45;3-9
+1-5;1-7;14-16;20-22;19-41
+1-7;14-15;23-24;25-26;16-24
+17-29;7-13
+14-15
+1-8;14-16;25-26;8-26;21-31;17-24;17-26;17-29;33-39;6-7;6-34;16-29;9-17
+0-1;2-3;1-8;12-13;14-17;20-22;8-20;8-24;17-28;17-25;6-28;6-17;40-49
+17-18;32-44;32-42;38-43;9-30;24-45
+1-4;1-8;1-10;8-26;17-24;17-29;11-24;33-40;31-45;24-45
+1-4;15-19;8-26;13-33;17-35;6-25;16-24;31-37;48-49;18-23;24-50
+15-18;23-24;8-28;17-24;39-42;31-37;9-17;5-32
+1-4;1-5;27-28;8-24;17-35;17-36;16-17;32-42;9-31;19-20
+21-31;17-25;17-29;31-47;32-44;9-30;24-50;19-51
+8-16;17-35;17-20;11-38;33-40;6-11;5-7;40-48
+12-13;14-16;15-19;20-21;17-28;6-34;16-17;32-42;18-23;24-31
+1-6;1-10;14-16;14-17;6-28;6-25;6-8;39-42;32-48;7-13;3-9;19-51
+1-11;23-24;17-26;9-31;9-17
+8-24;17-36;6-11;32-48;48-49;40-48;40-49
+25-26;8-20;8-26;13-33;17-20;17-29;33-39;32-44
+20-21;25-26;11-38;6-8;31-37;7-13;9-17;24-45;19-51
+1-6;6-11;40-48;24-31;19-41
+15-18;20-22;11-17;39-42;38-43;9-19
+0-1;14-15;8-28;6-17;6-34;16-29;16-17;9-19;3-9;19-41
+17-26;6-34;32-44;9-19;3-9
+1-6;17-24;17-26;33-40;31-47;48-49;9-19
+21-31;17-26;6-28;6-17;9-19;5-8;24-38
+20-22;8-20;13-32;13-33;17-20;17-26;17-29;6-7;39-42;31-45;5-32;5-7;19-41;19-20
+0-1;1-8;15-18;8-24;17-20;17-26;6-25
+1-9;15-19;17-18;17-26;16-24;31-37;5-7
+1-5;1-6;1-11;14-16;23-24;17-28;17-25;11-24;31-46;31-47;9-17;5-8;18-23;40-49;24-38;24-50;19-20
+14-15;17-18;11-24;11-38;33-40;16-17;9-31;3-9
+14-17;20-21;27-28;17-20;17-29;6-7
+8-28;17-18;6-34;39-42;48-49;24-50
+0-1;15-18;8-24;21-31;33-39;16-17;5-32
+1-4;1-10;25-26;17-18;17-25;11-17;6-11;40-49;19-51
+14-15;13-33;11-38;6-25;16-24;24-50
+2-3;1-4;8-20;8-16;8-26;17-18;6-8;16-17;7-13;5-8
+2-3;20-22;21-31;31-46;5-7;19-41
+1-4;1-6;15-18;8-28;8-26;11-17;6-11;16-17;31-45;9-31
+2-3;1-9;17-18;17-26;17-36;33-40;6-17;24-45;3-9
+2-3;8-28;8-24;17-18;17-36;16-29;5-32;24-38;24-50
+23-24;17-28;17-25;6-34;40-49
+17-25;32-44;9-30
+1-8;1-11;14-17;8-16;6-25;31-45;38-43;9-31;24-38
+14-15;20-21;20-22;27-28;6-28;31-46;48-49;3-9
+2-3;1-5;1-7;15-18;8-24;13-33;33-40;24-45
+2-3;1-7;14-15;27-28;11-24;9-15;18-23;24-38;24-45
+8-28;8-26;11-24;11-38;31-45;32-44;9-30
+1-11;6-17
+15-19;17-24;11-17;6-34;16-29;31-46;7-13;19-20
+2-3;20-22;17-29;11-38;6-7;16-29;40-49;24-45
+8-24;16-24;31-37;32-42;9-17;5-32
+1-8;14-15;23-24;6-17;48-49;9-30;18-23;3-9
+1-6;17-20;17-29;31-37;9-17
+1-10;1-11;14-15;13-33;33-40;6-28;32-48;19-51
+8-16;11-24;6-7;6-11;16-29;31-46;9-31
+15-18;20-21;8-24;8-26;11-17
+8-26;17-35;31-45;38-43;19-51
+14-16;25-26;8-20;17-28;11-38;6-34;6-11;31-47;32-44;32-42
+13-32;13-33;6-11;16-17
+1-9;20-22;39-42;24-45
+1-7;14-15;8-28;17-18;17-25;24-45
+1-4;8-24;6-28;32-44;24-31;24-45;24-50
+12-13;23-24;11-38;6-11;18-23;24-45
+0-1;14-17;11-24;6-25;32-48;9-15
+1-7;1-10;15-19;8-26;13-32;31-47
+1-7;20-22;25-26;6-34;6-11;39-42;19-20
+1-5;25-26;8-24;21-31;17-18;16-24;16-17;48-49
+15-18;8-20;17-36;33-40;5-7;19-20
+12-13;14-16;17-18;17-25;6-11;5-32;40-49
+6-25;16-17;9-15;19-41
+13-33;17-29;6-17;31-46;31-37;9-17;24-45
+1-7;17-20;6-8;6-17;16-17;32-48
+0-1;1-10;20-21;8-24;13-32;17-28;17-26;6-11;9-15;24-45;19-41;19-51
+1-5;14-17;17-20;17-24;17-26;33-40;32-42;9-31;3-9
+0-1;14-15;14-17;25-26;17-25;17-26;16-24;31-46;38-43;9-15;5-32
+1-10;8-16;17-18;6-8;6-34;7-13
+12-13;13-32;13-33;11-17;6-25;39-42;9-15;24-31;19-41
+1-6;1-11;8-20;8-24;6-7;6-17;48-49
+1-9;15-18;21-31;11-24;31-47;32-44;7-13;5-7
+15-19;11-24;6-11;31-46
+8-16;17-25;6-17;16-17;9-15;5-32;40-49;19-41
+25-26;13-33;17-18;16-24;32-44;9-30
+1-5;14-15;14-17;25-26;8-20;9-31
+17-28;33-39;31-45;32-48;9-30;9-19;5-8
+14-16;23-24;8-26;6-8;6-17;39-42;16-17;9-19;18-23;24-38;19-51
+0-1;1-4;1-5;1-7;14-17;15-19;33-40;31-37;31-47;9-17;9-19;19-41;19-20
+1-7;1-10;17-25;16-24;9-19;5-32;40-49;24-31
+1-4;14-15;6-7;6-17;32-44;9-30;9-19;3-9
+25-26;31-45;32-42;48-49;5-7;19-20
+2-3;15-18;18-23;19-41
+1-11;21-31;9-31;24-50
+20-21;8-28;17-35;11-17;6-7;6-34;9-15;19-41
+1-5;8-26;17-24;17-36;6-8;31-45;32-48;32-44;9-30;5-32
+1-4;20-21;23-24;8-16;17-36;33-39;6-34;38-43;9-15;5-7
+13-32;17-35;33-40;32-48;5-8;24-31;24-50
+12-13;14-16;23-24;11-38;16-17;18-23;3-9
+0-1;1-6;14-17;8-16;13-32;6-28;32-42;48-49;9-17;19-41
+2-3;8-20;17-28;9-31;5-8;40-49
+2-3;1-8;20-22;21-31;11-17;32-44;38-43;9-15;19-41
+13-33;33-39;33-40;31-47
+1-7;14-17;11-38;6-7;6-34;39-42;16-24;9-15
+1-11;12-13;15-18;13-32;17-25;5-7;3-9
+1-8;27-28;8-26;17-28;6-17;31-45;19-51
+2-3;8-16;8-28;11-17;6-17;31-37;32-42;5-32;18-23
+1-9;1-10;15-19;8-26;17-29;11-17;16-29;7-13;9-17;18-23;24-50
+2-3;27-28;8-24;17-35;17-18;6-7
+2-3;8-20;39-42;16-17;19-20;19-51
+1-11;17-35;17-18;17-24;6-17;31-45;31-46;9-15;24-38
+1-9;12-13;8-20;6-28;32-48;32-42;7-13;3-9;19-20
+14-16;15-19;13-32;17-24;6-25;6-34;32-48;38-43;9-31;40-49;19-51
+1-5;14-15;14-17;8-24;11-17;33-40;24-38;24-50
+1-4;13-32;13-33;11-38;39-42;31-47;32-42;48-49
+2-3;1-4;1-7;14-15;15-18;20-21;20-22;6-28;6-8;31-37;9-17;19-51
+1-7;1-9;15-19;23-24;25-26;31-37;5-32;24-38
+1-7;1-9;21-31;16-24;5-7;24-31
+0-1;1-4;1-11;17-20;9-30;5-32;24-31;3-9;19-51
+8-20;17-29;17-36;6-28;31-37;32-44;5-32;40-48;24-45
+23-24;27-28;13-33;17-28;17-24;11-38;6-34;16-17;7-13;24-31;3-9
+21-31;17-35;17-18;17-26;6-34;6-11;31-37;19-51
+1-7;14-16;8-16;17-20;17-26;11-17;6-7
+1-7;1-11;15-19;20-21;20-22;25-26;8-28;17-26;17-36;11-24;6-25;16-17;9-30;18-23;40-49;24-38
+1-7;17-26;11-24;6-11;31-46;9-31;5-32;19-51
+1-5;1-9;14-17;33-40;6-8;39-42;48-49;9-15;3-9
+2-3;1-10;14-16;15-18;6-28;40-48;19-20
+8-16;33-39;24-31
+1-6;1-11;12-13;8-20;13-33;17-28;11-17;7-13;9-30;18-23;19-20
+27-28;17-24;31-47;48-49;19-20
+21-31;16-24;31-45;32-44;32-42;9-30;24-38
+25-26;8-20;8-28;17-20;11-38;6-7;32-48;19-20
+6-17;16-29;32-48
+2-3;1-6;15-19;8-26;48-49;5-7;40-48
+2-3;1-11;14-15;21-31;17-28;9-30;18-23
+2-3;14-17;20-21;27-28;6-17;31-46;31-47;5-8;24-31
+17-35;6-28;6-25;39-42;9-31
+0-1;1-9;1-10;12-13;8-28;6-8;16-24;7-13
+14-16;15-18;15-19;25-26;8-20;17-35;17-29;6-17;32-44;9-15
+1-4;1-5;1-6;14-15;20-22;11-24;33-40;18-23;24-38;19-51
+12-13;14-15;6-28;6-11;39-42;16-24;31-37;9-15;9-20;5-8;24-50
+17-35;11-24;6-7;9-17;40-48;3-9
+1-4;1-7;23-24;17-24;6-17;31-47
+1-7;20-21;8-16;8-26;13-33;17-35;17-20;6-8;16-29;31-37;9-15;5-32;5-8;5-7
+1-7;15-19;17-36;11-17;6-28;39-42;31-46;48-49
+27-28;8-24;17-35;17-28;6-17;16-24;16-17;32-42;18-23;24-31
+25-26;7-13;19-20
+1-5;1-11;14-15;20-21;25-26;27-28;8-28;17-20
+0-1;8-20;8-16;11-24;16-29;9-31;9-19;24-50;19-41;19-20
+14-16;15-18;17-25;17-36;39-42;16-24;31-46;9-15;9-19;5-32
+1-8;14-16;8-20;17-18;17-25;17-36;31-45;38-43;9-17;9-19;19-41
+23-24;8-16;13-33;17-20;17-18;6-8;9-30;24-50
+15-18;8-16;17-28;17-24;17-29;16-29;19-20
+8-28;13-33;17-20;31-37;32-48;9-19
+1-8;1-11;23-24;8-26;17-18;32-48;9-19
+12-13;15-19;21-31;17-24;33-40;6-28;16-24;16-29;38-43
+1-5;14-15;17-18;6-8;6-11;39-42;31-46;5-7;40-48;19-41
+1-6;1-10;20-22;8-24;17-25;11-24;31-45;31-47;18-23
+14-17;17-18;11-24;38-43
+1-7;1-11;15-19;6-11;16-29;7-13;40-48;19-51
+2-3;1-8;20-21;33-40;16-17;48-49;5-32
+2-3;1-6;15-18;8-20;8-16;13-33;33-39;6-17;39-42;31-46;31-47;9-31;24-31;24-45
+2-3;1-5;1-8;12-13;14-16;20-22;8-28;8-24;8-26;21-31;32-48;9-17;24-45;19-41
+1-5;1-9;14-15;17-20;11-38;33-39;9-15;18-23
+14-15;25-26;11-38;6-34;32-48;24-45
+1-10;6-28;16-24;16-29;40-49
+1-4;1-6;14-15
+2-3;1-4;14-17;17-25;24-38;24-31;19-20
+2-3;1-9;27-28;32-44;48-49;9-31;9-30
+2-3;1-4;1-9;12-13;15-19;17-28;17-24;11-38;16-24;16-29;32-42;38-43;5-7;24-50
+1-6;8-20;13-33;17-26;33-39;6-25;19-20
+25-26;17-26;11-17;31-45;9-17;18-23
+1-7;1-10;14-17;23-24;25-26;17-26;6-7;6-8;24-45
+1-5;1-7;15-18;15-19;17-20;17-25;17-26;31-47;32-44;32-42;9-30;24-45
+1-6;1-11;25-26;11-17;6-11;31-47;9-20;9-30;5-8
+1-6;1-9;1-11;8-28;17-36;6-28;16-29;5-8;24-31
+1-10;14-16;21-31;48-49;40-49
+14-16;20-21;20-22;17-18;11-17;33-40;6-7
+17-20;11-24;6-17;32-48;5-8;3-9
+25-26;17-18;11-24;6-28;16-24;16-29;16-17;32-48;32-44
+23-24;25-26;17-35;31-37;38-43;9-31
+20-21;8-20;8-16;8-26;6-7;39-42;5-8;19-41
+14-17;20-22;13-33;17-35;17-20;6-17;9-15;5-7;24-31
+1-5;1-8;14-15;5-7;19-41
+21-31;31-45;9-15;5-8;3-9
+1-10;8-28;17-35;6-34;16-17;9-15;9-30;3-9
+1-7;1-8;15-18;17-24;11-38;6-7;31-47;18-23;24-50
+1-7;27-28;8-16;8-28;17-20;17-28;39-42;9-31;40-48
+1-11;23-24;25-26;21-31;17-24;33-40;9-17;5-8;24-31
+27-28;11-17;32-42
+2-3;1-6;1-9;17-28;17-24;16-24
+0-1;14-16;14-17;27-28;8-24;17-25;17-29;11-24;6-28;6-34;38-43;5-8;19-51
+1-4;8-20;8-26;11-24;6-8;5-32
+14-15;33-40;32-44;32-42;40-48
+1-6;8-16;13-33;11-17;5-8;18-23;40-49;19-51
+1-4;1-9;25-26;17-18;17-28;17-29;33-39;6-25;6-8;6-17;39-42;48-49
+0-1;17-29;11-24;6-25;9-17
+1-9;12-13;15-18;15-19;20-22;8-24;9-17;5-7;40-48
+1-11;20-21;17-18;31-47
+17-35;33-40;7-13;24-50
+0-1;17-29;6-34;16-24;18-23;40-48
+1-5;8-20;21-31;17-36;11-17;6-28;39-42
+1-8;20-21;8-24;17-36;16-29;38-43;19-41
+12-13;13-33;11-38;48-49;5-32;40-48
+1-8;14-16;21-31;17-24;33-39;33-40;16-24
+1-11;14-16;14-17;15-19;11-24;31-37;32-42;9-15;9-31
+1-10;14-17;23-24;8-16;8-28;39-42;24-38;19-41
+33-40;6-28;6-17;16-24;31-37;38-43;9-31
+1-9;8-24;31-37;7-13;19-20
+15-18;6-34;6-11;16-24;32-42;24-31;19-41
+17-29;31-47;32-48;5-7;24-38;19-20
+1-8;15-19;27-28;33-39;6-28;32-48;7-13;9-30
+8-20;17-35;11-24;6-8;6-17;6-11;31-45;31-46;32-44;9-15;9-30
+27-28;8-24;17-28;11-24;16-29;32-42;9-19;24-38
+1-10;20-21;8-28;17-35;17-25;17-29;11-38;31-47;9-17;9-19
+6-28;6-17;9-17;9-19;24-45;3-9;19-41
+0-1;20-22;17-18;16-17;38-43;9-19;24-38
+1-4;14-16;21-31;6-34;16-29;31-46;32-44;9-30;9-19;40-49
+1-8;11-38
+1-4;14-16;20-21;17-26;48-49
+15-19;17-26;11-38;24-38
+1-7;15-18;20-22;17-26;33-39;6-25;31-45;32-42;9-17
+1-4;1-5;1-7;1-10;23-24;17-20;17-28;17-26;24-31
+1-7;8-20;17-24;40-49;19-51
+1-9;12-13;13-33;17-25;31-37;9-31;5-32;5-7
+0-1;14-17;23-24;24-45
+21-31;17-20;11-24;48-49;7-13;19-20;19-51
+1-8;17-28;17-36;6-7;6-28;6-25;16-17;19-41
+1-11;15-19;8-16;17-35;17-36;5-32;18-23;24-50;19-20
+14-17;27-28;17-18;31-45;31-47;40-49;24-38
+1-10;14-17;21-31;33-39;16-24;9-17;19-41;19-51
+12-13;20-22;17-35;31-46;9-31;9-17
+14-16;15-18;8-20;17-25;33-40;6-7;6-8;32-44;24-50
+0-1;23-24;17-35;31-37;32-42
+1-11;8-16;6-11;38-43;24-45
+1-7;20-21;17-18;6-8;5-32;40-49;24-45
+1-7;20-22;25-26;13-33;11-38;33-39;6-7;31-46;24-45;19-41
+1-10;12-13;6-11;39-42;3-9
+14-15;7-13;5-7
+0-1;1-9;20-21;17-35;11-24;6-7;6-28;31-37;32-44;5-32
+15-19;13-33;17-28;17-25;24-50
+14-15;20-22;23-24;8-26;17-29;6-11;16-29;32-42
+1-6;27-28;8-24;17-35;17-24;17-25;11-38;6-17;7-13;9-15
+15-19;8-20;21-31;33-40;6-25;39-42;16-17;9-31;18-23;24-31
+1-4;15-18;25-26;17-35;11-17;16-24;40-48;24-38
+1-4;1-9;1-10;25-26;17-29;6-34;32-44;32-42;38-43;9-30;24-45;24-50
+1-6;14-16;11-24;16-29;24-45;19-20
+1-4;15-19;8-24;11-24;40-48;40-49;24-38
+0-1;1-4;1-8;23-24;8-16;8-28;13-33;17-28;6-7;31-37;31-47;32-48;24-31;19-20
+1-5;17-29;11-17;6-28;31-46;31-37;9-31
+1-6;1-8;20-22;8-26;16-29;32-44;9-15;9-30;40-48;24-38
+2-3;12-13;23-24;25-26;27-28;17-20;11-24;32-44;48-49;24-50
+1-9;6-8;5-8;3-9
+1-10;25-26;8-24;6-7;6-25;31-45;40-49
+14-17;8-20;8-16;17-18;17-28;17-29;17-36;6-28;6-34;16-17;48-49;7-13;40-48;24-38
+1-6;15-18;6-8;31-46;5-8;19-41;19-51
+20-21;20-22;17-18;17-24;11-17;16-29;32-44;9-30;5-32
+1-5;1-9;15-19;16-17;32-48;9-15;9-17
+12-13;8-24;17-24;11-38;6-17;31-37;3-9;19-51
+1-6;14-16;23-24;8-16;21-31;33-40;6-25;38-43;40-49
+27-28;31-46
+11-17;33-39;48-49;24-50;19-51
+2-3;1-7;1-11;14-16;27-28;13-32;17-29;40-48;19-20;19-51
+0-1;2-3;1-9;14-15;8-24;21-31;33-39;16-17;32-42;9-17;24-38
+14-17;6-8;31-46;32-48;24-50
+8-28;11-38;33-39;32-48;9-17;40-48;24-38
+1-11;15-19;20-21;11-38;6-7;31-37;9-15;5-32;24-45;19-20;19-51
+14-15;17-28;17-25;7-13;19-20
+1-9;15-18;27-28;11-17;33-40;38-43;40-48;24-38;3-9
+1-10;14-15;25-26;8-16;8-28;21-31;17-26;6-25;31-46;9-31;19-20
+8-26;13-33;17-20;17-26;48-49;7-13;24-31
+1-4;15-19;20-22;17-26;33-39;32-44;38-43
+1-4;1-7;1-8;12-13;21-31;17-26;6-17;39-42;9-15;5-32;18-23
+0-1;1-7;1-9;14-17;17-18;31-47;9-17
+15-18;11-38;31-45;9-31;5-32
+0-1;1-4;1-8;14-16;8-20;8-16;17-35;17-20;11-17;9-17;5-7
+23-24;17-18;11-38;6-25;6-8;6-17
+8-28;11-38;6-28;6-17;19-41
+1-5;20-21;39-42;48-49;9-19;18-23;40-49;24-31
+14-15;14-17;13-33;17-20;9-15;9-19;5-8;24-50
+1-9;1-10;15-18;8-16;8-26;17-36;33-39;16-24;9-19
+6-34;6-11;9-31;9-19;19-41
+33-40;6-25;31-45;32-44;9-19;24-50
+27-28;8-28;17-29;9-15;18-23;40-49
+2-3;6-11;16-24;16-17
+14-16;11-17;6-25
+1-7;8-20;21-31;6-25;16-29;31-47;32-42;48-49;5-8
+1-7;1-11;12-13;17-36;6-28;19-20
+14-17;8-24;9-31
+1-5;1-6;14-16;8-16;8-28;8-26;6-34;5-8;5-7;3-9;19-20
+27-28;16-29;31-47;32-44;9-30
+13-33;17-35;16-24;9-30
+27-28;17-18;16-17;5-8;18-23
+1-8;15-19;8-24;6-28;32-42;24-50
+1-11;27-28;21-31;17-25;11-24;6-25;31-45;9-31
+1-6;8-20;17-25;31-47;9-15;18-23
+1-5;1-7;14-16;20-22;17-20;32-48;7-13;24-38
+0-1;27-28;8-16;17-20;17-24;24-31
+33-39;33-40;39-42;16-29;31-46;48-49;9-15
+14-16;23-24;27-28;8-26;17-24;6-34;9-30
+1-10;14-16;8-26;13-32;11-24;6-17;6-11;9-15;9-30
+1-4;1-5;14-17;27-28;17-24;32-48;7-13;9-31
+15-19;25-26;32-48;5-32;40-49;24-31
+15-18;20-21;6-17;39-42;16-29;31-45;31-46
+1-6;11-38;9-15;5-7;3-9;19-51
+1-9;17-35;6-28;32-42;9-17
+1-7;1-11;15-19;8-20;8-28;21-31;13-33;17-18;33-39;24-50
+20-21;8-20;8-26;17-36;32-44;24-31
+1-7;1-10;11-24;6-34;16-24;31-45;31-47;38-43;19-20;19-51
+11-17;33-40
+1-8;25-26;8-26;17-36;11-38;6-28;32-42;18-23;24-31;19-20
+0-1;1-6;12-13;14-15;25-26;17-36;31-46;19-51
+1-5;17-29;39-42
+14-15;20-22;8-16;13-32;11-24;6-17
+1-11;14-16;23-24;17-35;17-20;17-28;11-17;33-39;16-24;32-44;5-7;19-41;19-51
+1-6;1-10;15-18;15-19;21-31;13-32;31-37;38-43;24-31
+17-35;17-29;6-17;31-45;31-46;7-13
+12-13;6-34;31-47;32-42;48-49;5-32;19-51
+1-9;8-24;33-40;31-46;38-43
+20-22;25-26;8-16;8-26;13-33;17-20;17-26;16-24;18-23
+0-1;1-6;1-11;17-28;17-24;17-26;33-40;32-44;9-31;40-49;24-50;3-9
+1-7;14-17;15-19;27-28;17-35;17-26;11-38;6-7;48-49
+0-1;1-7;8-16;33-39;16-24;31-45;38-43
+1-7;1-9;1-11;17-35;11-17;33-40;6-8;6-17;6-11;16-29;32-44;19-41
+1-4;14-15;13-33
+2-3;1-4;6-7;6-34;7-13;40-49;19-41;19-20
+2-3;1-5;1-10;14-15;25-26;6-25;6-8;6-11;16-24;24-50
+1-4;12-13;8-20;21-31;17-24;31-37;32-48
+1-9;23-24;8-28;8-26;16-29;32-48;32-44;48-49;9-30;19-20
+2-3;15-19;23-24;17-28;6-28;48-49;9-15;5-7;24-38
+1-9;14-16;11-17;5-7;24-50;19-41;19-51
+1-5;1-11;27-28;8-28;17-36;6-25;6-11;31-37;7-13
+20-22;23-24;8-16;8-24;17-35;11-38;32-44;48-49;9-30;18-23;24-50
+0-1;27-28;13-32;6-28;6-34;32-42;38-43;9-30;5-8;24-31;24-50
+1-6;25-26;6-11;16-24;7-13;3-9;19-41
+8-20;8-28;13-32;6-7
+12-13;15-19;20-22;39-42;31-46;5-8;19-41
+1-10;14-17;8-20;8-26;17-29;17-36;11-38;33-40;6-28;6-11;31-45;32-48
+1-6;15-18;33-39;16-24;32-48;9-30
+14-15;23-24;21-31;17-28;6-7;31-37
+0-1;17-20;17-25;11-17;6-17;39-42;16-29;9-31;18-23;3-9;19-20
+1-9;13-32;17-25;33-39;6-11;16-17;18-23;24-31;3-9
+1-7;1-11;9-19;19-51
+1-7;14-17;8-16;11-38;6-34;31-45;7-13;9-19
+12-13;20-21;11-17;6-7;6-8;16-17;9-31;9-19;24-45
+1-10;17-35;17-28;31-47;9-19;24-45;19-20;19-51
+17-25;9-19;24-45
+1-11;14-15;8-20;21-31;13-33;17-35;31-45;32-48;48-49;9-17;5-8
+1-5;20-21;11-38;6-7;16-24;31-37;5-32;40-49;24-31;3-9;19-51
+15-18;25-26;8-28;17-35;17-24;6-8;32-44
+23-24;25-26;27-28;11-17;38-43;5-8
+33-39;6-8;31-47;9-17;40-49
+2-3;1-4;15-19;17-24;33-40;6-34;16-17;24-38;24-50
+0-1;2-3;12-13;14-16;20-22;17-18;17-25;6-8;5-7
+14-16;17-24;11-24;9-15;5-8;5-7
+1-7;1-8;11-24;48-49;7-13;24-38
+1-5;1-7;1-10;8-20;8-26;13-33;9-31;9-17;24-31;24-50;3-9
+15-19;8-20;8-26;17-18;17-29;6-25;38-43;40-48
+17-25;17-36;6-7;39-42;16-17;32-48;9-17;5-8;24-31;24-50
+14-17;8-28;8-24;21-31;17-18;17-24;6-34;32-48;32-42;40-49
+1-5;1-11;14-15;15-18;27-28;13-32;7-13;38-43;19-51
+1-6;1-7;1-9;13-33;17-18;31-47;9-31;24-45;24-50
+1-4;1-5;14-15;23-24;17-24;17-36;32-44
+1-7;12-13;13-32;17-36;24-45;3-9
+0-1;1-8;8-28;17-36;6-25;39-42;32-42;7-13
+25-26;8-24;33-39;6-11;19-20
+25-26;8-20;8-16;17-26;33-40;16-29;32-44
+12-13;27-28;17-26;7-13;9-15;9-30;40-48;19-51
+1-6;1-11;14-17;20-22;21-31;17-25;17-26;6-17;38-43;9-31
+23-24;17-20;17-26
+1-5;11-24;16-29;31-37;24-45
+1-7;1-9;31-47;32-42;5-32;24-31;24-50
+1-6;15-18;20-21;17-35;33-39;6-25;9-30
diff --git a/examples/failures/failures-0.1 b/examples/failures/failures-0.1
new file mode 100644
index 0000000..08cb6a4
--- /dev/null
+++ b/examples/failures/failures-0.1
@@ -0,0 +1,1000 @@
+17-18;17-25;17-36;11-17;7-13
+1-7;12-13;14-16;21-31;33-39;9-17
+1-4;14-16;25-26;17-35;6-8;16-17;31-46;32-42;38-43;9-19
+20-21;23-24;8-20;17-20;11-38;6-28;9-19;19-51
+1-6;27-28;8-28;21-31;17-36;31-45;31-37;9-19;40-49;24-38
+1-11;8-26;13-32;17-18;17-28;6-25;16-17;31-45;32-42;9-19;5-32;24-50
+20-21;20-22;25-26;17-36;6-34;16-29;31-45;31-47;32-44;9-15;9-19;24-45
+2-3;15-18;20-22;25-26;27-28;6-28;6-8;6-17;6-34;7-13;38-43;9-31;9-19
+1-10;20-22;17-25;33-40;16-29;32-48;5-32
+1-11;14-15;20-21;20-22;8-28;17-35;17-28;11-24
+0-1;14-16;20-22;27-28;13-33;17-18;16-29;24-50;3-9
+20-22;23-24;11-38;11-17;31-47;32-42;5-32
+14-15;14-16;20-21;20-22;11-17;33-40;6-7;6-17;16-24;16-29;38-43;9-17;40-49;19-51
+1-4;13-32;11-24;11-38;6-7;16-24;7-13;9-30;9-19;40-48
+20-22;27-28;8-16;21-31;31-37;5-8
+20-22;17-35;33-39;16-29;5-32;24-31
+15-18;20-21;17-18;17-25;17-26;33-39;48-49;19-41
+12-13;27-28;13-32;17-26;17-29;6-28;6-25;16-17;9-31;24-31
+8-16;17-24;17-26;6-8;6-17;5-32
+2-3;1-6;20-21;25-26;17-29;7-13
+1-10;27-28;8-26;17-35;6-11;32-48;9-15;5-7;19-51
+0-1;17-18;17-24;17-29;6-28;6-8;7-13;5-32;5-8
+2-3;1-7;20-21;8-16;16-24;16-17;9-17;5-7;40-49
+23-24;27-28;21-31;17-20;11-24;6-17;32-42;9-30
+1-4;14-15;17-20;17-25;6-7;9-17;19-41
+1-8;15-19;17-24;6-25
+15-19;20-21;8-20;17-35;17-25;11-24;9-30
+1-5;15-19;8-20;8-28;13-33;17-18;6-34;9-31;19-41
+14-15;17-28;6-34;6-11;48-49;9-30;24-38;3-9;19-20
+1-7;1-9;1-10;20-21;13-32;5-8;19-20
+1-4;1-8;17-20;32-42;38-43;9-30;19-20;19-51
+1-4;1-9;14-16;17-35;33-40;6-7;6-28;40-49;24-31;24-45;19-20
+14-15;15-19;11-38;11-17;39-42;31-37;31-47;38-43
+1-9;12-13;14-16;21-31;7-13;24-31
+1-7;15-18;17-28;11-17;6-7;32-44
+1-4;1-8;8-24;21-31;17-28;11-24;6-17;6-34;9-31
+6-17;16-24;7-13;40-49;19-41
+1-5;11-24;6-8;6-11;39-42
+1-9;17-18;11-17;31-45;19-41;19-51
+17-28;11-24;6-28;6-25;32-42;24-50
+14-17;11-24;16-17;31-47;48-49;18-23;40-48
+1-8;1-10;1-11;14-17;23-24;13-32;38-43;5-7;40-49;24-50;19-41
+1-5;14-17;17-36;11-24;16-24;32-48;32-42;9-17;18-23
+0-1;14-15;14-17;15-18;21-31;13-33;17-20;17-18;17-25;48-49;5-7;24-38
+25-26;8-28;17-36;6-25;31-37;32-48;18-23;3-9
+1-11;13-33;6-28;31-47;7-13;3-9
+0-1;6-34;31-46;32-48
+14-15;17-29;17-36;6-8;38-43;18-23;24-45;24-50
+1-9;27-28;6-7;31-47;24-45
+12-13;17-18;17-29;17-36;6-17;6-34;32-44;32-42;9-15;18-23
+2-3;1-6;1-7;1-11;8-20;8-28;8-26;6-7;6-28;40-49;24-31
+8-20;8-26;9-31;24-38
+14-16;8-16;16-24;16-17;31-46;9-17;24-50;19-41
+1-10;15-18;23-24;21-31;13-32;17-25;32-44;9-19
+14-15;15-19;27-28;8-24;17-20;17-26;6-11;16-29;9-15;9-17;9-19;40-48;24-38;24-50
+15-19;20-21;17-26;6-34;31-37;38-43;9-30;9-19;24-45;19-51
+0-1;1-10;15-19;21-31;17-35;17-26;6-28;6-8;16-29;9-31;9-19;3-9
+1-5;23-24;17-35;31-37;38-43;40-49
+1-7;1-8;14-15;8-20;8-26;13-32;13-33;32-48;7-13;9-30;9-19;5-8;3-9;19-41
+1-5;8-20;8-24;8-26;16-24;16-29;48-49;19-20
+15-19;13-32;13-33;17-18;17-28;6-28;6-17;16-29;7-13
+1-5;15-19;6-8;31-46;32-42;9-31
+2-3;14-15;15-18;15-19;23-24;13-33;17-24;16-24;16-29;32-44;5-7;24-45;3-9
+1-7;21-31;17-35;11-17;6-11;9-15;9-17;40-48;3-9;19-41
+14-16;25-26;31-45;32-42;9-30;9-17;40-49
+1-10;1-11;17-36;6-7;31-45;9-15;5-8;24-50
+2-3;1-5;8-16;21-31;17-25;9-31;9-30
+0-1;12-13;8-24;17-20;17-36;11-17;33-40;6-17
+8-20;16-29;32-42;5-32;5-8;24-38;24-31
+12-13;17-24;17-29;11-17;16-24;9-15;24-31;19-41
+1-11;14-15;8-28;13-32;17-36;11-17;6-25;6-11;32-48;7-13;40-48;24-38
+8-16;17-29;6-28;6-8;32-42;48-49
+1-7;8-24;17-24;5-7
+14-15;8-26;17-29;6-17;5-8;40-49;19-51
+1-5;1-11;23-24;8-26;13-33;11-24;5-7;3-9
+8-16;8-28;17-24;9-17;3-9
+25-26;8-24;21-31;13-33;17-28;17-25;11-24;6-34;31-37;31-47;32-44
+14-17;8-28;11-24;6-28;31-46;31-37
+14-17;20-21;27-28;17-18;17-28;5-32;18-23;40-49;24-50
+8-20;8-16;8-28;8-24;17-28;33-40;9-15
+1-7;1-8;14-17;21-31;17-25;11-24;39-42;5-8
+15-18;8-24;17-28;32-44;5-8;19-51
+27-28;8-26;17-35;17-24;11-38;6-7;16-17;31-46;7-13;5-32;5-7;24-45
+20-22;23-24;8-20;33-39;32-42;9-15;40-49
+14-15;15-19;17-18;17-36;6-8;6-34;39-42;31-47;5-7;40-48
+1-8;1-11;15-19;8-16;8-24;17-20;17-24;16-24;9-15;18-23;19-41
+12-13;23-24;13-32;17-36;6-17;31-46;32-42;48-49;9-31;3-9
+12-13;17-35;6-25;16-17;31-37;38-43;9-30;18-23;40-49;24-31
+17-24;17-36;33-39;6-11;39-42;24-38;19-51
+1-6;1-10;1-11;8-16;8-24;21-31;17-18;17-25;33-39;31-45;31-47;48-49;9-30;24-45
+1-8;8-20;8-26;13-33;17-29;16-29;31-46;40-48
+1-5;8-20;13-33;17-36;11-38;31-45;31-46;19-20
+0-1;8-20;17-20;6-28;6-17;31-45;9-30;40-48;19-20
+1-10;17-26;17-29;39-42;32-42;38-43;19-20
+1-11;8-16;17-26;11-24;7-13;9-30;5-8;19-20
+2-3;14-16;23-24;8-28;17-18;17-26;17-29;6-8;16-24;31-46;31-47;32-48
+25-26;8-26;6-11;7-13;9-31;9-30;19-41
+14-16;8-26;17-28;17-29;6-17;39-42;9-17;40-49;24-45
+2-3;1-5;13-32;17-20;11-17;16-29;38-43;9-30;19-51
+14-15;15-18;21-31;11-38;11-17;33-40;6-7;16-17;31-46;9-15;40-48
+1-7;8-28;17-18;11-17;6-7;16-29
+1-10;12-13;15-18;17-36;11-38;6-25;48-49;5-32
+0-1;1-10;17-28;39-42;48-49;5-8
+12-13;16-29;5-7
+0-1;8-16;8-26;11-38;11-17;39-42;9-19;5-32
+1-10;1-11;14-16;8-26;13-33;17-36;11-17;6-17;48-49;9-15;9-19
+17-18;6-28;39-42;9-31;9-19;40-49;19-51
+1-5;14-16;23-24;17-35;17-36;38-43;9-19;5-32;24-38
+15-18;25-26;33-39;31-37;32-44;7-13;9-19
+1-11;27-28;17-36;31-37;9-17
+14-15;6-17;5-32
+15-19;17-36;6-34;16-24
+0-1;1-11;12-13;14-15;15-18;17-35;17-36;16-17;32-48;48-49;7-13;38-43;9-15;5-32
+2-3;1-11;17-35;17-29;6-8;16-24;16-29;38-43
+1-5;1-8;8-26;13-32;17-20;6-7;6-17;31-45;5-32;40-48
+1-11;15-19;11-24;40-48;24-45;19-51
+1-4;14-17;20-21;17-24;11-24;5-8
+2-3;1-4;14-17;21-31;17-35;17-28;17-29;32-44;7-13;38-43;9-31;5-32;40-49
+1-6;1-10;17-29;33-40;39-42;31-45;48-49
+15-18;17-28;31-45;7-13
+1-6;14-16;23-24;13-33;17-20;17-18;6-28;6-34;5-32;18-23
+27-28;17-28;32-44;48-49;40-48
+14-15;20-21;25-26;17-35;33-40;6-11;31-37;32-48;38-43;9-15;9-17;18-23;19-51
+8-16;8-28;33-39;5-32;5-7
+2-3;12-13;14-16;8-24
+1-7;1-8;27-28;6-28;6-17;18-23
+1-11;12-13;20-21;13-32;17-18;32-44;9-15;5-7;40-49
+1-6;8-24;6-17;6-34;9-31;24-45
+15-18;27-28;8-16;8-26;17-35;38-43;24-31;3-9
+0-1;23-24;8-28;8-26;17-36;16-24;31-47;40-48;3-9
+1-5;1-8;14-16;21-31;13-32;33-39;6-7;16-29;9-30;24-38;24-31;19-51
+1-7;20-22;27-28;17-18;17-36;33-40;6-25;32-42;7-13
+2-3;1-5;20-22;8-20;17-26;11-24;6-7;31-37;9-17;19-51
+20-22;8-20;17-35;17-26;17-36;6-8;48-49;5-32;24-45;19-41
+1-9;1-11;20-22;27-28;17-26;11-24;6-28;31-47;32-48;24-38
+1-7;12-13;14-15;17-18;39-42;32-44;48-49;7-13;9-15;9-31;24-45
+1-4;8-26;17-26;6-7;39-42;18-23
+1-9;20-22;21-31;13-33;17-18;17-25;11-17;48-49;9-15;9-31;5-32;40-48;24-50
+0-1;1-4;23-24;18-23;40-48
+1-9;14-16;17-35;6-28;6-25;16-24
+0-1;1-5;17-28;6-34;16-29;31-47;9-15;5-32;19-51
+1-9;14-15;14-16;15-19;23-24;27-28;6-34;24-45
+1-10;12-13;15-19;17-18;17-29;16-29;31-37;9-17;24-50
+1-9;15-19;8-26;33-39;7-13
+2-3;17-28;17-25;17-29;11-38;33-39;6-8;16-29;31-45;5-7;40-48;40-49;24-31;19-41
+1-6;1-9;6-11;31-45;7-13;38-43;5-8;3-9
+1-5;11-38;38-43;9-17
+1-11;15-18;15-19;20-22;23-24;17-28;6-28;16-24;32-42;9-31;5-8
+15-19;20-22;8-20;17-29;6-17;16-29;31-46;7-13;38-43;24-38;24-45
+17-28;33-39;31-37;9-17
+1-5;14-16;15-19;20-22;8-20;17-29;16-29;31-45;32-44;19-51
+1-7;1-10;1-11;20-22;8-26;17-35;17-20;17-28;17-36;31-45;31-37;3-9
+14-16;20-22;13-32;16-29;31-45;31-46;3-9
+20-22;21-31;17-36;6-7;6-25;6-17;39-42;32-42;40-48;19-41
+25-26;6-7;6-34;16-29;32-44;5-8
+1-4;1-5;1-8;15-18;13-33;6-17;9-19;19-41;19-20
+17-35;11-17;33-39;6-28;16-24;31-46;9-19;24-31
+8-20;8-28;6-25;40-48
+1-5;1-7;13-33;17-20;11-17;33-39;9-19;5-7
+2-3;23-24;17-25;11-17;6-11;32-44;9-19;40-49;24-31
+0-1;33-40;6-8;7-13;9-15;9-19;19-51
+14-15;6-28;31-46;31-37;31-47;48-49;9-31;9-17;40-48
+8-28;17-35;11-24;16-17;5-8
+1-10;11-17;33-39;6-28;16-24;31-47;9-30;40-49;3-9
+8-28;17-18;33-39;48-49;24-45
+15-18;11-24;6-11;16-17;9-15;9-30;5-7
+1-10;8-20;8-24;8-26;13-32;17-24;17-29;11-24;11-38;11-17;6-7;9-31;40-48;24-50
+17-28;6-28;5-7;40-48;19-51
+2-3;15-19;20-22;17-20;31-46;9-17;24-50
+6-7;31-47;32-44;32-42
+21-31;13-33;17-35;17-28;33-39;7-13;18-23;24-38
+15-19;23-24;8-24;17-26;33-39;31-47;38-43;9-15
+1-5;1-8;14-16;15-19;27-28;8-16;8-28;17-26;6-8;6-11;31-45;32-48;32-42;5-32;18-23;19-41
+1-6;15-19;17-26;31-45;31-46
+1-11;23-24;25-26;8-20;8-28;8-26;17-26;16-29;38-43;5-32;24-50;19-20
+1-6;1-7;8-24;17-20;17-36;6-34;32-48;32-42
+2-3;1-4;12-13;8-16;6-25;31-47;9-31;18-23
+17-18;33-39;16-17;5-32;19-41
+1-10;1-11;14-15;17-35;6-11;16-29;31-47
+15-19;20-22;23-24;8-28;17-28;17-36;6-34;6-11;3-9
+12-13;27-28;8-28;8-24;17-24;11-38;48-49;7-13;38-43;24-50
+2-3;12-13;17-25;6-28;16-29;32-44;5-32;5-8
+1-7;14-16;13-33;17-20;6-7;6-25;6-8;6-17;16-24;32-42;40-49;24-31
+1-8;14-15;23-24;11-24;6-8;19-51
+14-16;15-18;13-33;17-35;31-47;5-32;24-31;24-45
+1-6;32-48;32-44;38-43;24-50
+25-26;27-28;8-16;17-28;11-24;31-37;9-31;9-17;3-9
+0-1;6-17;5-32;5-7;3-9
+1-5;17-20;17-18;11-38;5-8;19-41
+27-28;8-26;17-35;6-25;32-44;5-7
+0-1;1-11;15-19;20-22;27-28;13-33;17-35;11-38;6-17;6-34;9-15;9-31;3-9
+1-6;1-10;8-16;17-28;17-25;17-29;9-15;5-32;19-51
+20-22;39-42;16-24;7-13;40-49;24-45
+2-3;15-18;20-22;27-28;21-31;17-29;6-17
+1-8;14-15;20-22;17-18;32-42;7-13;5-32
+20-22;8-16;13-32;17-35;33-40;6-28;16-17;48-49
+15-19;21-31;13-33;17-25;17-36;31-45;9-15;9-30;5-32;40-49
+1-4;20-22;8-20;8-28;11-38;11-17;33-39;6-34;32-48;5-32
+0-1;1-4;20-22;8-20;13-33;11-17;6-17;6-11;31-45;31-46;24-31
+1-4;1-8;15-19;20-22;25-26;27-28;17-18;33-40;31-45;24-45
+1-4;1-6;15-19;13-33;17-25;6-7;39-42;31-45;32-42;5-32;40-49;24-31;19-51
+1-5;14-16;8-16;21-31;6-8;39-42;16-24;24-38
+15-19;6-7;6-25
+1-7;1-10;14-16;8-28;21-31;17-20;11-24;31-46;38-43;19-41
+1-5;23-24;5-8;24-38;3-9
+1-8;14-16;8-26;17-18;39-42;9-15;3-9
+25-26;8-20;21-31;17-20;11-24;6-8;6-17;9-31;5-32;18-23
+14-17;13-32;6-8;31-46;31-47;48-49;9-17;9-19;24-45
+2-3;14-17;17-25;38-43;9-19;5-7;19-51
+0-1;1-7;14-15;14-17;17-20;17-28;17-26;6-28;6-25;39-42;32-48;9-19
+1-8;1-11;14-17;17-18;17-24;17-26;6-8;48-49;9-19;24-50
+1-5;12-13;14-17;15-18;25-26;17-26;17-36;31-46;24-38
+13-33;17-25;6-25;31-46;32-48;18-23
+12-13;14-15;23-24;21-31;17-26;16-17;31-47;32-42
+17-28;17-24;17-36;6-11;39-42;38-43;19-41
+1-10;1-11;8-28;11-38;18-23;24-31;24-45
+1-6;17-20;17-18;17-36;16-24;31-46;31-37;9-15;9-31;24-50
+13-33;17-24;11-24;33-39;6-34;9-17;18-23;24-31;19-20
+17-28;17-25;17-29;17-36;33-40;6-34;39-42;31-47;7-13;9-30;19-20;19-51
+1-9;1-11;13-32;11-24;6-7;32-42;38-43;9-15;18-23;40-49;19-20
+0-1;15-18;8-16;8-28;8-26;17-29;6-7;31-46;7-13;9-30;19-20
+1-4;1-5;23-24;6-17;16-17;24-45
+2-3;17-25;6-7;6-8;7-13;19-41
+1-5;1-8;6-28;6-25;32-44;5-8
+1-6;14-16;27-28;17-28;40-48;24-45
+1-10;17-35;17-29;18-23;40-49
+25-26;8-16;11-17;31-46;9-30;19-41
+1-9;14-16;16-24;31-37;9-31;5-8;19-51
+17-35;17-18;39-42;9-30;9-17;5-7;24-50
+1-5;15-19;8-26;11-38;11-17;31-45;31-37;38-43
+1-9;15-19;8-20;13-32;11-17;39-42;16-29;9-17;5-32;24-50
+1-5;1-7;15-18;16-29;16-17;9-15
+0-1;1-6;13-32;39-42;31-45;32-42;24-31
+1-8;17-36;6-11;16-24;5-8
+0-1;1-6;1-9;23-24;17-20;39-42;16-17;40-49;3-9;19-51
+1-4;1-7;21-31;11-38;9-30;5-7;24-38
+1-11;8-16;17-28;17-36;6-7;6-28;6-8;32-48;32-42;24-50
+1-5;1-9;14-16;21-31;13-32;33-40;6-7;9-15;9-31;24-31
+1-6;1-7;25-26;17-28;33-39;16-29;32-44;38-43;9-17
+1-5;8-28;17-35;17-18;33-39;6-7;6-28;6-34;31-46;32-42;48-49;40-49
+2-3;1-4;15-18;6-7;6-34;16-29;3-9;19-41
+1-4;6-17;39-42;40-48
+13-32;17-25;32-42;24-45
+8-26;17-18;17-29;6-17;39-42;16-24;7-13;40-49
+1-6;25-26;8-16;8-26;33-39;19-51
+2-3;1-5;14-17;27-28;17-25;33-40;6-8;32-44;32-42;5-32;3-9
+1-4;17-29;33-40;6-11;32-48;9-15;24-50
+0-1;1-6;1-9;14-16;14-17;23-24;13-32;13-33;17-35;31-46;9-31;40-48;3-9
+12-13;17-20;6-25;6-34;39-42;32-48;40-48
+1-9;14-16;14-17;27-28;8-28;5-32;40-49;24-50
+1-6;17-25;17-26;6-28;6-8;31-47;9-17;24-45;19-20
+1-9;1-11;12-13;14-15;25-26;17-26;11-38;33-39;31-46;31-37;32-48;24-45
+17-26;39-42;16-17;38-43;3-9;19-20;19-51
+1-5;6-25;6-34;31-45
+1-7;20-22;8-16;17-36;6-34;31-45;48-49;18-23;40-48;24-50
+1-11;20-22;27-28;17-25;31-45;7-13;5-32;24-31
+0-1;2-3;14-17;8-20;21-31;11-17;39-42;9-31;19-41
+1-10;8-16;8-28;6-34;9-30;5-8;5-7;19-51
+14-16;14-17;25-26;16-17;7-13;38-43;9-30;9-19;24-45
+1-8;14-15;14-17;15-18;8-26;17-35;17-28;31-45;31-37;9-19;5-7
+1-6;1-7;14-16;8-26;17-18;17-25;33-40;6-28;6-25;6-17;31-45;32-48;9-30;9-19
+1-4;1-10;13-32;6-8;39-42;31-45;31-47;32-44;32-42;9-19;5-7
+1-4;17-24;9-30;9-19;40-49;19-51
+1-4;1-5;17-28;16-24;38-43;5-8;18-23;40-48;24-38
+1-4;1-8;12-13;15-19;8-28;17-35;11-38;33-39;6-28
+1-6;15-19;13-33;17-18;17-24;33-39;39-42;32-44;9-15;18-23;24-45
+12-13;14-15;8-28;8-26;38-43;9-31;24-45
+12-13;14-16;23-24;8-26;17-29;6-17;6-11;16-29;7-13
+17-20;17-18;17-25;17-29;6-17;39-42;16-24;19-41
+0-1;1-5;11-38;33-40;31-47
+14-15;14-16;8-24;21-31;17-29;16-24;16-29;48-49;7-13;5-8;40-48;19-51
+13-32;33-39;6-7;6-28;31-37;9-15;5-7
+8-28;17-20;11-24;33-39;16-29;38-43;9-17;24-31
+2-3;17-25;33-40;6-25;6-17;32-48;5-7;19-41
+8-24;11-24;6-8;6-34;16-29;24-38;24-45
+1-11;8-26;13-32;17-20;17-36;11-24;6-17;38-43;3-9
+1-7;1-10;27-28;16-24;31-46;32-48;9-15;9-31;5-8;40-48;24-38;24-31
+1-6;15-18;11-38;38-43;5-8;40-48;19-51
+8-24;17-20;17-24;16-17
+1-8;17-35;11-24;9-30
+1-11;14-16;23-24;27-28;13-33;17-36;32-42;7-13
+14-15;6-17;31-45;31-46;38-43;5-32;5-7;40-49
+0-1;14-16;8-16;17-28;17-36;11-38;33-40;6-34;6-11;16-17;31-45;32-44
+1-7;25-26;27-28;8-24;21-31;6-34;31-45;31-37;5-7
+1-11;17-18;6-8;9-17;5-32;5-8;40-48
+1-5;17-24;31-46;48-49;19-51
+12-13;15-18;27-28;6-7;6-17;16-24;32-48;32-42;38-43;9-31
+15-19;8-24;13-32;16-17;9-15;5-32
+1-10;15-19;23-24;17-24;17-26;32-48
+2-3;1-6;15-19;8-26;17-18;17-26;11-17;31-46;19-41
+1-10;15-18;11-24;6-8;31-46;9-31
+8-26;17-26;11-38;11-17;6-25;9-15;5-32;40-49;24-31
+14-17;8-28;8-24;17-24;17-29;11-24;11-17;6-28;6-17;40-48
+0-1;1-5;14-15;14-17;21-31;31-37;24-38;24-31;24-45;3-9
+14-17;13-33;17-29;31-46;31-47;7-13
+14-17;17-18;17-24;9-17;19-51
+14-15;14-17;15-18;25-26;8-20;8-24;13-33;17-20;17-25;16-24;9-31
+1-10;23-24;8-16;8-26;17-29;17-36;31-47;32-48;32-44;48-49;24-38
+33-39;6-25;6-8;31-46;32-48;32-42;24-50
+13-32;11-38;33-39;16-17;31-47;40-48;40-49
+1-10;14-16;23-24;8-24;17-18;33-40;48-49;24-38;24-45;19-41
+1-9;20-21;13-32;6-28;16-29;9-17
+1-5;1-6;17-24;17-25;6-7;31-47;32-48;32-42;18-23;24-45
+1-4;1-8;12-13;14-16;8-16;21-31;17-20;6-34;31-46;31-37;19-51
+1-11;27-28;8-20;13-32;11-38;6-25;39-42;48-49;7-13;3-9
+1-7;12-13;15-18;8-20;17-24;33-39;6-17;31-37;32-44;5-8;3-9
+1-4;8-26;17-18;17-25;6-28;16-24;7-13;9-31;5-8;18-23
+8-16;31-46;40-48;24-31
+1-8;25-26;11-24;11-38;18-23;24-38;24-45
+1-5;17-25;11-24;6-34;31-45;32-44;9-19;5-32;24-45
+14-16;27-28;13-33;6-34;16-29;9-19;19-51
+11-24;9-19;5-7;24-31;24-50
+1-6;1-7;14-15;13-33;17-24;11-24;6-11;32-44
+1-10;14-16;23-24;8-26;11-38;6-28;39-42;16-24;16-29;31-47;9-19;5-32;5-8
+27-28;8-26;17-29;33-40;32-48;32-44;5-7;40-48;40-49
+15-18;20-22;25-26;16-29;31-37
+1-8;1-10;48-49;7-13;9-30;3-9
+17-35;11-38;6-7;6-34;16-17;3-9
+0-1;14-15;17-24;6-7;6-17;6-34;9-30;9-17;5-32;40-49;19-51
+1-11;8-28;21-31;17-18;17-36;6-28;39-42;16-24;31-46;48-49;5-8
+1-7;8-26;31-47;9-30;40-48
+25-26;8-26;17-24;17-36;6-25;6-8;9-31;5-32;5-7;24-38
+2-3;14-16;13-33;17-35;9-30;19-41
+6-8;6-34;16-29;32-42;48-49;5-8;24-50;19-41
+1-11;12-13;15-18;17-20;17-28;17-36;6-28;39-42;31-46;32-44;32-42;5-7
+12-13;27-28;8-28;13-33;17-18;11-17;9-30;5-32;24-50
+1-5;13-32;11-38;11-17
+1-7;17-26;11-17;33-40;31-37;32-48;9-15;9-30;5-8
+1-10;1-11;14-17;27-28;17-35;17-28;17-26;39-42;31-46;32-44;7-13;5-32;40-48;40-49;19-20
+0-1;1-6;14-17;21-31;17-26;11-24;6-25;16-24;16-17;9-17;19-20
+14-17;17-20;17-18;32-42;24-31;24-50;19-20
+14-17;27-28;33-39;33-40;48-49;5-32;19-20
+14-17;17-25;33-39;6-8;39-42;32-44;38-43
+1-5;1-7;14-15;23-24;17-35;6-28;3-9;19-41
+23-24;25-26;8-16;17-36;6-11;31-37;9-31;18-23;24-45
+1-6;1-9;1-11;14-16;20-21;23-24;25-26;8-16;8-26;17-36;6-25;6-17;16-17;9-30;19-20;19-51
+1-9;25-26;27-28;11-38;6-11;16-17;31-45;5-32;3-9
+1-8;1-9;1-11;21-31;17-24;6-25;6-17;6-11;31-47;32-48;9-15;9-31
+1-10;12-13;17-25;33-40;6-8;9-17;40-48
+0-1;12-13;14-15;14-17;16-17;19-51
+1-9;21-31;6-34;16-24;32-48;9-17
+0-1;12-13;8-16;17-29;18-23
+1-5;1-8;1-9;27-28;13-33;17-18;6-25;39-42;32-44;9-15;5-32;24-50
+15-18;23-24;8-28;17-25;17-29;6-11;32-42;7-13;5-7;18-23
+1-9;14-16;11-38;6-17;31-47;48-49;38-43;40-48;24-45
+1-4;1-6;15-19;27-28;8-16;13-32;5-32;5-7;18-23
+0-1;2-3;1-5;17-24;17-26;16-29;40-49;24-31;24-45
+1-10;21-31;17-35;17-24;17-29;17-36;33-39;31-46;32-42;9-31;19-20;19-51
+17-25;11-17;6-17;31-47;9-17;19-20
+1-6;11-38;11-17;6-8;39-42;32-48
+0-1;2-3;11-17;9-30;18-23
+2-3;13-32;17-25;33-40;6-11;39-42
+1-9;16-29;31-47;32-44;9-31;9-17;40-49;24-31
+1-8;14-15;17-18;17-24;11-38;11-17;33-39;6-28;16-29;16-17
+0-1;1-9;14-16;25-26;17-35;31-46;5-32;19-41
+1-7;33-40;6-7;6-17;39-42;16-29;31-47;7-13
+1-11;12-13;17-28;17-24;6-7;9-15;9-31;40-49
+17-26;32-44;5-7;40-48
+12-13;13-32;16-29;31-37;5-8
+1-8;13-33;17-20;17-18
+12-13;27-28;8-16;8-24;8-26;17-35;33-39;33-40;6-28;31-37;9-30;19-20
+14-15;33-39;6-8;32-44;9-19;5-32;24-45;24-50;19-20
+1-10;15-18;17-20;31-45;9-15;9-31;9-17;9-19;19-20;19-51
+1-6;27-28;21-31;17-24;17-29;6-17;31-45;31-46;48-49;9-19;19-20
+1-8;14-15;23-24;8-16;8-24;11-24;33-40;31-45;9-19;5-32;5-8;3-9;19-20
+1-11;14-16;17-20;17-36;16-17;5-8
+1-4;1-5;27-28;17-24;17-25;17-26;11-24;11-38;6-34;16-24;24-31
+14-16;8-26;17-26;17-36;6-28;31-45;31-37;38-43;24-45
+1-6;20-21;21-31;13-32;17-28;17-26;11-38;16-29;24-31
+1-4;8-28;8-24;17-20;17-28;17-26;6-17;16-17;24-31;24-45
+1-11;21-31;13-32;17-18;16-24;31-45;7-13;3-9
+2-3;15-18;8-20;5-32;40-49
+17-35;17-20;48-49;19-51
+1-6;27-28;8-24;21-31;13-33;17-28;17-24;9-15;24-38
+1-5;1-10;17-25;6-28;6-17;16-17;32-44;5-32;5-7
+1-8;14-16;14-17;15-19;8-26;11-38;6-25;48-49
+0-1;1-11;12-13;14-17;15-19;23-24;27-28;16-24;31-46;9-15;5-7;24-45;19-41
+1-7;14-16;14-17;15-19;20-22;8-24;17-28;6-11;32-48;5-32
+1-6;14-17;20-22
+12-13;17-20;17-26;11-17;33-40;31-46;32-48;24-50
+14-15;14-17;20-22;25-26;13-32;33-39;6-17;31-37;7-13;40-49;19-51
+1-8;1-11;20-22;11-24;33-39;31-46;31-47;5-32;24-38;3-9
+1-5;20-22;8-24;17-36;38-43;9-17;3-9
+2-3;20-22;21-31;11-24;11-17;33-40;24-31
+1-7;20-22;17-25;17-36;11-38;11-17;32-42
+1-6;17-35;6-8;9-30;40-49;24-31
+1-8;25-26;8-24;21-31;17-20;33-39;5-32;5-7;18-23
+2-3;1-4;14-16;27-28;13-33;17-29;11-17;33-39;6-7;6-17;32-42;9-30;24-31;24-45;19-51
+1-4;23-24;8-28;17-18;11-17;6-7;31-47;32-44;18-23
+0-1;1-4;1-10;14-16;15-18;17-29;11-17;31-45;9-30;5-32
+1-8;15-18;25-26;11-17;32-42;9-31
+8-24;8-26;17-29;6-7;32-42;48-49;9-15;18-23;19-41
+12-13;8-28;13-32;13-33;33-40;16-17;31-47;24-50
+17-20;6-25;6-17;16-24;32-44;9-15;5-32;5-8;3-9;19-41;19-20
+27-28;8-28;17-18;17-28;16-29;31-47;32-42;48-49;9-17;40-49;3-9;19-20
+12-13;8-24;6-28;6-34;16-17;24-45;19-20
+21-31;13-32;33-40;6-8;6-34;16-29;38-43;5-32
+1-8;23-24;27-28;17-25;32-44
+12-13;15-19;6-25;16-17;9-15;5-32;5-7;19-41
+14-16;15-18;15-19;17-35;16-24;5-8
+1-7;15-19;23-24;13-32;6-17
+1-9;12-13;20-21;8-24;17-18;17-36;6-34;40-49
+0-1;1-10;14-15;8-16;8-28;13-33;11-24;6-28;6-34;31-46;31-47;7-13;9-31;5-32
+8-20;17-36;16-24;32-48;5-32;24-45
+15-19;27-28;8-20;13-33;6-11;7-13;40-49;24-31
+1-11;15-19;17-18;17-26;17-36;5-7;24-50;19-51
+1-5;1-6;1-7;14-15;15-19;23-24;21-31;13-33;17-26;33-39;6-7;32-44;32-42;48-49;5-32
+17-25;17-26;17-36;33-39;9-15;5-7;19-41
+14-16;15-18;8-16;13-32;17-26;5-8
+1-4;23-24;21-31;33-40;6-8;16-24;32-42;48-49;19-41
+1-4;8-20;17-35;17-20;17-25;6-11;38-43;24-38
+1-4;27-28;8-20;17-29;9-31;9-19;5-32;24-45
+1-10;15-19;8-20;17-28;9-15
+1-7;8-16;6-25;16-24;16-17;32-42;9-19;5-32;40-49
+8-26;17-20;17-24;11-17;9-19
+1-5;12-13;14-17;27-28;17-28;9-30;9-19;5-32
+1-6;21-31;17-18;11-17;6-34;9-31;24-50
+15-18;8-16;8-28;17-28;17-24;17-29;11-24;6-34
+1-6;14-16;23-24;25-26;27-28;13-33;11-24;11-17;6-25;6-11;31-45;5-32;24-38;24-50
+17-29;33-40;6-11;31-46
+1-11;14-15;14-16;13-33;17-25;11-24;11-17;39-42;32-44
+1-7;27-28;8-26;6-7;16-17;48-49;9-31;9-30;5-32
+1-5;1-10;8-16;6-7;6-34;24-31;3-9
+1-11;14-15;23-24;11-17;33-40;6-8;6-11;32-42;9-17;40-48
+14-17;20-21;17-24;11-38;33-40;6-28;6-17;31-45;31-46;24-38
+1-5;1-9;14-15;14-17;25-26;17-25;6-7;6-25;6-8;32-42;38-43;9-17;40-48
+14-17;21-31;17-28;9-31;5-7;24-45
+1-7;1-9;12-13;15-18;20-21;23-24;8-20;17-20;17-18;33-39;6-11;16-24;32-48
+8-16;13-32;17-28;11-24;11-38;6-7;31-45;32-42;24-50
+14-15;17-25;17-36;6-34;31-45;31-37
+2-3;1-4;20-21;16-17;7-13;38-43;5-8
+1-4;1-6;1-9;14-16;11-24;31-37;32-42;40-49;24-38
+0-1;1-5;13-32;17-18;11-38;6-25;31-46;40-48;19-41;19-51
+1-7;1-8;20-21;17-35;17-20;11-24;31-47;48-49;24-45
+1-5;1-6;20-21;17-29;11-17;6-7;7-13;5-7;24-45
+1-10;8-28;6-17;9-17;24-31
+15-18;23-24;21-31;38-43;9-15;9-31;18-23
+1-6;20-21;25-26;6-34;16-24;31-46;32-48;24-31
+15-19;17-18;6-28;6-34;5-8;18-23
+1-8;15-19;13-33;17-35;6-8;6-11;24-38;19-20
+1-5;1-7;14-15;15-19;20-21;8-28;11-17;18-23;40-48;40-49;19-20;19-51
+1-11;11-38;11-17;31-46;31-37;24-50;19-20
+2-3;8-16;17-25;33-40;18-23;19-20
+1-6;20-22;25-26;17-26;17-29;6-34;16-24;31-37
+1-8;20-22;17-20;17-26;11-17;6-28;6-34;16-29;38-43;5-8
+12-13;15-19;17-35;17-25;11-17;31-47;32-48;48-49;9-30;3-9;19-51
+1-4;1-8;14-16;8-16;17-20;33-39;6-28;40-49
+0-1;12-13;20-22;17-26;11-17;6-11;40-49
+1-5;1-9;14-15;13-32;17-35;17-24;17-26;17-36;9-15;9-30;5-32
+23-24;17-35;17-25;6-17;19-51
+1-9;1-11;12-13;27-28;13-33;17-36;11-17;39-42;31-46;9-30;9-17
+1-4;1-8;20-21;6-25;31-45;38-43;24-38
+1-9;14-16;23-24;13-33;17-18;17-36;11-17;6-28;6-34;9-31;9-30;5-8;3-9;19-41
+1-4;8-26;32-48;9-15;5-8;24-45
+1-9;1-11;14-16;39-42;31-46;32-48;38-43;9-30;5-32;40-48;24-45
+15-18;33-39;7-13;40-48;40-49
+1-6;27-28;6-7;6-28;6-25;6-17;16-24;9-30;19-20;19-51
+25-26;13-33;17-25;17-29;6-25;16-17;31-37;31-47;5-7;24-50
+1-7;17-18;6-7;32-44;32-42;5-32;19-20
+39-42;31-46;9-15;9-30;24-31;19-20
+0-1;1-10;14-17;27-28;8-26;13-32;6-8;38-43;9-17
+14-17;23-24;8-26;33-39;6-11;16-17;5-32;24-31
+1-8;1-11;8-20;8-16;13-32;6-11
+1-5;14-15;14-17;15-19;27-28;8-28;21-31;17-18;6-8;39-42;31-46;9-19
+2-3;14-17;15-18;15-19;25-26;17-28;17-29;6-25;9-19;5-32
+1-5;1-6;17-35;17-20;17-24;6-34;39-42;31-47;32-48;48-49;9-19;40-49
+1-11;8-16;17-28;17-25;11-24;6-34;32-42;9-31;9-19;24-38;24-50;19-51
+14-15;15-19;20-21;8-26;17-36;9-15
+0-1;1-7;20-21;13-32;17-35;33-40;9-15;5-8
+8-20;8-28;13-33;17-18;17-28;17-29;48-49
+14-17;15-19;23-24;25-26;21-31;17-29;17-36;39-42;16-17;7-13
+1-11;14-15;14-17;15-19;20-21;25-26;13-33;17-35;17-28;6-25;31-47;9-15;40-48;19-20
+14-17;17-24;17-29;17-36;11-17;24-50;19-41;19-20
+1-5;14-17;11-38;11-17;32-42;24-31;19-20
+14-17;15-18;20-21;13-32;17-36;33-39;6-28;6-11;39-42;16-24;31-37;38-43;40-49;19-20
+2-3;1-6;1-11;17-28;17-24;33-39;6-8;16-17;32-48;5-8;3-9
+17-25;31-47;9-31;24-45;3-9;19-51
+20-21;32-44;48-49;24-50
+23-24;8-28;6-7;6-28;6-25;6-8;39-42;9-30;9-17;5-7;40-48
+15-18;8-28;8-26;13-33;17-20;17-24;48-49
+2-3;17-35;17-18;17-25;7-13;9-17;18-23;24-50
+20-21;8-16;8-28;8-24;33-39;6-28;6-11;39-42;16-24;48-49
+0-1;1-5;1-11;12-13;14-15;23-24;17-24;33-39;5-8;18-23
+12-13;15-18;21-31;17-20;17-26;38-43
+1-8;1-10;20-21;13-32;17-26;6-25;18-23;19-51
+12-13;14-16;8-24;17-28;17-25;17-26;32-44
+1-7;21-31;17-20;17-26;31-47;9-30;5-32
+1-5;1-10;27-28;6-8;6-11;16-24;16-17;31-37;24-50;19-20
+8-28;13-32;17-29;33-39;9-30;5-8;24-38;19-20
+1-6;1-8;14-15;8-24;17-28;11-24;6-25;32-44;5-32;19-20
+0-1;20-22;27-28;8-24;17-25;6-11;31-45;9-19;18-23;40-48;3-9;19-51
+20-21;27-28;17-29;9-30;19-20
+15-19;17-24;11-38;6-7;6-28;32-48;32-42;7-13;9-31;9-17;40-48
+1-4;14-15;15-18;15-19;31-46;9-15;5-32;40-49;24-50
+0-1;1-4;15-19;20-21;23-24;27-28;8-28;8-24;32-44;24-31;19-41
+1-4;1-8;8-16;17-24;6-11
+2-3;1-10;25-26;21-31;48-49;5-32;5-8;24-38;24-31
+20-21;16-24;31-46;38-43
+14-17;27-28;17-35;17-18;17-25;6-28;31-45;9-15;5-32;40-48;40-49;24-31
+8-16;8-26;13-33;16-17;5-32;40-48;3-9;19-51
+1-7;1-8;20-21;8-20;13-32;6-34;5-7
+20-21;8-20;11-38;6-11;16-24;9-19;40-48
+12-13;15-18;20-22;8-20;13-33;33-40;6-25;6-8;6-34;31-46;9-31
+20-22;23-24;8-20;8-24;17-25;38-43;9-17;5-32;5-7;40-49
+20-21;20-22;8-16;31-45;32-48;7-13;24-38;24-45;24-50
+0-1;1-6;14-15;20-22;17-35;16-17;31-45;19-41
+1-8;1-11;14-16;14-17;20-22;8-28;21-31;11-24;33-40;6-28;31-45;31-46
+1-7;14-17;20-21;20-22;8-24;17-20;11-17;16-24;9-15;40-48
+2-3;1-10;14-15;14-17;20-22;25-26;11-17;33-39;31-37;38-43;19-41
+14-17;20-22;17-36;6-7;31-47;19-51
+1-11;14-17;15-18;20-21;17-35;6-7;31-46;32-42;5-8;24-31
+2-3;8-28;8-24;17-36;6-17;48-49;9-31;40-49;24-45
+13-32;17-24;6-25;48-49;9-19;5-32;18-23
+1-4;1-7;1-9;14-15;21-31;17-18;11-38;6-7;31-47;32-48;9-30
+0-1;1-4;6-7;6-28;6-8;16-17;32-44;32-42;9-19;19-41
+1-4;1-8;1-9;12-13;14-16;25-26;8-16;13-32;17-28;6-34;9-30;9-19
+1-4;14-17;20-22;8-24;17-24;33-40;6-25;6-34;6-11;31-37;9-15;9-31;9-19;40-48;40-49;24-50
+1-9;1-10;14-16;14-17;20-22;8-20;17-20;17-25;6-8;38-43;9-30;9-19;24-38
+2-3;1-7;6-8;39-42;16-24;19-20
+27-28;8-28;21-31;17-35;38-43;9-17;24-50;19-20;19-51
+1-8;14-17;15-18;20-22;23-24;8-24;13-32;13-33;33-40;16-24;48-49;7-13;9-17
+20-22;8-26;17-26;17-29;11-38;33-39;9-30;24-50
+2-3;1-11;20-22;21-31;17-24;17-26;32-44;38-43;3-9
+14-16;14-17;33-39;31-45;9-17;9-19
+1-5;1-6;20-22;17-20;17-18;17-26;17-29;6-11;48-49;40-48
+0-1;20-22;8-24;17-25;17-26;32-48;24-38;24-31
+1-8;17-24;16-17;31-37;32-42;9-31;40-49;24-45
+1-11;25-26;27-28;8-28;13-32;32-44;5-8;24-31;24-50;19-51
+14-15;25-26;6-28;6-25;6-8;38-43;19-41
+1-10;15-18;8-24;17-18;11-17
+17-25;6-11;7-13;40-48;40-49;19-41
+1-8;16-29;38-43;18-23
+1-6;1-9;1-10;13-33;17-36;31-45;32-42;5-8
+20-21;8-20;17-28;16-24;5-7
+1-11;14-15;20-21;8-24;31-47;9-19;5-8
+1-9;1-11;14-15;8-20;17-36;33-39;9-17;40-49;19-51
+1-7;12-13;23-24;17-35;17-25;33-39;6-17;24-45;19-41
+1-9;12-13;14-16;20-21;8-28;8-26;17-36;6-8;40-48
+0-1;8-16;6-8;16-29;31-45;31-37;32-48;40-48
+1-11;14-16;15-18;21-31;11-17;6-25;32-42;48-49
+0-1;2-3;20-21;25-26;17-29;11-24;11-38;31-37;38-43
+13-32;17-35;6-28;6-17;32-48;9-15;9-31
+17-24;17-29;33-40;48-49;7-13;19-51
+20-21;8-16;17-25;16-24;16-17
+2-3;1-6;1-8;1-9;14-17;8-26;13-33;11-38;11-17;31-46;32-44
+23-24;21-31;17-24;17-36;16-17;31-46;32-48;9-31;9-17;5-32;19-41
+1-5;17-24;38-43;3-9
+1-9;14-16;14-17;20-21;25-26;13-33;17-18;16-17;9-17;5-32;24-45
+1-6;15-18;8-16;24-31;24-50
+1-9;14-16;15-19;27-28;17-25;6-17;31-46;32-44;40-49;24-38
+14-15;20-21;6-34;31-37
+1-7;15-19;33-40;31-37;9-31;40-48;19-20
+27-28;17-18;6-25;7-13;9-30;24-31;19-41;19-20
+1-5;1-8;14-15;14-17;25-26;13-32;17-25;16-24;32-48;40-49;24-50
+1-4;14-17;15-19;8-28;33-39;48-49;7-13;9-17;5-8;5-7;24-38
+2-3;1-4;14-17;15-19;33-39;6-28;16-17
+1-6;1-11;14-17;17-26;17-36;18-23;24-38
+14-17;31-37;18-23;24-31
+1-4;1-7;1-10;14-17;15-18;15-19;11-24;6-11;31-47
+1-7;13-32;17-18;17-36;11-24;6-34;31-45;32-44;48-49;9-15;3-9
+1-11;17-28;17-24;39-42;31-45;31-47;40-49;3-9
+1-6;20-21;25-26;8-26;17-26;11-24;6-7;16-24;31-45;38-43;5-32;19-51
+1-5;17-28;17-26;33-40;16-17;24-45;19-41
+1-5;20-22;8-16;8-28;21-31;17-24;17-26;11-38;33-39;6-28;5-7;24-45
+1-6;1-7;17-26;6-7;16-24;31-45;40-49;3-9
+1-8;11-17;6-11;31-45;9-19;24-31;24-50;3-9
+1-10;14-15;23-24;25-26;13-32;13-33;17-28;11-17;33-40;6-8;32-48;9-31;9-17;9-19;19-20
+1-11;15-18;25-26;6-25;6-17;31-46;48-49;9-15;9-19;19-20
+12-13;14-17;20-21;20-22;6-8;31-47;24-50
+2-3;8-26;17-29;9-19;19-20
+12-13;14-15;21-31;32-44;7-13;24-45;19-20
+1-7;17-29;6-28;31-37;32-42;48-49;5-8;24-38;19-51
+2-3;1-11;17-25;11-24;6-34;31-46
+8-28;17-20;17-29;6-17;6-34;18-23;40-49;19-41
+0-1;17-36;11-24;16-17;32-44;5-7
+0-1;17-18;11-24;33-40;16-29
+1-4;1-6;1-8;15-18;8-26;17-20;6-8;3-9
+0-1;2-3;20-21;27-28;8-16;21-31;17-36;6-7;16-24;32-44;32-42;7-13
+23-24;13-33;11-24;6-25;9-15;9-30
+1-8;1-11;15-18;8-20;8-24;17-24;33-39;6-28;31-37;32-42;5-32;5-7;24-31
+1-11;15-19;25-26;8-24;17-20;17-36;39-42;31-46;9-17;5-32;24-45
+1-7;14-16;15-19;20-21;27-28;13-32;17-28;17-25;32-48;9-30;24-50;19-41
+1-10;15-19;8-16;17-36;32-44;9-31;19-20
+14-16;8-28;6-11;9-30;5-32;40-49;19-20
+20-21;8-24;8-26;6-28;39-42;31-46;31-37;32-42;19-20
+17-28;11-38;31-45;9-30;24-38;19-20
+15-18;8-16;6-34;16-17;31-45;32-44;48-49;5-32;24-31;24-50
+1-7;20-21;17-35;6-34;16-24;31-45;9-30
+0-1;1-6;8-28;8-24;33-40;6-28;39-42;31-46;24-31;3-9
+2-3;17-29;33-39;6-8;48-49;9-17;5-32
+1-5;1-6;20-22;25-26;8-16;13-32;11-38;6-17;32-44;9-31;24-45;19-51
+12-13;14-17;20-21;23-24;17-25;33-39;6-25;6-11
+12-13;14-15;14-17;17-29;16-17;7-13;9-31;40-49;24-50
+1-8;14-17;25-26;8-24;13-32;17-35;33-40;39-42;31-46;32-48;9-15;5-32;24-38
+1-10;14-17;20-21;11-38;31-37;5-7;19-51
+1-5;14-17;15-18;13-33;11-24;6-7;19-41
+6-7;31-47;32-42;5-7
+1-4;8-24;39-42;16-24;31-46
+27-28;17-36;11-24;11-38;9-15;5-32;24-45
+0-1;1-4;23-24;8-20;8-26;6-17
+1-4;8-20;17-20;17-25;17-26;11-17;6-8;9-17;24-38
+20-21;20-22;16-24;18-23
+14-16;8-24;17-26;11-17;39-42;31-46;31-47;48-49;9-31;40-49
+1-5;17-26;11-38;6-28;32-42;24-31
+1-6;1-8;14-16;17-35;17-28;16-17;7-13;38-43;9-15;19-51
+2-3;15-18;25-26;13-32;6-17;32-48;24-31;3-9
+1-10;25-26;8-28;8-24;21-31;31-46;5-8;3-9;19-41
+12-13;14-15;17-20;17-24;6-34;16-24;31-47;9-15
+1-7;12-13;23-24;17-28;17-25;6-34;24-38
+1-7;1-10;15-19;8-20;13-32;13-33;6-28;16-29;31-47;32-44;9-15;18-23
+12-13;15-19;20-21;8-24;21-31;17-20;17-18;6-7;9-30
+23-24;25-26;6-7;16-29;9-31;5-32;24-38;19-41
+1-6;17-35;17-18;17-24;17-36;39-42;9-30
+24-45
+14-16;15-18;20-21;8-28;17-25;17-29;6-8;6-34;16-24;16-29;31-45;32-44;24-45;19-20
+1-8;8-24;11-24;6-34;31-45;31-47;9-30;5-32;19-20
+1-6;1-7;14-16;17-18;17-29;11-38;33-39;6-25;16-29;31-37;7-13;9-19;19-20
+20-21;33-39;6-11;48-49;9-30;9-19;40-48;3-9;19-20
+1-4;1-10;14-15;17-35;6-17;32-48;32-44;32-42;38-43;9-19;5-32;3-9
+1-4;1-5;8-24;9-30;9-19;24-38;19-51
+1-4;1-8;23-24;17-24;33-40;9-19;5-8
+2-3;1-4;13-32;17-18;9-31;5-32;24-45
+8-26;9-17;19-41
+1-11;27-28;8-24;13-33;19-20
+0-1;1-9;17-35;17-24;6-28;6-25;6-17;16-24;38-43;9-15;24-31
+20-22;25-26;17-20;17-28;11-38;33-40;6-8;6-11;32-42;5-7;40-48;40-49
+1-8;1-9;12-13;20-22;13-33;31-37
+1-5;12-13;20-22;17-18;17-24;5-7;24-38
+1-9;20-22;13-33;6-8;7-13
+20-22;17-35;17-28;11-24;6-7;6-17;48-49;24-45;19-51
+25-26;8-26;13-33;33-39;6-25;31-47;7-13;9-17;19-20
+1-6;1-8;1-11;20-22;8-28;17-20;17-25;11-24;11-17;9-31
+1-9;15-18;20-22;23-24;8-20;17-18;11-17;6-11;48-49;9-17;40-48
+6-7;6-11;32-44;32-42;40-48;24-50
+20-21;13-32;9-30;40-49;24-38;19-20
+1-6;1-8;17-20;33-40;31-37
+1-11;33-39;6-25;6-34;31-37;24-50;3-9
+2-3;1-7;14-15;14-16;14-17;25-26;8-26;17-36;33-39;32-42;24-45;19-41;19-51
+14-17;25-26;8-26;17-20;17-18;6-28;16-24;31-47;9-15
+1-4;15-19;27-28;8-28;17-26;16-17;31-45;40-48;40-49;19-41
+1-4;1-9;20-21;8-20;13-33;17-24;17-26;17-29;16-24;31-45;31-47;32-42;7-13;5-32
+1-4;15-18;8-20;17-26;6-25;31-45;32-44;9-31;5-8
+1-5;1-10;12-13;15-19;13-33;11-38;32-48;7-13;9-17;5-8
+1-7;15-19;17-18;17-29;17-36;33-40;31-47;32-42;40-49
+1-11;15-19;13-33;17-20;31-45;31-46;48-49;24-45
+14-16;15-19;25-26;21-31;6-11;16-29;31-47;32-42;9-31;9-17;40-48;24-50;19-20
+0-1;13-32;17-29;11-24;31-45;5-7
+0-1;14-16;11-38;32-42;9-30;5-32;40-48;3-9;19-20
+1-8;14-15;31-37;48-49;18-23;40-49;19-20
+1-6;8-16;17-35;11-24;6-25;9-30;5-8;24-50
+2-3;13-32;17-28;16-24;32-44;5-32;18-23
+1-5;1-11;15-18;8-28;6-11;16-17;31-47;9-31;9-30
+1-7;6-8;7-13;18-23
+2-3;1-8;23-24;8-16;21-31;16-29;9-30;5-32;24-38;19-41
+1-10;17-35;17-28;17-25;7-13;9-17;18-23;40-48;24-50;19-51
+1-11;17-20;11-38;16-29;32-48;38-43;5-7
+1-10;15-19;25-26;27-28;17-20;17-29;39-42;9-30;3-9;19-41;19-20
+25-26;8-28;13-33;33-40;16-17;5-8;18-23
+0-1;8-16;16-29;31-37;9-15;5-7;40-49
+1-8;14-15;8-28;17-20;31-47;32-48;5-32;3-9
+0-1;1-4;1-7;15-18;20-21;27-28;13-32;17-25;17-29;11-38;16-17;31-37;32-44
+1-4;1-6;6-7;6-17;31-46;9-31;40-48;24-31
+12-13;23-24;13-32;17-20;17-36;11-17;16-29;40-48;19-51
+1-4;20-21;25-26;27-28;8-16;48-49;9-15;5-8;24-31
+1-6;1-11;8-20;17-36;11-38;33-39;6-7;6-34;16-24;9-17;3-9;19-41
+2-3;1-7;14-16;8-20;17-35;17-29;11-24;32-42;24-50
+1-5;1-10;6-8;6-11;7-13;38-43;9-19;40-49
+17-26;33-39;6-8;9-30;9-19;40-49
+1-11;14-16;15-18;15-19;20-21;23-24;8-24;17-35;17-18;11-24;6-8;16-24;16-29;32-48;48-49;9-15;3-9;19-51
+14-16;17-29;31-37;32-48;9-19
+0-1;25-26;17-20;16-17;9-19
+2-3;1-8;1-10;15-18;33-39;33-40;6-28;6-34;31-46;31-37;38-43;9-19;19-41;19-51
+0-1;1-6;1-11;13-33;17-28;33-39;6-34;39-42;32-48;9-31;9-19
+15-19;17-25;31-45;9-15;19-51
+8-20;13-33;17-18;6-11;32-44;24-50
+14-15;14-17;23-24;8-20;17-35;33-40;31-46;9-15;9-30
+1-5;1-11;14-17;25-26;17-28;39-42;48-49;38-43;5-32;3-9
+1-6;14-17;25-26;8-28;21-31;6-8;7-13;9-30;9-17;40-48;3-9;19-20
+14-16;14-17;17-25;17-26;11-38;16-17;32-44;9-15;5-8;24-31;19-20
+2-3;1-5;17-29;6-34;31-37;7-13;9-30;5-8
+1-8;1-10;14-15;15-18;8-16;17-26;6-17;7-13;5-8;5-7;24-45;19-41
+0-1;8-28;17-26;11-24;33-40;31-47;32-48;19-51
+2-3;1-4;6-25;9-31;3-9
+1-4;14-15;25-26;21-31;17-25;11-24;11-38;3-9
+1-5;8-26;17-36;11-24;31-46;9-30
+1-11;8-26;17-18;17-24;6-28;39-42;40-48
+2-3;17-35;17-36;6-11;9-30;5-8
+1-6;20-22;21-31;17-20;11-38;6-25;6-17;5-7
+1-7;15-18;20-22;17-24;17-36;6-8;31-46;31-47;32-42;24-45;19-51
+20-22;25-26;39-42;9-15;5-7;24-38
+1-7;14-15;17-25;11-24;6-34;16-29
+14-16;21-31;17-20;31-47;38-43
+15-19;8-20;8-24;6-11;16-29;31-45;31-46;9-17;5-8;40-49
+15-19;8-28;17-18;33-40;31-47;19-20
+20-21;21-31;13-32;17-35;17-20;6-7;38-43;5-32;19-20
+1-10;17-28;31-37;32-42;48-49;24-38;24-50;19-20
+8-24;11-38;31-46;19-20
+14-15;20-21;8-16;17-25;33-40;5-32
+1-5;1-7;1-8;15-18;17-18;6-28;6-25;31-47;32-48;48-49;40-48
+23-24;8-26;6-11;7-13;38-43;5-8
+14-16;20-21;8-24;8-26;6-8;16-24;31-46;9-15;5-32;40-49;24-45;24-50;3-9
+20-21;17-29;39-42;38-43;24-50
+1-6;8-16;7-13;9-17;24-31
+1-4;12-13;25-26;27-28;13-33;11-17;16-17;24-38
+2-3;1-4;1-8;12-13;20-21;21-31;17-18;11-17;31-47;5-32;19-41;19-51
+1-4;1-7;8-28;8-24;17-25;11-24;11-38;11-17;33-39;31-37;38-43
+1-4;1-5;27-28;8-16;13-32;6-34;40-48;24-50
+1-10;20-21;11-24;6-34;6-11;32-42;5-32
+0-1;23-24;17-24;16-17;24-45
+25-26;11-38;11-17;6-7;32-44;24-45
+0-1;1-10;14-16;20-21;13-32;17-25;11-24;33-40;6-7;6-8;32-42;9-30
+23-24;17-20;17-28;33-39;16-17;31-47;32-48;7-13;3-9;19-51
+25-26;8-16;17-24;31-46;32-44;40-48;24-45;19-41
+14-16;8-28;33-39;9-30;40-48;3-9
+1-6;20-21;17-35;6-34;32-48;48-49;38-43;9-17;24-38;24-50
+6-34;9-30;40-49
+15-19;25-26;8-26;17-25;9-17;24-38
+15-18;8-28;17-24;11-17;6-17;32-42;48-49;9-15;9-31;9-17;18-23;19-41;19-51
+20-22;17-26;33-39;31-37;24-45
+8-16;17-25;17-26;11-38;6-8;39-42;9-19;24-38;3-9
+17-26;16-29;31-46;31-37;9-19;5-7
+27-28;17-35;6-7;31-47;7-13;9-19
+1-6;1-7;1-8;25-26;8-28;6-7;6-28;6-25;6-17;9-19;5-7
+2-3;25-26;17-25;11-24;39-42;31-47;9-15;24-50
+1-4;23-24;8-16;8-26;21-31;6-11;39-42;16-17;32-42;9-19
+1-4;27-28;13-32;17-29;33-39;31-46;40-49
+1-10;14-15;17-36;39-42;19-20
+2-3;1-5;1-11;15-18;23-24;21-31;13-33;17-24;16-17;32-44;32-42;19-20
+0-1;8-24;17-28;17-36;6-25;19-20
+25-26;13-32;17-20;6-28;31-47;9-17;40-49;24-31
+1-8;31-45;32-42;24-50
+2-3;1-6;14-16;15-19;8-20;21-31;33-40;6-8;31-47;7-13;9-17;5-8;40-48;24-45
+1-7;15-19;8-20;8-28;8-24;17-20;31-46;32-48;9-31;24-38;19-51
+12-13;14-16;15-19;6-25;31-37;24-31
+0-1;1-5;1-6;1-11;20-21;27-28;33-40;31-45;5-32
+25-26;6-7
+1-8;15-18;25-26;11-24;33-40;6-7;6-28;16-17;48-49;24-50;19-41
+1-9;12-13;8-16;13-33;6-17;3-9
+1-11;17-25
+1-9;23-24;13-33;11-24;6-25;16-17;31-47;32-44;48-49;40-49
+1-7;8-20;17-29;33-40;16-29;38-43;9-30;18-23;24-45;19-51
+1-5;1-8;1-9;1-10;25-26;8-20;8-16;11-38;6-8;7-13;5-32;19-41;19-20
+1-11;6-8;6-34;32-42;9-31;5-7;3-9;19-51
+2-3;17-24;17-29;6-34;31-37;7-13;40-49
+8-28;17-28;17-36;6-11;32-48
+1-8;14-16;13-33;17-26;6-7;31-45;9-31;5-8;24-38;19-51
+1-4;14-16;15-18;33-39;16-24;31-37;32-42;5-8;40-48
+1-4;1-8;8-26;17-28;17-24;33-39;16-29;9-30;18-23
+2-3;1-4;14-15;32-48;40-49
+1-4;1-5;1-6;17-35;17-18;6-34;16-29;9-30;24-50
+20-22;17-20;17-24;11-38;6-7;6-34;19-51
+20-22;23-24;6-7;6-25;48-49;9-30;24-38
+2-3;17-35;17-36;33-39;16-24;9-31;40-48
+14-16;13-33;17-20;33-39;33-40;31-46;32-44;7-13;5-32;40-49
+15-19;27-28;8-28;8-26;11-38;48-49;24-38;24-31
+0-1;1-7;12-13;14-16;15-19;8-16;32-42;9-17
+8-28;17-35;17-20;17-26;17-36;6-7;6-34;16-17;31-45;31-46
+1-10;15-19;17-25;17-26;11-24;6-25;6-34;5-32;24-31;24-50
+1-8;1-11;20-22;8-28;17-26;11-17;32-48;40-49;19-51
+1-6;17-26;11-38;6-25;9-15;24-38
+14-17;8-16;8-28;13-32;17-20;17-24;17-26;5-32
+1-6;14-17;25-26;11-17;32-48;9-15
+1-7;14-17;17-29;11-17;6-11;16-24;31-46;32-44;9-31;5-7;40-49;24-38;24-50
+1-8;14-17;23-24;17-35;17-28;17-24;11-38;6-28;5-32
+0-1;1-6;14-16;15-18;8-20;21-31;32-42
+1-10;8-20;17-18;17-28;33-39;16-24;31-37
+1-11;14-15;14-16;8-16;33-39;6-8;48-49;40-49;19-41
+1-7;14-16;20-21;27-28;13-33;17-28;17-26;6-25;6-8;39-42;9-17;5-32;24-31
+1-4;21-31;13-33;17-28;31-37;32-42;24-50
+1-4;1-7;1-8;1-10;17-35;19-41
+1-11;14-15;8-16;13-32;17-25;6-28;6-25;31-37;48-49;24-50
+1-5;21-31;17-20;17-36;33-40;39-42;32-42;9-19
+27-28;9-19;5-32;5-7
+1-6;15-18;17-18;17-24;17-36;48-49;9-19;5-8;24-38;19-51
+12-13;8-16;6-28;16-17;32-48;9-19;5-7;19-41
+12-13;27-28;6-8;39-42;7-13;5-32;24-31;24-45;24-50
+1-6;14-16;33-40;6-25;9-30;19-20
+1-7;8-26;17-20;31-45;31-47;32-42;7-13;9-17;3-9
+1-5;1-6;1-8;1-10;14-16;17-26;33-39;6-25;6-17;9-19
+1-10;25-26;8-16;17-18;33-39;6-7;6-17;31-37;9-15
+27-28;8-16;17-18;6-8;16-24;16-29;31-45;5-32;18-23
+0-1;25-26;8-28;17-24;17-25;33-39;39-42;31-37
+2-3;1-10;25-26;8-20;21-31;16-29;32-44;9-15;5-8;18-23;24-38;24-50
+27-28;8-20;8-24;13-32;13-33;6-7;6-25;9-31;5-32
+15-18;15-19;17-35;17-24;6-7;16-29;31-47;18-23;24-45
+1-7;15-19;23-24;13-33;17-20;17-18;17-28;6-28;6-34;39-42
+1-8;14-15;15-19;27-28;8-28;11-38;6-34;16-29;32-44;48-49;5-32;18-23;40-49;19-41
+14-16;15-19;8-24;17-29;16-17;32-48;38-43
+1-4;16-29;9-17
+8-20;8-16;6-8;48-49;24-50;3-9;19-20
+12-13;23-24;8-26;11-17;6-28;31-37;24-31;24-45;3-9
+1-11;8-20;17-24;17-36;9-17;3-9;19-20
+8-24;6-28;39-42;31-47;5-32;40-49;19-41;19-20
+0-1;15-18;17-36;6-34;19-20
+1-8;14-17;25-26;8-26;33-39;33-40;6-25;31-37;31-47;32-44
+0-1;20-21;13-33;33-39;6-11;5-7;24-38
+14-15;8-24;6-7;6-17;31-46;40-49;24-45
+1-10;12-13;23-24;13-33;17-35;17-26;32-42;24-31;24-50;19-41;19-51
+1-6;20-21;8-20;21-31;17-18;17-26;11-24;16-24;32-44;9-31
+1-8;8-20;17-20;17-25;17-26;6-8;6-34;16-17;31-45;31-47;24-31
+17-24;11-24;6-34;31-45;31-46;7-13
+14-15;20-21;27-28;13-32;17-36;6-8;31-46;32-48;32-42;7-13;5-32
+1-7;1-11;11-17;6-25;31-45;3-9
+2-3;15-18;17-35;11-17;6-28;6-8;6-11;32-44;9-17;24-50;3-9
+8-16;13-32;17-18;17-28;17-24;11-17;31-37;32-48;32-42;24-45
+1-5;16-17;31-46;48-49
+8-20;17-28;11-17;16-29;31-37;24-38;19-20
+14-15;8-20;11-17;33-40;6-25;6-34;31-47;32-42;5-7;18-23;19-20
+0-1;20-21;8-20;13-32;11-17;6-34;16-29;16-17;48-49;9-31;5-8;19-20
+1-10;14-16;15-19;23-24;8-26;17-18;17-36;31-46;5-8
+1-4;1-5;1-6;1-8;8-28;16-29;7-13;40-49;24-50
+14-15;14-16;15-18;13-33;17-36;24-45
+11-38;6-8;31-45;38-43;9-15
+1-4;17-25;6-7;6-8;16-29;32-44;9-15;24-45
+25-26;17-24;18-23;24-38;3-9;19-41
+14-15;20-21;8-20;21-31;17-36;6-34;9-15;5-8;5-7;40-48;40-49
+27-28;8-20;33-40;6-28;6-11;9-30;19-41
+17-18;17-36;6-17;16-17;31-46;5-7;24-38
+1-7;14-15;20-21;8-28;13-32;17-25;31-37;32-48;9-31;9-30
+1-5;12-13
+2-3;25-26;17-20;33-40;32-48;24-31
+0-1;15-18;20-21;23-24;11-24;16-24;31-45;31-46
+0-1;12-13;14-16;8-20;13-32;11-24;6-28;6-34;9-19;24-31;19-20
+1-11;17-25;17-36;48-49;5-8;24-38;19-41
+1-8;27-28;8-20;13-33;17-20;17-29;39-42;9-31;9-19;19-20
+1-7;1-10;20-21;8-26;21-31;6-25;9-19;40-49;24-38
+1-7;14-15;15-19;8-16;8-28;17-29;32-42;9-19
+15-19;25-26;27-28;11-38;6-28;48-49;9-19;5-7
+15-19;20-21;20-22;8-24;39-42;16-24;9-17
+1-11;14-15;20-22;33-40;32-44;5-8;40-48;40-49
+20-22;27-28;8-16;17-35;17-20;6-25;6-17;19-51
+20-21;20-22;17-25;17-36
+1-4;14-16;8-20;8-24;21-31;7-13;3-9
+1-4;1-5;25-26;6-28;6-11;31-46;38-43;9-31;24-45
+20-21;27-28;6-11;9-15;5-32;24-50
+1-8;6-8;39-42;16-29;32-48;18-23;40-49
+0-1;8-16;13-33;17-26;6-25;32-42;40-48
+1-11;23-24;8-24;13-32;17-26;17-36;6-7;6-34;16-24;32-44;38-43;19-20
+13-33;17-26;33-40;6-17;31-46;24-38;19-41;19-51
+13-32;17-35;17-26;39-42;16-29;5-7;18-23
+1-10;15-18;25-26;8-20;17-18;17-25;17-29;6-28;6-11;31-45;9-30;19-20
+8-20;8-24;6-25;24-38;19-20
+2-3;1-7;14-16;17-29;7-13;38-43;9-15;9-30;9-17;40-48;24-45
+12-13;31-37;9-31;24-50;3-9;19-41
+12-13;17-20;17-29;11-38;6-8;9-30;3-9
+0-1;2-3;25-26;31-46;38-43;9-31;19-51
+2-3;21-31;17-18;11-24;48-49;9-15;24-31
+33-40;16-24;9-30;5-7
+1-5;1-9;1-11;14-17;8-20;8-16;13-33;17-20;9-15;5-32;5-8;24-31
+0-1;1-6;1-7;15-19;8-26;13-32;33-39;6-25;9-30;5-8;5-7;24-38
+15-19;13-33;17-25;16-17;31-47;32-48;40-48;24-45
+1-4;1-8;14-15;15-19;17-20;17-18;11-17;33-40;6-17;32-42;9-30
+1-4;1-10;25-26;13-33;11-17;9-17
+1-4;8-28;11-38;31-37;9-31;19-51
+14-16;33-39;6-25;6-8;32-42;7-13;9-17;5-32
+1-5;1-10;8-28;8-26;17-28;17-36;11-17;33-39;31-37;32-44;5-8;3-9
+15-18;33-39;39-42
+1-8;14-17;17-18;6-7;6-17;6-34;7-13;9-15;5-8;24-38
+2-3;1-5;14-17;23-24;17-20;6-34;32-42;48-49;40-48;40-49
+14-17;15-18;8-16;6-8
+17-28;17-36;33-40;32-44;24-38;19-41
+1-6;6-28;32-42;48-49;5-32;19-51
+0-1;2-3;12-13;14-15;9-15;40-49
+0-1;2-3;1-6;1-11;20-22;27-28;8-26;17-29;16-29;5-32;40-48
+1-7;1-10;13-33;17-28;17-29;33-40;6-34;31-45;32-44;9-17;5-32;40-48;24-31
+13-32;11-24;31-45;31-37
+12-13;20-22;27-28;17-35;11-24;31-46;9-17;5-32;5-7;18-23;3-9
+0-1;1-4;14-16;8-26;17-20;17-29;33-40
+1-8;1-10;15-18;24-38
+17-25;11-24;6-7;9-31;5-7;18-23;24-31;19-51
+14-15;23-24;27-28;13-32;17-18;16-24;16-29;5-32;5-8;24-45;24-50
+1-5;1-7;8-26;6-7;16-17;5-8;19-41;19-20
+1-4;25-26;8-20;8-26;6-7;9-30;40-48;40-49;19-20
+0-1;1-4;1-8;14-16;8-20;8-16;8-28;17-25;16-29;32-42;48-49;9-31;18-23;3-9
+2-3;1-4;20-22;17-26;6-25;6-11;9-30;9-17;9-19
+1-4;14-16;20-22;17-20;17-26;11-38;33-39;6-28;6-17;16-29;31-37;32-48;9-19;18-23;24-38
+1-6;1-10;20-22;17-24;17-26;16-17;48-49;9-15;9-30;9-19;24-45
+14-15;15-18;15-19;20-22;8-16;13-32;17-26;16-29;9-19;5-7;18-23
+0-1;1-5;11-17;6-7;6-25;16-17;31-46;7-13;5-8;5-7
+1-8;12-13;15-19;20-22;23-24;8-28;21-31;7-13;9-30;19-51
+12-13;15-19;20-22;17-24;11-24;16-29;32-42;38-43;5-7;18-23;40-48
+15-19;20-22;13-33;17-25;6-17;7-13;9-30;40-49;24-31
+20-22;8-16;17-20;11-24;11-17;6-11;16-29;18-23;19-41
+0-1;20-22;13-33;17-28;17-24;11-17;33-40;6-8;9-31;9-30;24-38;24-31
+1-8;1-11;25-26;11-38;6-34;24-45
+6-34;31-37;38-43;9-17;19-41
+1-7;15-18;17-18;17-25;11-17;9-17;5-32;40-48;24-38;19-51
+1-5;8-16;11-17;6-7;31-37;32-44;5-7;19-41
+1-10;1-11;21-31;17-20;16-17;48-49;19-51
+8-24;17-28;6-28;9-30;9-19;5-8;24-38
+2-3;1-4;15-19;13-33;17-29;9-15;9-17;5-32;5-8
+1-8;17-24;16-24;5-32;5-7
+2-3;23-24;25-26;17-29;7-13
+1-10;14-17;8-16;21-31;17-18;6-25;6-34;16-17;31-45;32-44;48-49;5-8
+1-4;1-7;14-17;17-24;17-29;6-8;6-34;31-45;31-46;9-31;5-32;24-45
+0-1;14-16;20-21;17-29;6-25;6-8;16-17
+1-4;1-5;1-8;14-17;8-26;13-33;32-42;40-49
+0-1;1-4;14-17;15-18;8-16;17-24;33-40;6-28;32-44;9-15;5-32
+12-13;13-33;17-18;16-17;31-46;31-37
+12-13;8-28
+14-15;8-24;17-25;17-36;6-34;6-11;5-7;40-49
+1-5;15-19;13-32;11-24;6-28;6-8;6-11;32-44;32-42;7-13;18-23;3-9
+1-6;1-11;12-13;27-28;8-28;11-24;16-17;40-48
+15-19;8-26;17-28;17-36;6-17;39-42;31-47;32-48;9-15;5-32
+15-19;23-24;8-26;17-35;17-20;17-24;11-24;6-7;6-28;7-13;38-43
+1-5;1-10;15-19;27-28;8-24;13-32;6-7;24-31;19-41
+15-18;8-20;31-47;7-13
+2-3;1-8;14-16;8-20;13-32;17-20;11-38;6-7;31-46;9-30;24-50
+0-1;14-15;15-19;6-8;31-37;9-17;5-8
+1-11;14-16;15-19;17-18;17-28;6-11;9-30;5-7
+15-19;8-26;16-17;40-48
+2-3;25-26;8-16;13-32;39-42;32-44
+1-8;14-15;25-26;21-31;13-33;17-18;11-38;6-7;31-37;24-50
+1-5;1-8;23-24;13-33;16-29;5-32;18-23;19-51
+8-20;8-24;17-29;6-17;31-47;9-15;24-38
+1-4;8-20;17-35;17-26;33-40;16-29;32-48;38-43;5-8;18-23;24-50;3-9
+1-4;1-7;14-15;15-18;8-16;21-31;17-26;17-29;6-11;39-42;32-44;7-13;5-32
+1-9;25-26;8-28;17-26;17-29;11-24;6-11;48-49
+1-11;20-21;8-24;17-36;31-37;7-13;9-17;40-48;24-50
+0-1;2-3;1-9;13-32;17-29;24-38;24-31
+1-6;14-15;17-18;17-36;33-40;6-25;16-29;31-46;48-49;3-9
+1-7;1-9;20-21;23-24;17-35;17-29;32-42;18-23;3-9
+2-3;1-5;8-16;8-28;8-24;21-31;17-36;33-39;6-8;39-42;16-29;19-51
+1-7;33-39;7-13;5-32;19-51
+14-15;33-39;38-43;9-31;18-23;40-49
+15-18;20-21;17-36;11-38;33-40;16-24;16-29;31-45;31-46;19-41
+1-10;8-26;17-18;6-7;6-28;6-17;31-45;32-48;9-15;9-19;18-23;40-48
+8-16;8-24;17-35;39-42;16-29;31-45;9-19;24-38
+1-7;14-16;20-21;17-24;16-17;31-37;9-17;9-19;18-23
+1-8;1-9;1-10;1-11;13-32;13-33;33-39;39-42;32-44;9-19;40-49
+8-28;17-28;33-39;31-37;7-13;9-17;19-41;19-51
+1-9;14-15;8-24;17-20;16-24;9-15;24-50
+0-1;1-6;6-28;6-8;40-48;3-9;19-20
+1-9;1-11;12-13;15-18;23-24;8-26;33-40;39-42;9-31;19-20
+1-10;1-11;17-20;33-39;32-48;38-43;24-38
+2-3;20-21;17-20;17-24;6-34;16-24;31-47;38-43;24-38;24-45
+8-24;21-31;13-32;6-11;48-49;24-45;19-20
+1-7;15-19;20-22;25-26;6-28;16-17;31-47;32-42;9-30;5-8
+1-6;1-10;1-11;14-16;15-19;20-22;8-20;17-20;17-25;33-40;6-25;39-42;38-43;40-49;24-31
+2-3;14-17;15-19;20-22;8-20;17-36;6-17;32-48;9-30
+8-28;8-24;11-17;6-28;39-42;31-47;32-44;32-42;9-15;19-51
+0-1;20-21;27-28;8-26;17-20;11-17;40-48
+1-11;14-17;20-22;23-24;8-28;6-7;6-34;39-42;31-47;7-13;9-15;5-7
+0-1;1-7;14-17;15-18;20-22;17-29;17-36;6-11;32-42;38-43;9-31;9-30;24-45
+15-19;20-21;27-28;8-24;6-7;6-28;6-25;6-11;39-42;16-24;32-44;48-49;7-13
+14-15;32-44;9-31
+8-28;16-17;31-47;5-8
+1-5;17-35;6-8;39-42
+1-6;20-21;8-28;13-32;13-33;17-24;31-47;48-49;9-30;40-48;19-51
+25-26;8-24;8-26;38-43
+1-6;14-16;8-28;17-18;11-17;6-34;6-11;31-47;5-7
+17-28;17-25;48-49;5-32;5-8
+1-5;12-13;14-16;15-18;31-37;32-48;32-44;38-43;9-17;5-7;40-49;24-45
+1-10;1-11;12-13;17-26
+23-24;17-24;17-26;11-24;7-13;5-32
+0-1;2-3;25-26;8-16;17-18;17-28;17-26;31-47;19-51
+17-25;16-24;5-32;24-31;24-45
+8-26;33-39;6-7;6-8;32-44;24-31
+1-11;13-32;17-24;33-39;6-7;6-28;6-17;6-11;16-24;16-17;38-43;19-41
+21-31;16-29;32-42;24-31
+1-6;8-16;13-33;17-36;18-23
+1-5;15-19;38-43;24-31
+1-6;1-8;14-16;15-18;15-19;25-26;21-31;13-32;17-29;31-46;32-42;5-7
+27-28;33-39;31-37;31-47;5-32;24-50;19-41;19-51
+8-26;17-25;17-29;33-39;6-28;7-13;9-17;5-7
+1-10;17-35;17-20;11-38;32-48
+1-5;14-17;13-32;16-24;9-17
+1-8;20-21;17-18;17-36;16-17;5-7;24-50
+1-7;14-15;14-17;8-16;3-9
+1-10;14-17;25-26;17-18;33-40;6-8;31-45;32-48;9-31;5-32;19-41
+14-16;14-17;23-24;17-28;17-25;11-38;33-39;6-7;16-17;31-45;48-49;38-43;9-30;24-38
+15-18;17-35;17-24;6-17;31-46;32-44;24-45
+2-3;1-6;12-13;14-15;21-31;17-20;17-28;11-24;6-7;38-43;5-8
+1-11;6-7;31-45;5-32;3-9
+8-16;13-32;13-33;17-24;17-25;11-24;11-38;16-24;31-45;9-17;3-9;19-41
+25-26;8-28;31-45;31-46;32-44;40-49
+2-3;16-24;7-13;9-30;9-17;9-19;24-50
+1-4;1-10;27-28;8-28;9-19;24-38
+0-1;1-5;1-11;12-13;17-28;6-11;31-47;48-49;24-31
+1-4;1-8;23-24;13-32;11-38;9-31;9-30;9-19;5-32;5-8
+1-4;17-35;17-18;6-8;9-19;24-31;24-45;19-41;19-20
+1-4;15-18;25-26;27-28;17-24;32-48;38-43;9-30;9-19;19-20
+0-1;1-7;25-26;48-49;5-32;19-20
+14-15;20-22;8-28;17-20;6-11;19-20
+1-8;20-22;27-28;17-24;17-29;11-17;6-17;6-34;32-42;9-15
+1-5;20-22;21-31;17-35;17-18;11-17;6-28;6-34;31-37;48-49;5-32;24-38;3-9
+20-22;17-29;9-17;5-8
+20-22;23-24;27-28;8-20;8-26;17-24;17-25;11-38;16-17;9-15;24-45
+2-3;1-7;15-19;20-22;8-20;13-33;17-29;6-7;31-47;7-13;9-31;5-32;19-51
+1-7;12-13;8-20;17-36;32-44;38-43;9-17;5-32;5-7;19-41
+1-10;15-18;17-29;32-48
+12-13;15-19;20-22;27-28;13-32;13-33;17-35;17-18;33-39;6-11;16-24;32-42;19-41
+15-19;17-26;11-24;33-40;5-32
+0-1;1-5;1-11;14-16;8-16;17-28;17-26;16-17;32-48;5-7
+25-26;17-26;6-25;6-8;31-47;5-8;19-41
+1-7;8-28;21-31;6-17;16-29;31-37;5-32;5-7;24-45
+17-35;17-20;17-18;11-38;33-40;9-17;24-31
+1-11;8-16;17-28;17-25;16-29;48-49
+14-15;15-18;32-44;9-15;9-31;5-32;18-23;40-49
+23-24;6-28;16-29;31-47
diff --git a/examples/failures/latency.orig b/examples/failures/latency.orig
new file mode 100644
index 0000000..7c3fd07
--- /dev/null
+++ b/examples/failures/latency.orig
@@ -0,0 +1,84 @@
+0 1 0.312
+2 3 10.786
+1 4 0.222
+1 5 1.035
+1 6 1.414
+1 7 1.24
+1 8 0.814
+1 9 19.532
+1 10 0.352
+1 11 4.593
+12 13 2.622
+14 15 0.207
+14 16 12.098
+14 17 13.941
+15 18 7.791
+15 19 38.946
+20 21 19.775
+20 22 0.345
+23 24 5.337
+25 26 0.276
+27 28 0.645
+8 20 19.787
+8 16 8.352
+8 28 1.578
+8 24 10.459
+8 26 5.005
+21 31 20.741
+13 32 4.737
+13 33 1.424
+17 35 2.091
+17 20 14.409
+17 18 7.13
+17 28 6.214
+17 24 6.437
+17 25 1.315
+17 26 1.176
+17 29 3.282
+17 36 2.478
+11 24 5.751
+11 38 3.235
+11 17 4.718
+33 39 1.817
+33 40 2.035
+6 7 0.327
+6 28 0.97
+6 25 5.176
+6 8 0.612
+6 17 5.725
+6 34 0.802
+6 11 6.007
+39 42 0.699
+16 24 3.655
+16 29 0.135
+16 17 3.286
+31 45 0.268
+31 46 0.268
+31 37 3.375
+31 47 2.708
+32 48 1.712
+32 44 2.329
+32 42 1.595
+48 49 3.201
+7 13 31.13
+38 43 1.643
+9 15 5.513
+9 20 0.437
+9 31 2.648
+9 30 0.124
+9 17 14.774
+9 19 42.03
+5 32 28.338
+5 8 0.359
+5 7 0.316
+18 23 0.779
+40 48 2.34
+40 49 2.529
+24 38 7.706
+24 31 9.827
+24 45 10.045
+24 50 0.092
+3 9 59.812
+19 41 26.19
+19 20 42.057
+19 51 14.125
diff --git a/examples/failures/weight.orig b/examples/failures/weight.orig
new file mode 100644
index 0000000..387a37f
--- /dev/null
+++ b/examples/failures/weight.orig
@@ -0,0 +1,84 @@
+0 1 312
+2 3 10786
+1 4 222
+1 5 2500
+1 6 4000
+1 7 2500
+1 8 3860
+1 9 11769
+1 10 352
+1 11 3500
+12 13 2622
+14 15 500
+14 16 14192
+14 17 8909
+15 18 11747
+15 19 44530
+20 21 19775
+20 22 345
+23 24 5337
+25 26 2184
+27 28 645
+8 20 11409
+8 16 8282
+8 28 3000
+8 24 7735
+8 26 5500
+21 31 20741
+13 32 7552
+13 33 1500
+17 35 2091
+17 20 14409
+17 18 4337
+17 28 4000
+17 24 5735
+17 25 1315
+17 26 2500
+17 29 3282
+17 36 2478
+11 24 5096
+11 38 3235
+11 17 4360
+33 39 2000
+33 40 3000
+6 7 2500
+6 28 6860
+6 25 5176
+6 8 5860
+6 17 3860
+6 34 802
+6 11 5500
+39 42 699
+16 24 1547
+16 29 3000
+16 17 5282
+31 45 500
+31 46 268
+31 37 3375
+31 47 2708
+32 48 1712
+32 44 2329
+32 42 3352
+48 49 3201
+7 13 30890
+38 43 1643
+9 15 5500
+9 20 2500
+9 31 4735
+9 30 124
+9 17 13909
+9 19 42030
+5 32 28338
+5 8 2360
+5 7 2000
+18 23 5735
+40 48 2340
+40 49 2529
+24 38 2860
+24 31 9909
+24 45 10409
+24 50 92
+3 9 59812
+19 41 26190
+19 20 39530
+19 51 14125
diff --git a/examples/interest-header-example.cc b/examples/interest-header-example.cc
deleted file mode 100644
index e068feb..0000000
--- a/examples/interest-header-example.cc
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2011 University of California, Los Angeles
- *
- * 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
- *
- */
-#include "ns3/test.h"
-#include "ns3/annotated-topology-reader.h"
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/uinteger.h"
-#include "ns3/random-variable.h"
-#include <limits> 
-#include "ns3/ccnx-header-helper.h"
-#include "ns3/header.h"
-#include "ns3/ccnx-name-components.h"
-#include "ns3/nstime.h"
-#include "ns3/buffer.h"
-#include "ns3/log.h"
-#include "ns3/packet.h"
-
-using namespace ns3;
-#include <fstream>
-
-NS_LOG_COMPONENT_DEFINE ("InterestHeaderExample");
-
-int
-main (int argc, char *argv[])
-{
-  // LogComponentEnable ("InterestHeaderExample", LOG_ALL);
-  // LogComponentEnable ("Packet", LOG_ALL);
-	
-  NS_LOG_INFO ("Test started");
-
-  Packet::EnablePrinting ();
-  Packet::EnableChecking (); 
-  Packet packet (0);
-
-  CcnxInterestHeader interestHeader;
-	
-  Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
-  (*testname) ("first") ("second");
-  interestHeader.SetName(testname);
-	
-  uint32_t minSuffixComponents = 20;
-  interestHeader.SetMinSuffixComponents(minSuffixComponents);
-	
-  uint32_t maxSuffixComponents = 40;
-  interestHeader.SetMaxSuffixComponents(maxSuffixComponents);
-	
-  Time lifetime = Seconds(661777) + MicroSeconds(1234);
-  interestHeader.SetInterestLifetime(lifetime);
-
-  bool child = true;
-  interestHeader.SetChildSelector(child);
-
-  Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents> ();
-  (*exclude) ("exclude1") ("exclude2");
-  interestHeader.SetExclude(exclude);
-
-  UniformVariable random(1, std::numeric_limits<uint32_t>::max ());
-  uint32_t randomNonce = static_cast<uint32_t> (random.GetValue());
-  interestHeader.SetNonce(randomNonce);
-    
-  interestHeader.SetNack(CcnxInterestHeader::NACK_CONGESTION);
-  NS_LOG_INFO ("Source: \n" << interestHeader);
-    
-  packet.AddHeader (interestHeader);
-  NS_LOG_INFO ("Deserialized packet: " << packet);
-
-  NS_LOG_INFO ("Removing and deserializing individual headers");
-	
-  CcnxInterestHeader target;
-  packet.RemoveHeader (target);
-
-  // NS_LOG_INFO ("Target: \n" << target);
-
-  return 0;
-}
diff --git a/examples/link-failure-base.cc b/examples/link-failure-base.cc
new file mode 100644
index 0000000..a499f8d
--- /dev/null
+++ b/examples/link-failure-base.cc
@@ -0,0 +1,261 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+ 
+ 
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/random-variable.h"
+#include "ns3/ccnx.h"
+#include "ns3/topology-reader.h"
+#include "../model/ccnx-net-device-face.h"
+
+#include <iostream>
+#include <sstream>
+#include <map>
+#include <list>
+#include <set>
+#include "ns3/rocketfuel-topology-reader.h"
+
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
+
+using namespace ns3;
+using namespace std;
+using namespace boost;
+
+NS_LOG_COMPONENT_DEFINE ("LinkFailureSprint");
+
+#include "base-experiment.h"
+
+class Experiment : public BaseExperiment
+{
+public:
+  typedef tuple<string, string> failure_t;
+  typedef list<failure_t> failures_t;
+  
+  Experiment (const string &file)
+  {
+    ifstream failures (("./src/NDNabstraction/examples/failures/failures-"+file).c_str ());
+    for(std::string line; std::getline(failures, line); )
+      {
+        if (line == "")
+          {
+            m_failures.push_back (failures_t ());
+            continue;
+          }
+
+        failures_t failures;
+        istringstream run (line);
+        while (!run.eof () && !run.bad ())
+          {
+            int32_t link1 = -1;
+            int32_t link2 = -1;
+            run >> link1;
+            run.get ();
+            run >> link2;
+            run.get ();
+            if (link1 < 0 || link2 < 0) continue;
+
+            // cout << link1 << " <-> " << link2 << "   ";
+            failures.push_back (failure_t (lexical_cast<string> (link1), lexical_cast<string> (link2)));
+          }
+        m_failures.push_back (failures);
+      }
+  }
+  
+  // hijacker is more than an application. just disable all faces
+  void
+  FailLinks (uint32_t failId)
+  {
+    failures_t failures = m_failures [failId];
+    BOOST_FOREACH (failure_t failure, failures)
+      {
+        Ptr<Node> node1 = Names::Find<Node> ("/sprint", failure.get<0> ());
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", failure.get<1> ());
+        // cout << failure.get<0> () << " <-> " << failure.get<1> () << "   ";
+        // cout << node1 << ", " << node2 << "\n";
+
+        Ptr<Ccnx> ccnx1 = node1->GetObject<Ccnx> ();
+        Ptr<Ccnx> ccnx2 = node2->GetObject<Ccnx> ();
+        for (uint32_t faceId = 0; faceId < ccnx1->GetNFaces (); faceId++)
+          {
+            Ptr<CcnxFace> face = ccnx1->GetFace (faceId);
+            Ptr<CcnxNetDeviceFace> ndFace = face->GetObject<CcnxNetDeviceFace> ();
+            if (ndFace == 0) continue;
+
+            Ptr<PointToPointNetDevice> nd1 = ndFace->GetNetDevice ()->GetObject<PointToPointNetDevice> ();
+            if (nd1 == 0) continue;
+
+            Ptr<Channel> channel = nd1->GetChannel ();
+            if (channel == 0) continue;
+
+            Ptr<PointToPointChannel> ppChannel = DynamicCast<PointToPointChannel> (channel);
+
+            Ptr<NetDevice> nd2 = ppChannel->GetDevice (0);
+            if (nd2->GetNode () == node1)
+              nd2 = ppChannel->GetDevice (1);
+
+            if (Names::FindName (nd2->GetNode ()) == failure.get<1> ())
+              {
+                cout << "Failing " << failure.get<0> () << " <-> " << failure.get<1> () << " link\n";
+
+                Ptr<CcnxFace> face1 = ccnx1->GetFaceByNetDevice (nd1);
+                Ptr<CcnxFace> face2 = ccnx2->GetFaceByNetDevice (nd2);
+
+                face1->SetUp (false);
+                face2->SetUp (false);
+
+                // set metric to max (for GlobalRouter to know what we want)
+                Ptr<Ipv4> ipv4_1 = ccnx1->GetObject<Ipv4> ();
+                Ptr<Ipv4> ipv4_2 = ccnx2->GetObject<Ipv4> ();
+
+                uint32_t if1 = ipv4_1->GetInterfaceForDevice (nd1);
+                uint32_t if2 = ipv4_2->GetInterfaceForDevice (nd2);
+
+                ipv4_1->SetMetric (if1, std::numeric_limits<uint16_t>::max ());
+                ipv4_2->SetMetric (if2, std::numeric_limits<uint16_t>::max ());
+                break;
+              }
+          }
+      }
+  }
+
+  //We are creating "everybody-to-everybody" usage pattern
+  ApplicationContainer
+  AddApplications()
+  {
+    NS_LOG_INFO ("Adding applications");
+    NS_LOG_INFO ("GetN = " << reader->GetNodes().GetN());
+
+    double delay = 0;
+    
+    ApplicationContainer apps;
+    for (uint32_t i = 0; i<reader->GetNodes().GetN(); i++)
+    {
+      NS_LOG_INFO("i="<<i);
+      Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (i));
+        
+      CcnxAppHelper producerHelper ("ns3::CcnxProducer");
+      producerHelper.SetPrefix ("/" + lexical_cast<string> (node1->GetId ()));
+        
+      apps.Add (producerHelper.Install (node1));
+            
+      CcnxAppHelper consumerHelper ("ns3::CcnxConsumerBatches");
+      consumerHelper.SetAttribute ("LifeTime", StringValue("100s"));
+      consumerHelper.SetAttribute ("Batches", StringValue("2s 1"));
+      
+      for(uint32_t j = 0; j<reader->GetNodes().GetN();j++)
+      {
+        NS_LOG_INFO("j="<<j);
+        if(i==j)
+          continue;
+        
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (j));
+          
+        consumerHelper.SetPrefix ("/" + lexical_cast<string> (node1->GetId ()) + "/" + lexical_cast<string> (node2->GetId ()));
+        ApplicationContainer consumer = consumerHelper.Install (node2);
+        consumer.Start (Seconds (delay));
+        apps.Add (consumer);
+
+        delay += 0.0001;
+      }
+    }
+    
+    return apps;
+  }
+
+private:
+  vector<failures_t> m_failures;
+};
+
+int 
+main (int argc, char *argv[])
+{
+  cout << "Begin link failure scenario\n";
+
+  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("100Mbps"));
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("2000"));
+  Config::SetDefault ("ns3::RttEstimator::InitialEstimation", StringValue ("0.5s"));
+  // Config::SetDefault ("ns3::RttEstimator::MaxMultiplier", StringValue ("16.0")); // original default is 64.0
+
+  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
+  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
+  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+
+  // Config::SetDefault ("ns3::CcnxConsumer::LifeTime", StringValue ("100s"));
+  
+  uint32_t maxRuns = 1;
+  uint32_t startRun = 0;
+  std::string failures = "";
+  CommandLine cmd;
+  cmd.AddValue ("start", "Initial run number", startRun);
+  cmd.AddValue ("runs", "Number of runs", maxRuns);
+  cmd.AddValue ("failures", "File with failures", failures);
+  cmd.Parse (argc, argv);
+
+  if (failures == "")
+    {
+      std::cerr << "--failures=<file> parameter has to be specified" << std::endl;
+      return 1;
+    }
+
+  // ConfigStore config;
+  // config.ConfigureDefaults ();
+
+  Experiment experiment (failures);
+  for (uint32_t run = startRun; run < startRun + maxRuns; run++)
+    {
+      Config::SetGlobal ("RngRun", IntegerValue (run));
+      cout << "seed = " << SeedManager::GetSeed () << ", run = " << SeedManager::GetRun () << endl;
+
+      cout << "Run " << run << endl;
+      string prefix = "link-failure-"+ failures +"-base-" + lexical_cast<string> (run) + "-";
+
+      experiment.ConfigureTopology ();
+      experiment.InstallCcnxStackImpl ();
+
+      CcnxStackHelper ccnxHelper;
+      ccnxHelper.InstallFakeGlobalRoutesImpl ();
+
+      experiment.FailLinks (run);
+
+      Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+      ccnxHelper.InstallRoutesToAll ();
+      
+      ApplicationContainer apps = experiment.AddApplications ();
+      cout << "Total number of applications: " << apps.GetN () << "\n";
+
+      //tracing
+      CcnxTraceHelper traceHelper;
+      // Simulator::Schedule (Seconds (4.5), &CcnxTraceHelper::EnableSeqsAppAll, &traceHelper,
+      //                      "ns3::CcnxConsumerBatches", prefix + "consumers-seqs.log");
+      Simulator::Schedule (Seconds (0.1), &CcnxTraceHelper::EnablePathWeights, &traceHelper,
+                           prefix + "weights.log");
+
+      experiment.Run (Seconds(10.0));
+    }
+
+  cout << "Finish link failure scenario\n";
+  return 0;
+}
diff --git a/examples/link-failure-sprint.cc b/examples/link-failure-sprint.cc
new file mode 100644
index 0000000..88f2344
--- /dev/null
+++ b/examples/link-failure-sprint.cc
@@ -0,0 +1,311 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+ 
+ 
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/point-to-point-module.h"
+#include "ns3/NDNabstraction-module.h"
+#include "ns3/point-to-point-grid.h"
+#include "ns3/ipv4-global-routing-helper.h"
+#include "ns3/random-variable.h"
+#include "ns3/ccnx.h"
+#include "ns3/topology-reader.h"
+#include "../model/ccnx-net-device-face.h"
+
+#include <iostream>
+#include <sstream>
+#include <map>
+#include <list>
+#include <set>
+#include "ns3/rocketfuel-topology-reader.h"
+
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
+
+using namespace ns3;
+using namespace std;
+using namespace boost;
+
+NS_LOG_COMPONENT_DEFINE ("LinkFailureSprint");
+
+#include "base-experiment.h"
+
+class Experiment : public BaseExperiment
+{
+public:
+  typedef tuple<string, string> failure_t;
+  typedef list<failure_t> failures_t;
+  
+  Experiment (const string &file)
+  {
+    ifstream failures (("./src/NDNabstraction/examples/failures/failures-"+file).c_str ());
+    for(std::string line; std::getline(failures, line); )
+      {
+        if (line == "")
+          {
+            m_failures.push_back (failures_t ());
+            continue;
+          }
+
+        failures_t failures;
+        istringstream run (line);
+        while (!run.eof () && !run.bad ())
+          {
+            int32_t link1 = -1;
+            int32_t link2 = -1;
+            run >> link1;
+            run.get ();
+            run >> link2;
+            run.get ();
+            if (link1 < 0 || link2 < 0) continue;
+
+            // cout << link1 << " <-> " << link2 << "   ";
+            failures.push_back (failure_t (lexical_cast<string> (link1), lexical_cast<string> (link2)));
+          }
+        m_failures.push_back (failures);
+      }
+  }
+  
+  // hijacker is more than an application. just disable all faces
+  void
+  FailLinks (uint32_t failId)
+  {
+    failures_t failures = m_failures [failId];
+    BOOST_FOREACH (failure_t failure, failures)
+      {
+        Ptr<Node> node1 = Names::Find<Node> ("/sprint", failure.get<0> ());
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", failure.get<1> ());
+        // cout << failure.get<0> () << " <-> " << failure.get<1> () << "   ";
+        // cout << node1 << ", " << node2 << "\n";
+
+        Ptr<Ccnx> ccnx1 = node1->GetObject<Ccnx> ();
+        Ptr<Ccnx> ccnx2 = node2->GetObject<Ccnx> ();
+        for (uint32_t faceId = 0; faceId < ccnx1->GetNFaces (); faceId++)
+          {
+            Ptr<CcnxFace> face = ccnx1->GetFace (faceId);
+            Ptr<CcnxNetDeviceFace> ndFace = face->GetObject<CcnxNetDeviceFace> ();
+            if (ndFace == 0) continue;
+
+            Ptr<PointToPointNetDevice> nd1 = ndFace->GetNetDevice ()->GetObject<PointToPointNetDevice> ();
+            if (nd1 == 0) continue;
+
+            Ptr<Channel> channel = nd1->GetChannel ();
+            if (channel == 0) continue;
+
+            Ptr<PointToPointChannel> ppChannel = DynamicCast<PointToPointChannel> (channel);
+
+            Ptr<NetDevice> nd2 = ppChannel->GetDevice (0);
+            if (nd2->GetNode () == node1)
+              nd2 = ppChannel->GetDevice (1);
+
+            if (Names::FindName (nd2->GetNode ()) == failure.get<1> ())
+              {
+                cout << "Failing " << failure.get<0> () << " <-> " << failure.get<1> () << " link\n";
+
+                Ptr<CcnxFace> face1 = ccnx1->GetFaceByNetDevice (nd1);
+                Ptr<CcnxFace> face2 = ccnx2->GetFaceByNetDevice (nd2);
+
+                face1->SetUp (false);
+                face2->SetUp (false);
+
+                // set metric to max (for GlobalRouter to know what we want)
+                Ptr<Ipv4> ipv4_1 = ccnx1->GetObject<Ipv4> ();
+                Ptr<Ipv4> ipv4_2 = ccnx2->GetObject<Ipv4> ();
+
+                uint32_t if1 = ipv4_1->GetInterfaceForDevice (nd1);
+                uint32_t if2 = ipv4_2->GetInterfaceForDevice (nd2);
+
+                ipv4_1->SetMetric (if1, std::numeric_limits<uint16_t>::max ());
+                ipv4_2->SetMetric (if2, std::numeric_limits<uint16_t>::max ());
+                break;
+              }
+          }
+      }
+  }
+
+  // void
+  // FailLinks(double threshold)
+  // {
+  //   NS_LOG_INFO("Failing links");
+  //   m_linkRand = UniformVariable(0, 1.0);
+  //   double probability = 0.0;
+    
+  //   BOOST_FOREACH (const TopologyReader::Link &link, m_reader.GetLinks())
+  //     {
+  //       probability = m_linkRand.GetValue();
+  //       NS_LOG_INFO ("Probability = " << probability);
+        
+  //       if(probability <= threshold)
+  //         {
+  //           Ptr<Node> fromNode = link.GetFromNode ();
+  //           Ptr<Node> toNode = link.GetToNode ();
+  //           NS_LOG_INFO("From node id = " << fromNode->GetId());
+  //           NS_LOG_INFO("To node id = " << toNode->GetId());
+            
+  //           Ptr<CcnxL3Protocol> fromCcnx = fromNode->GetObject<CcnxL3Protocol> ();
+  //           Ptr<CcnxL3Protocol> toCcnx = toNode->GetObject<CcnxL3Protocol> (); 
+          
+  //           Ptr<NetDevice> fromDevice = link.GetFromNetDevice ();
+  //           Ptr<NetDevice> toDevice = link.GetToNetDevice ();
+          
+  //           Ptr<CcnxFace> fromFace = fromCcnx->GetFaceByNetDevice (fromDevice);
+  //           Ptr<CcnxFace> toFace = toCcnx->GetFaceByNetDevice (toDevice);
+          
+  //           NS_LOG_INFO("From face id = " << fromFace->GetId());
+  //           NS_LOG_INFO("To face id = " << toFace->GetId());
+  //           fromFace->SetUp (false);
+  //           toFace->SetUp (false);
+            
+  //           NS_LOG_INFO(fromFace->IsUp());
+  //           NS_LOG_INFO(toFace->IsUp());
+  //         }
+
+  //     }
+  //   /*
+  //   uint32_t nodeId = m_rand.GetValue ();
+  //   Ptr<Node> node = Names::Find<Node> ("/sprint", lexical_cast<string> (nodeId));
+    
+  //   Ptr<CcnxL3Protocol> ccnx = node->GetObject<CcnxL3Protocol> ();
+  //   UniformVariable faceRandom = UniformVariable (0, ccnx->GetNFaces ());
+  //   uint32_t faceId = faceRandom.GetValue();
+  //   Ptr<CcnxFace> face = ccnx->GetFace (faceId);
+  //   face->SetUp(false);
+  //   */
+  // }
+
+  //We are creating "everybody-to-everybody" usage pattern
+  ApplicationContainer
+  AddApplications()
+  {
+    NS_LOG_INFO ("Adding applications");
+    NS_LOG_INFO ("GetN = " << reader->GetNodes().GetN());
+
+    double delay = 0;
+    
+    ApplicationContainer apps;
+    for (uint32_t i = 0; i<reader->GetNodes().GetN(); i++)
+    {
+      NS_LOG_INFO("i="<<i);
+      Ptr<Node> node1 = Names::Find<Node> ("/sprint", lexical_cast<string> (i));
+        
+      CcnxAppHelper producerHelper ("ns3::CcnxProducer");
+      producerHelper.SetPrefix ("/" + lexical_cast<string> (node1->GetId ()));
+        
+      apps.Add (producerHelper.Install (node1));
+            
+      CcnxAppHelper consumerHelper ("ns3::CcnxConsumerBatches");
+      consumerHelper.SetAttribute ("LifeTime", StringValue("100s"));
+      consumerHelper.SetAttribute ("Batches", StringValue("0s 1 1s 1 2s 1 3s 1 6s 1 20s 1"));
+      
+      for(uint32_t j = 0; j<reader->GetNodes().GetN();j++)
+      {
+        NS_LOG_INFO("j="<<j);
+        if(i==j)
+          continue;
+        
+        Ptr<Node> node2 = Names::Find<Node> ("/sprint", lexical_cast<string> (j));
+          
+        consumerHelper.SetPrefix ("/" + lexical_cast<string> (node1->GetId ()) + "/" + lexical_cast<string> (node2->GetId ()));
+        ApplicationContainer consumer = consumerHelper.Install (node2);
+        consumer.Start (Seconds (delay));
+        apps.Add (consumer);
+
+        delay += 0.0001;
+      }
+    }
+    
+    return apps;
+  }
+
+  void
+  RecalculateRouting ()
+  {
+    Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
+  }
+
+private:
+  vector<failures_t> m_failures;
+};
+
+int 
+main (int argc, char *argv[])
+{
+  cout << "Begin link failure scenario\n";
+
+  Config::SetDefault ("ns3::PointToPointNetDevice::DataRate", StringValue ("100Mbps"));
+  Config::SetDefault ("ns3::DropTailQueue::MaxPackets", StringValue ("2000"));
+  Config::SetDefault ("ns3::RttEstimator::InitialEstimation", StringValue ("0.5s"));
+  // Config::SetDefault ("ns3::RttEstimator::MaxMultiplier", StringValue ("16.0")); // original default is 64.0
+
+  Config::SetDefault ("ns3::ConfigStore::Filename", StringValue ("attributes.xml"));
+  Config::SetDefault ("ns3::ConfigStore::Mode", StringValue ("Save"));
+  Config::SetDefault ("ns3::ConfigStore::FileFormat", StringValue ("Xml"));
+
+  // Config::SetDefault ("ns3::CcnxConsumer::LifeTime", StringValue ("100s"));
+  
+  uint32_t maxRuns = 1;
+  uint32_t startRun = 0;
+  std::string failures = "";
+  CommandLine cmd;
+  cmd.AddValue ("start", "Initial run number", startRun);
+  cmd.AddValue ("runs", "Number of runs", maxRuns);
+  cmd.AddValue ("failures", "File with failures", failures);
+  cmd.Parse (argc, argv);
+
+  if (failures == "")
+    {
+      std::cerr << "--failures=<file> parameter has to be specified" << std::endl;
+      return 1;
+    }
+
+  // ConfigStore config;
+  // config.ConfigureDefaults ();
+
+  Experiment experiment (failures);
+  for (uint32_t run = startRun; run < startRun + maxRuns; run++)
+    {
+      Config::SetGlobal ("RngRun", IntegerValue (run));
+      cout << "seed = " << SeedManager::GetSeed () << ", run = " << SeedManager::GetRun () << endl;
+
+      cout << "Run " << run << endl;
+      string prefix = "link-failure-" + lexical_cast<string> (run) + "-";
+  
+      experiment.ConfigureTopology ();
+      experiment.InstallCcnxStack (true);
+      ApplicationContainer apps = experiment.AddApplications ();
+      cout << "Total number of applications: " << apps.GetN () << "\n";
+
+      Simulator::Schedule (Seconds (10.0), &Experiment::FailLinks, &experiment, run);
+      Simulator::Schedule (Seconds (39.0), &Experiment::RecalculateRouting, &experiment);
+
+      //tracing
+      CcnxTraceHelper traceHelper;
+      Simulator::Schedule (Seconds (4.5), &CcnxTraceHelper::EnableSeqsAppAll, &traceHelper,
+                           "ns3::CcnxConsumerBatches", prefix + "consumers-seqs.log");
+      Simulator::Schedule (Seconds (4.5), &CcnxTraceHelper::EnablePathWeights, &traceHelper,
+                           prefix + "weights.log");
+
+      experiment.Run (Seconds(60.0));
+    }
+
+  cout << "Finish link failure scenario\n";
+  return 0;
+}
diff --git a/examples/syntactic-topology-ndnabstraction.cc b/examples/syntactic-topology-ndnabstraction.cc
deleted file mode 100644
index 3fc04a1..0000000
--- a/examples/syntactic-topology-ndnabstraction.cc
+++ /dev/null
@@ -1,226 +0,0 @@
-/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2011 University of California, Los Angeles
- *
- * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
- */
-
-#include "ns3/core-module.h"
-#include "ns3/network-module.h"
-#include "ns3/point-to-point-module.h"
-#include "ns3/NDNabstraction-module.h"
-#include <ns3/point-to-point-grid.h>
-#include "ns3/ipv4-global-routing-helper.h"
-
-#include <iostream>
-#include <sstream>
-
-#include "ns3/ccnx.h"
-
-
-using namespace ns3;
-
-NS_LOG_COMPONENT_DEFINE ("SyncTopologyNDNabstraction");
-
-int 
-main (int argc, char *argv[])
-{
-  // Set up some default values for the simulation.  Use the 
-  
-  Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
-  Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("448kb/s"));
-  
-  Packet::EnableChecking();
-  Packet::EnablePrinting();
-
-  // Allow the user to override any of the defaults and the above
-  // DefaultValue::Bind ()s at run-time, via command-line arguments
-  CommandLine cmd;
-  cmd.Parse (argc, argv);
-  
-  // Here, we will explicitly create seven nodes. 
-  NS_LOG_INFO ("Create nodes.");
-  NodeContainer c;
-  c.Create (7);
-  Names::Add ("1", c.Get (0));
-  Names::Add ("2", c.Get (1));
-  Names::Add ("3", c.Get (2));
-  Names::Add ("4", c.Get (3));
-  Names::Add ("5", c.Get (4));
-  Names::Add ("6", c.Get (5));
-  Names::Add ("7", c.Get (6));
-    
-    
-  NodeContainer n13 = NodeContainer (c.Get (0), c.Get (2));
-  NodeContainer n23 = NodeContainer (c.Get (1), c.Get (2));
-  NodeContainer n35 = NodeContainer (c.Get (2), c.Get (4));
-  NodeContainer n34 = NodeContainer (c.Get (2), c.Get (3));
-  NodeContainer n45 = NodeContainer (c.Get (3), c.Get (4));
-  NodeContainer n56 = NodeContainer (c.Get (4), c.Get (5));
-  NodeContainer n57 = NodeContainer (c.Get (4), c.Get (6));
-  
-  //Ipv4StaticRoutingHelper staticRouting;
-  
-  //Ipv4ListRoutingHelper list;
-  //list.Add (staticRouting, 1);
-  
-  //Add static routing
-  //InternetStackHelper internet;
-  //internet.SetRoutingHelper (list); // has effect on the next Install ()
-  //internet.Install (c);
-  
-  // We create the channels first without any IP addressing information
-  NS_LOG_INFO ("Create channels.");
-  PointToPointHelper p2p;
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("10Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("1ms"));
-  NetDeviceContainer nd13 = p2p.Install (n13);
-  NetDeviceContainer nd23 = p2p.Install (n23);
-  NetDeviceContainer nd56 = p2p.Install (n56);
-  
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("10Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("50ms"));
-  NetDeviceContainer nd57 = p2p.Install (n57);
-  
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("1Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("1ms"));
-  NetDeviceContainer nd34 = p2p.Install (n34);
-  NetDeviceContainer nd45 = p2p.Install (n45);
-  
-  p2p.SetDeviceAttribute ("DataRate", StringValue ("1Mbps"));
-  p2p.SetChannelAttribute ("Delay", StringValue ("50ms"));
-  NetDeviceContainer nd35 = p2p.Install (n35);
-  
-  InternetStackHelper stack;
-  Ipv4GlobalRoutingHelper ipv4RoutingHelper;
-  // Ptr<Ipv4RoutingHelper> ipv4RoutingHelper = stack.GetRoutingHelper ();
-  stack.SetRoutingHelper (ipv4RoutingHelper);
-  stack.Install(c);
-  // // Create router nodes, initialize routing database and set up the routing
-  // // tables in the nodes.
-  Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
-    
-  // Later, we add IP addresses.
-  NS_LOG_INFO ("Assign IP Addresses.");
-  Ipv4AddressHelper ipv4;
-  ipv4.SetBase ("192.168.1.0", "255.255.255.0");
-  Ipv4InterfaceContainer i13 = ipv4.Assign (nd13);
-  Ipv4InterfaceContainer i23 = ipv4.Assign (nd23);
-  Ipv4InterfaceContainer i35 = ipv4.Assign (nd35);
-  Ipv4InterfaceContainer i34 = ipv4.Assign (nd34);
-  Ipv4InterfaceContainer i45 = ipv4.Assign (nd45);
-  Ipv4InterfaceContainer i56 = ipv4.Assign (nd56);
-  Ipv4InterfaceContainer i57 = ipv4.Assign (nd57);
-  
-    
-    
-    
-  CcnxStackHelper ccnx;
-  ccnx.SetForwardingStrategy ("ns3::CcnxFloodingStrategy");
-  ccnx.EnableLimits (false);
-  Ptr<CcnxFaceContainer> cf = ccnx.Install (c);
-    
-  NS_LOG_INFO ("Installing Applications");
-  CcnxConsumerHelper helper ("/3");
-  ApplicationContainer app = helper.Install (c.Get(1));
-  app.Start (Seconds (1.0));
-  app.Stop (Seconds (1000.05));
-    
-  /*CcnxConsumerHelper helper2 ("/4");
-    ApplicationContainer app2 = helper2.Install(c.Get(5));
-    app2.Start (Seconds (1.0));
-    app2.Stop (Seconds (1000.05));
-  */
-  CcnxProducerHelper helper3 ("/3",120);
-  ApplicationContainer app3 = helper3.Install(c.Get(6));
-  app3.Start(Seconds(0.0));
-  app3.Stop(Seconds(1500.0));
-  /*
-    CcnxProducerHelper helper4 ("/4",150);
-    ApplicationContainer app4 = helper4.Install(c.Get(0));
-    app4.Start(Seconds(0.0));
-    app4.Stop(Seconds(1500.0));
-  */
-    
-  ccnx.AddRoute("1","/3",0,1);
-  ccnx.AddRoute("3","/3",2,1);
-  ccnx.AddRoute("3","/3",3,1);
-  ccnx.AddRoute("4","/3",1,1);
-  ccnx.AddRoute("5","/3",2,1);
-    
-  /*ccnx.AddRoute ("1", "/3", 0, 1);
-    ccnx.AddRoute ("1", "/3", 1, 1);
-    
-    ccnx.AddRoute ("2", "/3", 1, 1);
-    
-    ccnx.AddRoute ("3", "/3", 1, 1);
-    
-    ccnx.AddRoute ("4", "/3", 2, 1);
-    
-    ccnx.AddRoute ("6", "/3", 2, 1);
-    
-    ccnx.AddRoute ("7", "/3", 1, 1);
-    
-    ccnx.AddRoute ("8", "/3", 1, 1);
-  */
-    
-  // Create the OnOff application to send UDP datagrams of size
-  // 210 bytes at a rate of 448 Kb/s from n0 to n4
-  /*NS_LOG_INFO ("Create Applications.");
-    uint16_t port = 9;   // Discard port (RFC 863)
-  
-    std::string sendsizeattr = "SendSize";
-    //flow2 7-->2
-    BulkSendHelper bulksend0 ("ns3::UdpSocketFactory", InetSocketAddress (i23.GetAddress (0), port));
-    //bulksend0.SetAttribute(sendsizeattr, AttributeValue(ConstantVariable(2560)));
-    bulksend0.SetAttribute("MaxBytes", UintegerValue(2560));
-    ApplicationContainer apps = bulksend0.Install(c.Get(6));
-    apps.Start(Seconds (1.0));
-    apps.Stop(Seconds (10.0));
-  
-    // Create a packet sink to receive these packets
-    PacketSinkHelper sink0 ("ns3::UdpSocketFactory", InetSocketAddress(Ipv4Address::GetAny (), port));
-    apps = sink0.Install(c.Get(1));
-    apps.Start(Seconds(0.0));
-    apps.Stop(Seconds(20.0));
-  
-    //flow1 1-->6
-    BulkSendHelper bulksend ("ns3::UdpSocketFactory", InetSocketAddress (i56.GetAddress (1), port));
-    //bulksend.SetAttribute(sendsizeattr, AttributeValue( ConstantVariable(2560)));
-    bulksend0.SetAttribute("MaxBytes", UintegerValue(2560));
-    apps = bulksend.Install (c.Get (0));
-    apps.Start (Seconds (6.0));
-    apps.Stop (Seconds (20.0));
-  
-    // Create a packet sink to receive these packets
-    PacketSinkHelper sink ("ns3::UdpSocketFactory", InetSocketAddress (Ipv4Address::GetAny (), port));
-    apps = sink.Install (c.Get (5));
-    apps.Start(Seconds(0.0));
-    apps.Stop(Seconds(20.0));
-  
-    AsciiTraceHelper ascii;
-    p2p.EnableAsciiAll (ascii.CreateFileStream ("sync-topology-ndnabstraction.tr"));
-    p2p.EnablePcapAll ("sync-topology-ndnabstraction");*/
-  
-  Simulator::Stop (Seconds (2000));
-  
-  NS_LOG_INFO ("Run Simulation.");
-  Simulator::Run ();
-  Simulator::Destroy ();
-  NS_LOG_INFO ("Done.");
-  
-  return 0;
-}
diff --git a/examples/synthetic-topology.cc b/examples/synthetic-topology.cc
index 971bbe1..250a936 100644
--- a/examples/synthetic-topology.cc
+++ b/examples/synthetic-topology.cc
@@ -89,7 +89,7 @@
   ccnxHelper.InstallAll ();
     
   NS_LOG_INFO ("Installing Applications");
-  CcnxAppHelper consumerHelper ("ns3::CcnxConsumer");
+  CcnxAppHelper consumerHelper ("ns3::CcnxConsumerCbr");
 
   consumerHelper.SetPrefix ("/6");
   consumerHelper.SetAttribute ("MeanRate", StringValue ("2Mbps"));
@@ -142,13 +142,13 @@
   Simulator::Stop (finishTime);
 
   CcnxTraceHelper traceHelper;
-  // traceHelper.EnableAggregateAppAll ("ns3::CcnxConsumer");
+  // traceHelper.EnableAggregateAppAll ("ns3::CcnxConsumerCbr");
   // traceHelper.EnableAggregateAppAll ("ns3::CcnxProducer");
   // traceHelper.EnableAggregateL3All ();
   // traceHelper.SetL3TraceFile ("trace-l3.log");
   // traceHelper.SetAppTraceFile ("trace-app.log");
   // traceHelper.EnableRateL3All ("rate-trace.log");
-  traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumer", "consumers-seqs.log");
+  traceHelper.EnableSeqsAppAll ("ns3::CcnxConsumerCbr", "consumers-seqs.log");
 
   NS_LOG_INFO ("Run Simulation.");
   Simulator::Run ();
diff --git a/examples/vanet-ccnx.cc b/examples/vanet-ccnx.cc
new file mode 100644
index 0000000..54f8fa8
--- /dev/null
+++ b/examples/vanet-ccnx.cc
@@ -0,0 +1,140 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2005-2009 Old Dominion University [ARBABI]
+ *
+ * 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: Hadi Arbabi <marbabi@cs.odu.edu>
+ */
+
+/*
+  This the starting point of the simulation and experiments.
+  The main function will parse the input and parameter settings.
+  Creates a highway and set the highway parameters. then bind the events (callbacks)
+  to the created controller and designed handlers. Sets the highway start and end time,
+  and eventually runs the simulation which is basically running a highway with a controller.
+  You can add your functions to controller to create various scenarios.
+*/
+
+#include <fstream>
+#include <iostream>
+#include <iomanip>
+#include "ns3/core-module.h"
+#include "ns3/network-module.h"
+#include "ns3/mobility-module.h"
+#include "ns3/wifi-module.h"
+
+#include "math.h"
+
+#include "ns3/model.h"
+#include "ns3/highway.h"
+#include "ns3/vehicle-generator.h"
+#include "ns3/tinyxml.h"
+#include "ns3/highway-project-xml.h"
+#include "ns3/highway-xml.h"
+#include "ns3/wifi-configuration-xml.h"
+#include "ns3/highway-project.h"
+
+#include "ns3/ccnx-stack-helper.h"
+#include "ns3/ccnx-face-container.h"
+#include "ns3/ccnx-app-helper.h"
+
+NS_LOG_COMPONENT_DEFINE ("VanetCcnx");
+
+using namespace ns3;
+using namespace std;
+
+void
+EquipVehicle (Ptr<Vehicle> vehicle, Ptr<Highway> highway, double probability)
+{
+  NS_LOG_FUNCTION (vehicle->GetNode ()->GetId () << highway << probability);
+
+  CcnxStackHelper ccnxHelper;
+  ccnxHelper.SetDefaultRoutes (true);
+  Ptr<CcnxFaceContainer> faces = ccnxHelper.Install (vehicle->GetNode ());
+  NS_LOG_DEBUG ("Install CCNx stack. " << faces->GetN () << " faces available");
+
+
+  if (probability < 30)
+    {
+      CcnxAppHelper producerHelper ("ns3::CcnxProducer");
+      producerHelper.SetPrefix ("/");
+      producerHelper.Install (vehicle->GetNode ());
+    }
+  else
+    {
+      CcnxAppHelper consumerHelper ("ns3::CcnxConsumerCbr");
+      consumerHelper.SetAttribute ("LifeTime", StringValue("100s"));
+      consumerHelper.SetAttribute ("Frequency", StringValue("10"));
+      consumerHelper.SetPrefix ("/");
+      consumerHelper.Install (vehicle->GetNode ());
+    }
+}
+
+int
+main (int argc, char *argv[])
+{
+  string projectXmlFile = "";
+
+  CommandLine cmd;
+  cmd.AddValue ("project", "highway xml description", projectXmlFile);
+  cmd.Parse (argc, argv);
+  if (projectXmlFile == "")
+    {
+      std::cerr << "ERROR: --project option MUST be specified\n";
+      return 1;
+    }
+
+  std::ifstream testProjectFile (projectXmlFile.c_str ());
+  if (testProjectFile.bad ())
+    {
+      std::cerr << "ERROR: Cannot open project file\n";
+      return 2;
+    }
+  testProjectFile.close ();
+  
+  TiXmlDocument doc (projectXmlFile.c_str ());
+  doc.LoadFile ();
+  TiXmlHandle hDoc (&doc);
+  TiXmlElement* root = hDoc.FirstChildElement ().Element ();
+  TiXmlHandle hroot = TiXmlHandle (root);
+  HighwayProjectXml xml;
+  xml.LoadFromXml (hroot);
+
+  ns3::PacketMetadata::Enable ();
+  Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue ("2200"));
+  Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue ("2200"));
+  
+  HighwayProject project (xml);
+  // project.SetVehTraceFile (vehicleTraceFile);
+  // project.SetNetTraceFile (networkTraceFile);
+  
+  for (std::list<ns3::Ptr<ns3::VehicleGenerator> >::iterator generator = project.GetVehicleGenerators ().begin ();
+       generator != project.GetVehicleGenerators ().end ();
+       generator++)
+    {
+      (*generator)->TraceConnectWithoutContext ("NewVehicle", MakeCallback (EquipVehicle));
+    }
+  
+  project.Start ();
+
+  Simulator::Run ();
+  Simulator::Destroy ();
+
+  // Ptr<Highway> highway = project.getHighways ()[0];
+  // Simulator::Schedule (Seconds (10), &addCustomVehicle, highway);
+  // project.SetVehicleControlCallback (MakeCallback (&controlVehicle));
+
+  return 0;
+}
diff --git a/helper/ccnx-stack-helper.cc b/helper/ccnx-stack-helper.cc
index ff73cae..b7c8a01 100644
--- a/helper/ccnx-stack-helper.cc
+++ b/helper/ccnx-stack-helper.cc
@@ -19,41 +19,6 @@
  *          Ilya Moiseenko <iliamo@cs.ucla.edu> 
  */
 
-/**
- * \ingroup ccnx
- * \defgroup CcnxStackModel Ccnx Stack Model
- *
- * \section CcnxStackTracingModel Tracing in the Ccnx Stack
- *
- * The ccnx stack provides a number of trace sources in its various
- * protocol implementations.  These trace sources can be hooked using your own 
- * custom trace code, or you can use our helper functions in some cases to 
- * arrange for tracing to be enabled.
- *
- * \subsection CcnxStackCcnxTracingModel Tracing in Ccnx
- *
- * The Ccnx layer three protocol provides three trace hooks.  These are the 
- * "Tx" (ns3::CcnxL3Protocol::m_txTrace), "Rx" (ns3::CcnxL3Protocol::m_rxTrace) 
- * and "Drop" (ns3::CcnxL3Protocol::m_dropTrace) trace sources.
- *
- * The "Tx" trace is fired in a number of situations, all of which indicate that
- * a given packet is about to be sent down to a given ns3::CcnxFace.
- *
- * - \todo list Tx trace events
- *
- * The "Rx" trace is fired when a packet is passed from the device up to the
- * ns3::CcnxL3Protocol::Receive function.
- *
- * - In the receive function, the CcnxFaceList is iterated, and if the
- *   CcnxFace corresponding to the receiving device is found to be in the
- *   UP state, the trace is fired.
- *
- * The "Drop" trace is fired in any case where the packet is dropped (in both
- * the transmit and receive paths).
- *
- * - \todo list Drop trace events
- */
-
 #include "ns3/assert.h"
 #include "ns3/log.h"
 #include "ns3/object.h"
@@ -91,43 +56,11 @@
 #include <limits>
 #include <map>
 #include <boost/foreach.hpp>
-
-#define NDN_DEFAULT_DATA_SIZE      1024
+#include <boost/lexical_cast.hpp>
 
 NS_LOG_COMPONENT_DEFINE ("CcnxStackHelper");
 
 namespace ns3 {
-
-// Things are going to work differently here with respect to trace
-// file handling than in most places because the Tx and Rx trace
-// sources we are interested in are going to multiplex receive and
-// transmit callbacks for all Ccnx and face pairs through one
-// callback.  We want packets to or from each distinct pair to go to
-// an individual file, so we have got to demultiplex the Ccnx and face
-// pair into a corresponding Ptr<PcapFileWrapper> at the callback.
-//
-// A complication in this situation is that the trace sources are
-// hooked on a protocol basis.  There is no trace source hooked by an
-// Ccnx and face pair.  This means that if we naively proceed to hook,
-// say, a drop trace for a given Ccnx with face 0, and then hook for
-// Ccnx with face 1 we will hook the drop trace twice and get two
-// callbacks per event.  What we need to do is to hook the event once,
-// and that will result in a single callback per drop event, and the
-// trace source will provide the face which we filter on in the trace
-// sink.
-// 
-// This has got to continue to work properly after the helper has been
-// destroyed; but must be cleaned up at the end of time to avoid
-// leaks.  Global maps of protocol/face pairs to file objects seems to
-// fit the bill.
-//
-// typedef std::pair<Ptr<Ccnx>, uint32_t> FacePairCcnx; 
-// typedef std::map<FacePairCcnx, Ptr<PcapFileWrapper> > FaceFileMapCcnx;
-// typedef std::map<FacePairCcnx, Ptr<OutputStreamWrapper> > FaceStreamMapCcnx;
-
-// static FaceFileMapCcnx g_faceFileMapCcnx; /**< A mapping of Ccnx/face pairs to pcap files */
-// static FaceStreamMapCcnx g_faceStreamMapCcnx; /**< A mapping of Ccnx/face pairs to ascii streams */
-
     
 CcnxStackHelper::CcnxStackHelper ()
   : m_limitsEnabled (false)
@@ -155,7 +88,10 @@
 }
 
 void
-CcnxStackHelper::EnableLimits (bool enable/* = true*/, Time avgRtt/*=Seconds(0.1)*/, uint32_t avgContentObject/*=1100*/, uint32_t avgInterest/*=40*/)
+CcnxStackHelper::EnableLimits (bool enable/* = true*/,
+                               Time avgRtt/*=Seconds(0.1)*/,
+                               uint32_t avgContentObject/*=1100*/,
+                               uint32_t avgInterest/*=40*/)
 {
   NS_LOG_INFO ("EnableLimits: " << enable);
   m_limitsEnabled = enable;
@@ -223,27 +159,24 @@
         {
           NS_LOG_INFO ("Limits are enabled");
           Ptr<PointToPointNetDevice> p2p = DynamicCast<PointToPointNetDevice> (device);
-          if (p2p == 0)
+          if (p2p != 0)
             {
-              NS_LOG_INFO ("Non p2p interface");
-              continue; // only PointToPointNetDevice supports limits
-            }
-
-          // Setup bucket filtering
-          // Assume that we know average data packet size, and this size is equal default size
-          // Set maximum buckets (averaging over 1 second)
+              // Setup bucket filtering
+              // Assume that we know average data packet size, and this size is equal default size
+              // Set maximum buckets (averaging over 1 second)
       
-          DataRateValue dataRate; device->GetAttribute ("DataRate", dataRate);
+              DataRateValue dataRate; device->GetAttribute ("DataRate", dataRate);
           
-          NS_LOG_INFO("DataRate for this link is " << dataRate.Get());
+              NS_LOG_INFO("DataRate for this link is " << dataRate.Get());
 
-          double maxInterestPackets = 1.0  * dataRate.Get ().GetBitRate () / 8.0 / m_avgContentObjectSize;
-          NS_LOG_INFO ("Max packets per second: " << maxInterestPackets);
-          NS_LOG_INFO ("Max burst: " << m_avgRtt.ToDouble (Time::S) * maxInterestPackets);
+              double maxInterestPackets = 1.0  * dataRate.Get ().GetBitRate () / 8.0 / (m_avgContentObjectSize + m_avgInterestSize);
+              NS_LOG_INFO ("Max packets per second: " << maxInterestPackets);
+              NS_LOG_INFO ("Max burst: " << m_avgRtt.ToDouble (Time::S) * maxInterestPackets);
 
-          // Set bucket max to BDP
-          face->SetBucketMax (m_avgRtt.ToDouble (Time::S) * maxInterestPackets); // number of interests allowed
-          face->SetBucketLeak (maxInterestPackets);
+              // Set bucket max to BDP
+              face->SetBucketMax (m_avgRtt.ToDouble (Time::S) * maxInterestPackets); // number of interests allowed
+              face->SetBucketLeak (maxInterestPackets);
+            }
         }
         
       face->SetUp ();
@@ -262,7 +195,7 @@
 
 
 void
-CcnxStackHelper::AddRoute (Ptr<Node> node, std::string prefix, Ptr<CcnxFace> face, int32_t metric) const
+CcnxStackHelper::AddRoute (Ptr<Node> node, std::string prefix, Ptr<CcnxFace> face, int32_t metric)
 {
   NS_LOG_LOGIC ("[" << node->GetId () << "]$ route add " << prefix << " via " << *face << " metric " << metric);
 
@@ -274,7 +207,7 @@
 }
 
 void
-CcnxStackHelper::AddRoute (std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric) const
+CcnxStackHelper::AddRoute (std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric)
 {
   Ptr<Node> node = Names::Find<Node> (nodeName);
   NS_ASSERT_MSG (node != 0, "Node [" << nodeName << "] does not exist");
@@ -288,275 +221,6 @@
   AddRoute (node, prefix, face, metric);
 }
 
-/*
-  void
-  CcnxStackHelper::AddRoute (Ptr<Node> node, std::string prefix, uint32_t faceId, int32_t metric)
-  {
-  NS_LOG_LOGIC ("[" << nodeName << "]$ route add " << prefix << " via " << faceId << " metric " << metric);
-    
-  NS_ASSERT_MSG (node != 0, "Node does not exist");
-        
-  Ptr<Ccnx>     ccnx = node->GetObject<Ccnx> ();
-  Ptr<CcnxFib>  fib  = node->GetObject<CcnxFib> ();
-  Ptr<CcnxFace> face = ccnx->GetFace (faceId);
-  NS_ASSERT_MSG (node != 0, "Face with ID [" << faceId << "] does not exist on node [" << nodeName << "]");
-        
-  CcnxNameComponentsValue prefixValue;
-  prefixValue.DeserializeFromString (prefix, MakeCcnxNameComponentsChecker ());
-  fib->Add (prefixValue.Get (), face, metric);
-  }
-*/
-
-// static void
-// CcnxL3ProtocolRxTxSink (Ptr<const Packet> p, Ptr<Ccnx> ccnx, uint32_t face)
-// {
-//   NS_LOG_FUNCTION (p << ccnx << face);
-
-//   //
-//   // Since trace sources are independent of face, if we hook a source
-//   // on a particular protocol we will get traces for all of its faces.
-//   // We need to filter this to only report faces for which the user 
-//   // has expressed interest.
-//   //
-//   FacePairCcnx pair = std::make_pair (ccnx, face);
-//   if (g_faceFileMapCcnx.find (pair) == g_faceFileMapCcnx.end ())
-//     {
-//       NS_LOG_INFO ("Ignoring packet to/from face " << face);
-//       return;
-//     }
-
-//   Ptr<PcapFileWrapper> file = g_faceFileMapCcnx[pair];
-//   file->Write (Simulator::Now (), p);
-// }
-
-// bool
-// CcnxStackHelper::PcapHooked (Ptr<Ccnx> ccnx)
-// {
-//   for (FaceFileMapCcnx::const_iterator i = g_faceFileMapCcnx.begin (); 
-//        i != g_faceFileMapCcnx.end (); 
-//        ++i)
-//     {
-//       if ((*i).first.first == ccnx)
-//         {
-//           return true;
-//         }
-//     }
-//   return false;
-// }
-
-// void 
-// CcnxStackHelper::EnablePcapCcnxInternal (std::string prefix, Ptr<Ccnx> ccnx, uint32_t face, bool explicitFilename)
-// {
-//   NS_LOG_FUNCTION (prefix << ccnx << face);
-
-//   //
-//   // We have to create a file and a mapping from protocol/face to file 
-//   // irrespective of how many times we want to trace a particular protocol.
-//   //
-//   PcapHelper pcapHelper;
-
-//   std::string filename;
-//   if (explicitFilename)
-//     {
-//       filename = prefix;
-//     }
-//   else
-//     {
-//       filename = pcapHelper.GetFilenameFromInterfacePair (prefix, ccnx, face);
-//     }
-
-//   Ptr<PcapFileWrapper> file = pcapHelper.CreateFile (filename, std::ios::out, PcapHelper::DLT_RAW);
-
-//   //
-//   // However, we only hook the trace source once to avoid multiple trace sink
-//   // calls per event (connect is independent of face).
-//   //
-//   if (!PcapHooked (ccnx))
-//     {
-//       //
-//       // Ptr<Ccnx> is aggregated to node and CcnxL3Protocol is aggregated to 
-//       // node so we can get to CcnxL3Protocol through Ccnx.
-//       //
-//       Ptr<CcnxL3Protocol> ccnxL3Protocol = ccnx->GetObject<CcnxL3Protocol> ();
-//       NS_ASSERT_MSG (ccnxL3Protocol, "CcnxStackHelper::EnablePcapCcnxInternal(): "
-//                      "m_ccnxEnabled and ccnxL3Protocol inconsistent");
-
-//       bool result = ccnxL3Protocol->TraceConnectWithoutContext ("Tx", MakeCallback (&CcnxL3ProtocolRxTxSink));
-//       NS_ASSERT_MSG (result == true, "CcnxStackHelper::EnablePcapCcnxInternal():  "
-//                      "Unable to connect ccnxL3Protocol \"Tx\"");
-
-//       result = ccnxL3Protocol->TraceConnectWithoutContext ("Rx", MakeCallback (&CcnxL3ProtocolRxTxSink));
-//       NS_ASSERT_MSG (result == true, "CcnxStackHelper::EnablePcapCcnxInternal():  "
-//                      "Unable to connect ccnxL3Protocol \"Rx\"");
-//       // cast result to void, to suppress ‘result’ set but not used compiler-warning
-//       // for optimized builds
-//       (void) result;
-//     }
-
-//   g_faceFileMapCcnx[std::make_pair (ccnx, face)] = file;
-// }
-
-// static void
-// CcnxL3ProtocolDropSinkWithoutContext (
-//   Ptr<OutputStreamWrapper> stream,
-//   Ptr<const Packet> packet,
-//   CcnxL3Protocol::DropReason reason, 
-//   Ptr<Ccnx> ccnx, 
-//   uint32_t face)
-// {
-//   //
-//   // Since trace sources are independent of face, if we hook a source
-//   // on a particular protocol we will get traces for all of its faces.
-//   // We need to filter this to only report faces for which the user 
-//   // has expressed interest.
-//   //
-//   FacePairCcnx pair = std::make_pair (ccnx, face);
-//   if (g_faceStreamMapCcnx.find (pair) == g_faceStreamMapCcnx.end ())
-//     {
-//       NS_LOG_INFO ("Ignoring packet to/from face " << face);
-//       return;
-//     }
-
-//   *stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << *packet << std::endl;
-// }
-
-// static void
-// CcnxL3ProtocolDropSinkWithContext (
-//   Ptr<OutputStreamWrapper> stream,
-//   std::string context,
-//   Ptr<const Packet> packet,
-//   CcnxL3Protocol::DropReason reason, 
-//   Ptr<Ccnx> ccnx, 
-//   uint32_t face)
-// {
-//   //
-//   // Since trace sources are independent of face, if we hook a source
-//   // on a particular protocol we will get traces for all of its faces.
-//   // We need to filter this to only report faces for which the user 
-//   // has expressed interest.
-//   //
-//   FacePairCcnx pair = std::make_pair (ccnx, face);
-//   if (g_faceStreamMapCcnx.find (pair) == g_faceStreamMapCcnx.end ())
-//     {
-//       NS_LOG_INFO ("Ignoring packet to/from face " << face);
-//       return;
-//     }
-
-//   *stream->GetStream () << "d " << Simulator::Now ().GetSeconds () << " " << context << "(" << face << ") " 
-//                         << *packet << std::endl;
-// }
-
-// bool
-// CcnxStackHelper::AsciiHooked (Ptr<Ccnx> ccnx)
-// {
-//   for (  FaceStreamMapCcnx::const_iterator i = g_faceStreamMapCcnx.begin (); 
-//          i != g_faceStreamMapCcnx.end (); 
-//          ++i)
-//     {
-//       if ((*i).first.first == ccnx)
-//         {
-//           return true;
-//         }
-//     }
-//   return false;
-// }
-
-// void 
-// CcnxStackHelper::EnableAsciiCcnxInternal (
-//   Ptr<OutputStreamWrapper> stream, 
-//   std::string prefix, 
-//   Ptr<Ccnx> ccnx, 
-//   uint32_t face,
-//   bool explicitFilename)
-// {
-//   //
-//   // Our 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 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.
-//       //
-//       // We have to create a stream and a mapping from protocol/face to 
-//       // stream irrespective of how many times we want to trace a particular 
-//       // protocol.
-//       //
-//       AsciiTraceHelper asciiTraceHelper;
-
-//       std::string filename;
-//       if (explicitFilename)
-//         {
-//           filename = prefix;
-//         }
-//       else
-//         {
-//           filename = asciiTraceHelper.GetFilenameFromInterfacePair (prefix, ccnx, face);
-//         }
-
-//       Ptr<OutputStreamWrapper> theStream = asciiTraceHelper.CreateFileStream (filename);
-
-//       //
-//       // However, we only hook the trace sources once to avoid multiple trace sink
-//       // calls per event (connect is independent of face).
-//       //
-//       if (!AsciiHooked (ccnx))
-//         {
-//           //
-//           // The drop sink for the CcnxL3Protocol uses a different signature than
-//           // the default sink, so we have to cook one up for ourselves.  We can get
-//           // to the Ptr<CcnxL3Protocol> through our Ptr<Ccnx> since they must both 
-//           // be aggregated to the same node.
-//           //
-//           Ptr<CcnxL3Protocol> ccnxL3Protocol = ccnx->GetObject<CcnxL3Protocol> ();
-//           bool __attribute__ ((unused)) result = ccnxL3Protocol->TraceConnectWithoutContext ("Drop", 
-//                                                                                              MakeBoundCallback (&CcnxL3ProtocolDropSinkWithoutContext, theStream));
-//           NS_ASSERT_MSG (result == true, "CcnxStackHelper::EanableAsciiCcnxInternal():  "
-//                          "Unable to connect ccnxL3Protocol \"Drop\"");
-//         }
-
-//       g_faceStreamMapCcnx[std::make_pair (ccnx, face)] = 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.
-//   //
-//   // We need to associate the ccnx/face with a stream to express interest
-//   // in tracing events on that pair, however, we only hook the trace sources 
-//   // once to avoid multiple trace sink calls per event (connect is independent
-//   // of face).
-//   //
-//   if (!AsciiHooked (ccnx))
-//     {
-//       Ptr<Node> node = ccnx->GetObject<Node> ();
-//       std::ostringstream oss;
-
-//       //
-//       // This has all kinds of parameters coming with, so we have to cook up our
-//       // own sink.
-//       //
-//       oss.str ("");
-//       oss << "/NodeList/" << node->GetId () << "/$ns3::CcnxL3Protocol/Drop";
-//       Config::Connect (oss.str (), MakeBoundCallback (&CcnxL3ProtocolDropSinkWithContext, stream));
-//     }
-
-//   g_faceStreamMapCcnx[std::make_pair (ccnx, face)] = stream;
-// }
 
 void
 CcnxStackHelper::InstallFakeGlobalRoutesImpl ()
@@ -596,9 +260,12 @@
 void
 CcnxStackHelper::InstallRouteTo (Ptr<Node> destNode)
 {
-  std::ostringstream destPrefix;
-  destPrefix << "/" << destNode->GetId ();
+  InstallRouteTo (boost::lexical_cast<std::string> (destNode->GetId ()), destNode);
+}
 
+void
+CcnxStackHelper::InstallRouteTo (const std::string &prefix, Ptr<Node> destNode)
+{
   Ipv4Address destIpv4 = Ipv4Address(destNode->GetId ());
   
   for (NodeList::Iterator node = NodeList::Begin ();
@@ -631,7 +298,7 @@
           Ptr<CcnxFace> face = ccnx->GetFaceByNetDevice (netDevice);
           NS_ASSERT_MSG (face != 0, "Definitely should never happen. Call the president");
             
-          AddRoute (*node, destPrefix.str(), face, entry.GetMetric ());
+          AddRoute (*node, prefix, face, entry.GetMetric ());
         }
     }
 }
diff --git a/helper/ccnx-stack-helper.h b/helper/ccnx-stack-helper.h
index b4cdbc6..6cd3745 100644
--- a/helper/ccnx-stack-helper.h
+++ b/helper/ccnx-stack-helper.h
@@ -151,8 +151,8 @@
    * \param faceId Face index
    * \param metric Routing metric
    */
-  void
-  AddRoute (std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric) const;
+  static void
+  AddRoute (std::string nodeName, std::string prefix, uint32_t faceId, int32_t metric);
 
   /**
    * \brief Add forwarding entry in FIB
@@ -162,8 +162,8 @@
    * \param face   Face
    * \param metric Routing metric
    */
-  void
-  AddRoute (Ptr<Node> node, std::string prefix, Ptr<CcnxFace> face, int32_t metric) const;
+  static void
+  AddRoute (Ptr<Node> node, std::string prefix, Ptr<CcnxFace> face, int32_t metric);
 
   /**
    * \brief Set flag indicating necessity to install default routes in FIB
@@ -177,28 +177,36 @@
    * This method adds fake routes to all nodes, where each route is /32 and IPv4 address equal to node number.
    * For example, node 5 will have direct route to 0.0.0.5.
    */
-  void
+  static void
   InstallFakeGlobalRoutes ();
 
-  void
+  static void
   InstallFakeGlobalRoutesImpl ();
   
   /**
-   * \brief Installs CCNx route to `node` based on fake IPv4 routes
+   * \brief Install CCNx route to `node` based on fake IPv4 routes
    *
    * Actual route is "/<nodeId>"
    *
    * \param node Pointer to a node, which should be reached from all other nodes
    */
-  void
+  static void
   InstallRouteTo (Ptr<Node> node);
 
   /**
-   * \brief Installs CCNx route to all nodes based on fake IPv4 routes
+   * \brief Install CCNx route to /prefix which is installed on `node'
+   *
+   * Normally, prefix is  /<node->GetId()>.  Other values may be used in black-holing scenarios
+   */
+  static void
+  InstallRouteTo (const std::string &prefix, Ptr<Node> node);
+
+  /**
+   * \brief Install CCNx route to all nodes based on fake IPv4 routes
    *
    * \see InstallRouteTo
    */
-  void
+  static void
   InstallRoutesToAll ();
 
 private:
diff --git a/helper/ccnx-trace-helper.cc b/helper/ccnx-trace-helper.cc
index 1742462..a153862 100644
--- a/helper/ccnx-trace-helper.cc
+++ b/helper/ccnx-trace-helper.cc
@@ -31,6 +31,8 @@
 #include "ns3/object-vector.h"
 #include "ns3/simulator.h"
 #include "ns3/names.h"
+#include "ns3/tcp-l4-protocol.h"
+#include "ns3/node.h"
 
 #include <boost/ref.hpp>
 #include <boost/lexical_cast.hpp>
@@ -39,7 +41,10 @@
 #include "tracers/ccnx-aggregate-l3-tracer.h"
 #include "tracers/ccnx-rate-l3-tracer.h"
 #include "tracers/ccnx-seqs-app-tracer.h"
+#include "tracers/ipv4-rate-l3-tracer.h"
 #include "tracers/ipv4-seqs-app-tracer.h"
+#include "tracers/ccnx-consumer-window-tracer.h"
+#include "tracers/ccnx-path-weight-tracer.h"
 
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/ccnx-content-object-header.h"
@@ -56,7 +61,11 @@
 CcnxTraceHelper::CcnxTraceHelper ()
   : m_l3RateTrace (0)
   , m_appSeqsTrace (0)
+  , m_ipv4RateTrace (0)
   , m_ipv4AppSeqsTrace (0)
+  , m_windowsTrace (0)
+  , m_windowsTcpTrace (0)
+  , m_pathWeightsTrace (0)
 {
 }
 
@@ -66,6 +75,10 @@
   if (m_l3RateTrace != 0) delete m_l3RateTrace;
   if (m_appSeqsTrace != 0) delete m_appSeqsTrace;
   if (m_ipv4AppSeqsTrace != 0) delete m_ipv4AppSeqsTrace;
+  if (m_windowsTrace != 0) delete m_windowsTrace;
+  if (m_windowsTcpTrace != 0) delete m_windowsTcpTrace;
+  if (m_pathWeightsTrace != 0) delete m_pathWeightsTrace;
+  if (m_ipv4RateTrace != 0) delete m_ipv4RateTrace;
   
   if (m_apps.size () > 0)
     {
@@ -193,7 +206,7 @@
       NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
 
       Ptr<CcnxRateL3Tracer> trace = Create<CcnxRateL3Tracer> (boost::ref(*m_l3RateTrace), *node);
-      trace->SetAveragingPeriod (Seconds (0.5));
+      trace->SetAveragingPeriod (Seconds (0.2));
       m_l3Rates.push_back (trace);
     }
 
@@ -206,6 +219,32 @@
 }
 
 void
+CcnxTraceHelper::EnableIpv4RateL3All (const std::string &file)
+{
+  NS_LOG_FUNCTION (this);
+  m_ipv4RateTrace = new ofstream (file.c_str (), ios::trunc);
+
+  for (NodeList::Iterator node = NodeList::Begin ();
+       node != NodeList::End ();
+       node++)
+    {
+      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
+
+      Ptr<Ipv4RateL3Tracer> trace = Create<Ipv4RateL3Tracer> (boost::ref(*m_ipv4RateTrace), *node);
+      trace->SetAveragingPeriod (Seconds (0.2));
+      m_ipv4Rates.push_back (trace);
+    }
+
+  if (m_ipv4Rates.size () > 0)
+    {
+      // *m_ipv4RateTrace << "# "; // not necessary for R's read.table
+      m_ipv4Rates.front ()->PrintHeader (*m_ipv4RateTrace);
+      *m_ipv4RateTrace << "\n";
+    }
+}
+
+
+void
 CcnxTraceHelper::EnableSeqsAppAll (const std::string &appName, const std::string &trace)
 {
   NS_LOG_FUNCTION (this);
@@ -286,5 +325,91 @@
     }
 }
 
+void
+CcnxTraceHelper::EnableWindowsAll (const std::string &windowTrace)
+{
+  NS_LOG_FUNCTION (this);
+  m_windowsTrace = new ofstream (windowTrace.c_str (), ios::trunc);
+
+  for (NodeList::Iterator node = NodeList::Begin ();
+       node != NodeList::End ();
+       node++)
+    {
+      ObjectVectorValue apps;
+      (*node)->GetAttribute ("ApplicationList", apps);
+
+      NS_LOG_DEBUG ("Node: " << lexical_cast<string> ((*node)->GetId ()));
+      
+      uint32_t appId = 0;
+      for (ObjectVectorValue::Iterator app = apps.Begin ();
+           app != apps.End ();
+           app++, appId++)
+        {
+          if ((*app)->GetInstanceTypeId ().GetName () == "ns3::CcnxConsumerWindow")
+            {
+              Ptr<CcnxConsumerWindowTracer> trace = Create<CcnxConsumerWindowTracer> (boost::ref(*m_windowsTrace),
+                                                                                      *node,
+                                                                                      lexical_cast<string> (appId));
+              m_windows.push_back (trace);
+            }
+        }
+      
+    }
+
+  if (m_windows.size () > 0)
+    {
+      m_windows.front ()->PrintHeader (*m_windowsTrace);
+      *m_windowsTrace << "\n";
+    }
+}
+
+void
+CcnxTraceHelper::TcpConnect (Ptr<Node> node)
+{
+  ObjectVectorValue sockets;
+  node->GetObject<TcpL4Protocol> ()->GetAttribute ("SocketList", sockets);
+  
+  uint32_t sockId = 0;      
+  for (ObjectVectorValue::Iterator socket = sockets.Begin ();
+       socket != sockets.End ();
+       socket++, sockId++)
+    {
+      // std::cout << "Node: " << node->GetId () << ", Socket " << sockId << "\n";
+          
+      Ptr<TcpCongestionWindowTracer> trace = Create<TcpCongestionWindowTracer> (boost::ref(*m_windowsTcpTrace),
+                                                                                node,
+                                                                                lexical_cast<string> (sockId));
+      m_windowsTcp.push_back (trace);
+    }
+}
+
+void
+CcnxTraceHelper::EnableWindowsTcpAll (const std::string &windowTrace)
+{
+  NS_LOG_FUNCTION (this);
+  m_windowsTcpTrace = new ofstream (windowTrace.c_str (), ios::trunc);
+
+  WindowTracer::PrintHeader (*m_windowsTcpTrace);
+  *m_windowsTcpTrace << "\n";
+}
+
+void
+CcnxTraceHelper::EnablePathWeights (const std::string &pathWeights)
+{
+  NS_LOG_FUNCTION (this);
+  m_pathWeightsTrace = new ofstream (pathWeights.c_str (), ios::trunc);
+
+  CcnxPathWeightTracer::PrintHeader (*m_pathWeightsTrace);
+  *m_pathWeightsTrace << "\n";
+
+  for (NodeList::Iterator node = NodeList::Begin ();
+       node != NodeList::End ();
+       node++)
+    {
+      Ptr<CcnxPathWeightTracer> trace = Create<CcnxPathWeightTracer> (boost::ref(*m_pathWeightsTrace),
+                                                                      *node);
+      m_pathWeights.push_back (trace);
+    }
+}
 
 } // namespace ns3
diff --git a/helper/ccnx-trace-helper.h b/helper/ccnx-trace-helper.h
index 4079f9c..aa9cd30 100644
--- a/helper/ccnx-trace-helper.h
+++ b/helper/ccnx-trace-helper.h
@@ -28,9 +28,14 @@
 
 namespace ns3 {
 
+class Node;
 class CcnxAppTracer;
 class CcnxL3Tracer;
+class Ipv4L3Tracer;
 class Ipv4AppTracer;
+class WindowTracer;
+class CcnxPathWeightTracer;
+class Application;
 
 class CcnxTraceHelper
 {
@@ -93,7 +98,38 @@
    */
   void
   EnableIpv4SeqsAppAll (const std::string &appSeqsTrace = "app-seqs.log");
-  
+
+  /**
+   * @brief Enable network-level IPv4 rate tracing on all IPv4-enabled nodes
+   */
+  void
+  EnableIpv4RateL3All (const std::string &ipv4RateTrace = "ipv4-rate.log");
+
+  /**
+   * @brief Enable tracing of window changes in CcnxConsumerWindow
+   */
+  void
+  EnableWindowsAll (const std::string &windowTrace = "windows.log");
+
+  /**
+   * @brief Enable tracing of congestion window changes in TcpNewReno
+   */
+  void
+  EnableWindowsTcpAll (const std::string &windowTrace);
+
+  /**
+   * @brief Should be called with node pointer after TCP application
+   *
+   * Workaround because NS-3 needs object to exist before connecting trace
+   */
+  void TcpConnect (Ptr<Node> node);
+
+  /**
+   * @brief Enable tracing of path weights
+   */
+  void
+  EnablePathWeights (const std::string &pathWeights);
+
 private:
   std::string m_appTrace;
   std::list<Ptr<CcnxAppTracer> > m_apps;
@@ -107,8 +143,20 @@
   std::list<Ptr<CcnxAppTracer> > m_appSeqs;
   std::ostream *m_appSeqsTrace;
 
+  std::list<Ptr<Ipv4L3Tracer> > m_ipv4Rates;
+  std::ostream *m_ipv4RateTrace;
+
   std::list<Ptr<Ipv4AppTracer> > m_ipv4AppSeqs;
   std::ostream *m_ipv4AppSeqsTrace;
+
+  std::list<Ptr<WindowTracer> > m_windows;
+  std::ostream *m_windowsTrace;
+
+  std::list<Ptr<WindowTracer> > m_windowsTcp;
+  std::ostream *m_windowsTcpTrace;
+
+  std::list<Ptr<CcnxPathWeightTracer> > m_pathWeights;
+  std::ostream *m_pathWeightsTrace;
 };
 
 
diff --git a/helper/tracers/ccnx-consumer-window-tracer.cc b/helper/tracers/ccnx-consumer-window-tracer.cc
new file mode 100644
index 0000000..eea664a
--- /dev/null
+++ b/helper/tracers/ccnx-consumer-window-tracer.cc
@@ -0,0 +1,88 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ccnx-consumer-window-tracer.h"
+#include "ns3/node.h"
+#include "ns3/packet.h"
+#include "ns3/config.h"
+#include "ns3/callback.h"
+#include "ns3/names.h"
+#include "ns3/simulator.h"
+
+#include <boost/lexical_cast.hpp>
+
+using namespace std;
+using namespace boost;
+
+namespace ns3 {
+
+void
+CcnxConsumerWindowTracer::Connect ()
+{
+  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/"+m_appId+"/$ns3::CcnxConsumerWindow/WindowTrace",
+                   MakeCallback (&WindowTracer::OnWindowChange, this));
+}
+
+void
+TcpCongestionWindowTracer::Connect ()
+{
+  Config::Connect ("/NodeList/"+m_node+"/$ns3::TcpL4Protocol/SocketList/*/CongestionWindow",
+                   MakeCallback (&WindowTracer::OnWindowChange, this));
+}
+
+
+WindowTracer::WindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId)
+  : m_appId (appId)
+  , m_nodePtr (node)
+  , m_os (os)
+{
+  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
+
+  string name = Names::FindName (node);
+  if (!name.empty ())
+    {
+      m_nodeName = name;
+    }
+  else
+    m_nodeName = m_node;
+}
+
+
+void
+WindowTracer::PrintHeader (std::ostream &os)
+{
+  os << "Time\t"
+     << "Node\t"
+     << "AppId\t"
+     << "Window";
+}
+
+void
+WindowTracer::OnWindowChange (std::string context,
+                              uint32_t oldValue, uint32_t newValue)
+{
+  m_os                                                             
+    << Simulator::Now ().ToDouble (Time::S) << "\t"                   
+    << m_nodeName << "\t"                                                 
+    << m_appId << "\t"
+    << newValue << endl;
+}
+
+} // namespace ns3
diff --git a/helper/tracers/ccnx-consumer-window-tracer.h b/helper/tracers/ccnx-consumer-window-tracer.h
new file mode 100644
index 0000000..c538931
--- /dev/null
+++ b/helper/tracers/ccnx-consumer-window-tracer.h
@@ -0,0 +1,77 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2012 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef CCNX_CONSUMER_WINDOW_TRACER_H
+#define CCNX_CONSUMER_WINDOW_TRACER_H
+
+#include "ns3/ptr.h"
+#include "ns3/simple-ref-count.h"
+
+namespace ns3 {
+
+class Node;
+
+class WindowTracer : public SimpleRefCount<WindowTracer>
+{
+public:
+  WindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*");
+  virtual ~WindowTracer () { };
+                
+  static void
+  PrintHeader (std::ostream &os);
+  
+  virtual void
+  OnWindowChange (std::string context,
+                  uint32_t oldValue, uint32_t newValue);
+
+protected:
+  std::string m_appId;
+  std::string m_node;
+  std::string m_nodeName;
+  Ptr<Node> m_nodePtr;
+  std::ostream& m_os;
+};
+
+class CcnxConsumerWindowTracer : public WindowTracer
+{
+public:
+  CcnxConsumerWindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*")
+    : WindowTracer (os, node, appId)
+  { Connect (); }
+
+  void
+  Connect ();
+};
+
+class TcpCongestionWindowTracer : public WindowTracer
+{
+public:
+  TcpCongestionWindowTracer (std::ostream &os, Ptr<Node> node, const std::string &appId = "*")
+    : WindowTracer (os, node, appId)
+  { Connect (); }
+
+  void
+  Connect ();
+};
+
+
+} // namespace ns3
+
+#endif // CCNX_CONSUMER_WINDOW_TRACER_H
diff --git a/helper/tracers/ccnx-path-weight-tracer.cc b/helper/tracers/ccnx-path-weight-tracer.cc
new file mode 100644
index 0000000..b2685bd
--- /dev/null
+++ b/helper/tracers/ccnx-path-weight-tracer.cc
@@ -0,0 +1,91 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ccnx-path-weight-tracer.h"
+#include "ns3/node.h"
+#include "ns3/packet.h"
+#include "ns3/config.h"
+#include "ns3/names.h"
+#include "ns3/callback.h"
+#include "ns3/ccnx-app.h"
+#include "ns3/ccnx-face.h"
+#include "ns3/boolean.h"
+#include "ns3/simulator.h"
+
+#include <boost/lexical_cast.hpp>
+#include <boost/foreach.hpp>
+
+using namespace std;
+
+namespace ns3 {
+    
+CcnxPathWeightTracer::CcnxPathWeightTracer (std::ostream &os, Ptr<Node> node)
+  : m_os (os)
+  , m_nodePtr (node)
+{
+  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
+
+  Connect ();
+
+  string name = Names::FindName (node);
+  if (!name.empty ())
+    {
+      m_node = name;
+    }
+}
+
+void
+CcnxPathWeightTracer::Connect ()
+{
+  Config::Set ("/NodeList/"+m_node+"/$ns3::CcnxL3Protocol/FaceList/*/MetricTagging",
+               BooleanValue (true));
+
+  Config::Connect ("/NodeList/"+m_node+"/ApplicationList/*/PathWeightsTrace",
+                   MakeCallback (&CcnxPathWeightTracer::InLocalFace, this));
+}
+
+void
+CcnxPathWeightTracer::PrintHeader (std::ostream &os)
+{
+  os << "Time\t"
+     << "Src\t"
+     << "Dst\t"
+     << "SeqNo\t"
+     << "Weight";
+}
+
+void
+CcnxPathWeightTracer::InLocalFace (std::string context,
+                                   Ptr<Node> src, Ptr<Node> dst, uint32_t seqno, uint32_t weight)
+{
+  std::string srcName = Names::FindName (src);
+  std::string dstName = Names::FindName (dst);
+  if (srcName == "") srcName = boost::lexical_cast<std::string> (src->GetId ());
+  if (dstName == "") srcName = boost::lexical_cast<std::string> (dst->GetId ());
+  // std::cout << "Path weights from " << Names::FindName (src) << " to "<< Names::FindName (dst) <<" : " << weight << "\n";
+
+  m_os << Simulator::Now ().ToDouble (Time::S) << "\t"
+       << srcName << "\t"
+       << dstName << "\t"
+       << seqno << "\t"
+       << weight << "\n";
+}
+
+} // namespace ns3
diff --git a/helper/tracers/ccnx-path-weight-tracer.h b/helper/tracers/ccnx-path-weight-tracer.h
new file mode 100644
index 0000000..f4bd187
--- /dev/null
+++ b/helper/tracers/ccnx-path-weight-tracer.h
@@ -0,0 +1,62 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef CCNX_PATH_WEIGHT_TRACER_H
+#define CCNX_PATH_WEIGHT_TRACER_H
+
+#include "ns3/ptr.h"
+#include "ns3/simple-ref-count.h"
+#include "ns3/ccnx-path-stretch-tag.h"
+#include <list>
+
+namespace ns3 {
+
+class Node;
+class Packet;
+class CcnxApp;
+
+class CcnxPathWeightTracer : public SimpleRefCount<CcnxPathWeightTracer>
+{
+public:
+  CcnxPathWeightTracer (std::ostream &os, Ptr<Node> node);
+  virtual ~CcnxPathWeightTracer () { };
+
+  void
+  Connect ();
+  
+  static void
+  PrintHeader (std::ostream &os);
+
+  /**
+   * \brief Process packet weight upon reception of packet on a local face
+   */
+  virtual void
+  InLocalFace (std::string context,
+               Ptr<Node> src, Ptr<Node> dst, uint32_t seqno, uint32_t weight);
+
+protected:
+  std::ostream &m_os;
+  std::string m_node;
+  Ptr<Node> m_nodePtr;
+};
+
+} // namespace ns3
+
+#endif // CCNX_PATH_WEIGHT_TRACER_H
diff --git a/helper/tracers/ipv4-l3-tracer.cc b/helper/tracers/ipv4-l3-tracer.cc
new file mode 100644
index 0000000..ed2cb9c
--- /dev/null
+++ b/helper/tracers/ipv4-l3-tracer.cc
@@ -0,0 +1,61 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ipv4-l3-tracer.h"
+#include "ns3/node.h"
+#include "ns3/packet.h"
+#include "ns3/config.h"
+#include "ns3/names.h"
+#include "ns3/callback.h"
+#include "ns3/ccnx-app.h"
+#include "ns3/ccnx-face.h"
+
+#include <boost/lexical_cast.hpp>
+
+using namespace std;
+
+namespace ns3 {
+    
+Ipv4L3Tracer::Ipv4L3Tracer (Ptr<Node> node)
+: m_nodePtr (node)
+{
+  m_node = boost::lexical_cast<string> (m_nodePtr->GetId ());
+
+  Connect ();
+
+  string name = Names::FindName (node);
+  if (!name.empty ())
+    {
+      m_node = name;
+    }
+}
+
+void
+Ipv4L3Tracer::Connect ()
+{
+  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Tx",
+                   MakeCallback (&Ipv4L3Tracer::Tx, this));
+  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Rx",
+                   MakeCallback (&Ipv4L3Tracer::Rx, this));
+  Config::Connect ("/NodeList/"+m_node+"/$ns3::Ipv4L3Protocol/Drop",
+                   MakeCallback (&Ipv4L3Tracer::Drop, this));
+}
+
+} // namespace ns3
diff --git a/helper/tracers/ipv4-l3-tracer.h b/helper/tracers/ipv4-l3-tracer.h
new file mode 100644
index 0000000..e5f3c74
--- /dev/null
+++ b/helper/tracers/ipv4-l3-tracer.h
@@ -0,0 +1,90 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef IPV4_L3_TRACER_H
+#define IPV4_L3_TRACER_H
+
+#include "ns3/ptr.h"
+#include "ns3/simple-ref-count.h"
+#include "ns3/ipv4-l3-protocol.h"
+
+namespace ns3 {
+
+class Node;
+
+class Ipv4L3Tracer : public SimpleRefCount<Ipv4L3Tracer>
+{
+public:
+  Ipv4L3Tracer (Ptr<Node> node);
+  virtual ~Ipv4L3Tracer () { };
+
+  void
+  Connect ();
+  
+  virtual void
+  PrintHeader (std::ostream &os) const = 0;
+
+  virtual void
+  Print (std::ostream &os) const = 0;
+  
+  virtual void
+  Rx  (std::string context,
+       Ptr<const Packet>, Ptr<Ipv4>,  uint32_t) = 0;
+
+  virtual void
+  Tx   (std::string context,
+        Ptr<const Packet>, Ptr<Ipv4>,  uint32_t) = 0;
+
+  virtual void
+  Drop (std::string context,
+        const Ipv4Header &, Ptr<const Packet>, Ipv4L3Protocol::DropReason, Ptr<Ipv4>, uint32_t) = 0;
+
+protected:
+  std::string m_node;
+  Ptr<Node> m_nodePtr;
+
+  struct Stats
+  {
+    void Reset ()
+    {
+      m_in = 0;
+      m_out = 0;
+      m_drop = 0;
+    }
+    
+    uint64_t m_in;
+    uint64_t m_out;
+    uint64_t m_drop;
+  };
+};
+
+inline std::ostream&
+operator << (std::ostream &os, const Ipv4L3Tracer &tracer)
+{
+  os << "# ";
+  tracer.PrintHeader (os);
+  os << "\n";
+  tracer.Print (os);
+  return os;
+}
+
+} // namespace ns3
+
+#endif // IPV4_L3_TRACER_H
diff --git a/helper/tracers/ipv4-rate-l3-tracer.cc b/helper/tracers/ipv4-rate-l3-tracer.cc
new file mode 100644
index 0000000..e97ba18
--- /dev/null
+++ b/helper/tracers/ipv4-rate-l3-tracer.cc
@@ -0,0 +1,142 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ipv4-rate-l3-tracer.h"
+#include "ns3/node.h"
+#include "ns3/packet.h"
+#include "ns3/config.h"
+#include "ns3/callback.h"
+#include "ns3/simulator.h"
+
+#include "ns3/ipv4-header.h"
+
+namespace ns3 {
+    
+Ipv4RateL3Tracer::Ipv4RateL3Tracer (std::ostream &os, Ptr<Node> node)
+  : Ipv4L3Tracer (node)
+  , m_os (os)
+{
+  SetAveragingPeriod (Seconds (1.0));
+}
+
+Ipv4RateL3Tracer::~Ipv4RateL3Tracer ()
+{
+  m_printEvent.Cancel ();
+}
+
+void
+Ipv4RateL3Tracer::SetAveragingPeriod (const Time &period)
+{
+  m_period = period;
+  m_printEvent.Cancel ();
+  m_printEvent = Simulator::Schedule (m_period, &Ipv4RateL3Tracer::PeriodicPrinter, this);
+}
+
+void
+Ipv4RateL3Tracer::PeriodicPrinter ()
+{
+  Print (m_os);
+  Reset ();
+  
+  m_printEvent = Simulator::Schedule (m_period, &Ipv4RateL3Tracer::PeriodicPrinter, this);
+}
+
+void
+Ipv4RateL3Tracer::PrintHeader (std::ostream &os) const
+{
+  os << "Time" << "\t"
+
+     << "Node" << "\t"
+     << "Interface" << "\t"
+
+     << "Type" << "\t"
+     << "Packets" << "\t"
+     << "Kilobytes";
+}
+
+void
+Ipv4RateL3Tracer::Reset ()
+{
+  for (std::map<uint32_t, boost::tuple<Stats, Stats, Stats, Stats> >::iterator stats = m_stats.begin ();
+       stats != m_stats.end ();
+       stats++)
+    {
+      stats->second.get<0> ().Reset ();
+      stats->second.get<1> ().Reset ();
+    }
+}
+
+const double alpha = 0.8;
+
+#define STATS(INDEX) stats->second.get<INDEX> ()
+#define RATE(INDEX, fieldName) STATS(INDEX).fieldName / m_period.ToDouble (Time::S)
+
+#define PRINTER(printName, fieldName) \
+STATS(2).fieldName = /*new value*/alpha * RATE(0, fieldName) + /*old value*/(1-alpha) * STATS(2).fieldName; \
+STATS(3).fieldName = /*new value*/alpha * RATE(1, fieldName) / 1024.0 + /*old value*/(1-alpha) * STATS(3).fieldName; \
+                                                                        \
+os << time.ToDouble (Time::S) << "\t"                                   \
+ << m_node << "\t"                                                      \
+ << stats->first << "\t"                                      \
+ << printName << "\t"                                                   \
+ << STATS(2).fieldName  << "\t"                                        \
+ << STATS(3).fieldName << "\n";
+
+void
+Ipv4RateL3Tracer::Print (std::ostream &os) const
+{
+  for (std::map<uint32_t, boost::tuple<Stats, Stats, Stats, Stats> >::iterator stats = m_stats.begin ();
+       stats != m_stats.end ();
+       stats++)
+    {
+      Time time = Simulator::Now ();
+
+      PRINTER ("In",   m_in);
+      PRINTER ("Out",  m_out);
+      PRINTER ("Drop", m_drop);
+    }
+}
+
+void
+Ipv4RateL3Tracer::Rx  (std::string context,
+                       Ptr<const Packet> packet, Ptr<Ipv4> ipv4,  uint32_t iface)
+{
+  m_stats[iface].get<0> ().m_in ++;
+  m_stats[iface].get<1> ().m_in += packet->GetSize ();
+}
+
+void
+Ipv4RateL3Tracer::Tx   (std::string context,
+                        Ptr<const Packet> packet, Ptr<Ipv4> ipv4,  uint32_t iface)
+{
+  m_stats[iface].get<0> ().m_out ++;
+  m_stats[iface].get<1> ().m_out += packet->GetSize ();
+}
+
+void
+Ipv4RateL3Tracer::Drop (std::string context,
+                        const Ipv4Header &header, Ptr<const Packet> packet, Ipv4L3Protocol::DropReason, Ptr<Ipv4> ipv4, uint32_t iface)
+{
+  m_stats[iface].get<0> ().m_drop ++;
+  m_stats[iface].get<1> ().m_drop += packet->GetSize ();
+}
+
+
+} // namespace ns3
diff --git a/helper/tracers/ipv4-rate-l3-tracer.h b/helper/tracers/ipv4-rate-l3-tracer.h
new file mode 100644
index 0000000..454ac14
--- /dev/null
+++ b/helper/tracers/ipv4-rate-l3-tracer.h
@@ -0,0 +1,85 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 UCLA
+ *
+ * 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:  Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef IPV4_RATE_L3_TRACER_H
+#define IPV4_RATE_L3_TRACER_H
+
+#include "ipv4-l3-tracer.h"
+
+#include "ns3/nstime.h"
+#include "ns3/event-id.h"
+
+#include <boost/tuple/tuple.hpp>
+#include <map>
+
+namespace ns3 {
+
+/**
+ * @ingroup ccnx
+ * @brief CCNx network-layer rate tracer
+ */
+class Ipv4RateL3Tracer : public Ipv4L3Tracer
+{
+public:
+  /**
+   * @brief Network layer tracer constructor
+   */
+  Ipv4RateL3Tracer (std::ostream &os, Ptr<Node> node);
+  virtual ~Ipv4RateL3Tracer ();
+
+  void
+  SetAveragingPeriod (const Time &period);
+  
+  virtual void
+  PrintHeader (std::ostream &os) const;
+
+  virtual void
+  Print (std::ostream &os) const;
+
+  virtual void
+  Rx  (std::string context,
+       Ptr<const Packet>, Ptr<Ipv4>,  uint32_t);
+
+  virtual void
+  Tx   (std::string context,
+        Ptr<const Packet>, Ptr<Ipv4>,  uint32_t);
+
+  virtual void
+  Drop (std::string context,
+        const Ipv4Header &, Ptr<const Packet>, Ipv4L3Protocol::DropReason, Ptr<Ipv4>, uint32_t);
+
+private:
+  void
+  PeriodicPrinter ();
+  
+  void
+  Reset ();
+
+private:
+  std::ostream& m_os;
+  Time m_period;
+  EventId m_printEvent;
+
+  mutable std::map<uint32_t, boost::tuple<Stats, Stats, Stats, Stats> > m_stats;
+};
+
+} // namespace ns3
+
+#endif // IPV4_RATE_L3_TRACER_H
diff --git a/model/annotated-topology-reader.cc b/model/annotated-topology-reader.cc
index 194a90c..d6bbad1 100644
--- a/model/annotated-topology-reader.cc
+++ b/model/annotated-topology-reader.cc
@@ -37,6 +37,8 @@
 #include "ns3/pointer.h"
 #include "ns3/uinteger.h"
 #include "ns3/ipv4-address.h"
+#include "ns3/ccnx.h"
+#include "ns3/ccnx-face.h"
 
 #include "ns3/constant-position-mobility-model.h"
 
@@ -112,6 +114,11 @@
   return m_nodes;
 }
 
+const std::list<TopologyReader::Link>&
+AnnotatedTopologyReader::GetLinks () const
+{
+  return m_linksList;
+}
 
 NodeContainer
 AnnotatedTopologyReader::Read (void)
@@ -214,8 +221,6 @@
       base = Ipv4Address (base.Get () + 256);
       address.SetBase (base, Ipv4Mask ("/24"));
     }
-        
-  ApplyOspfMetric ();
 }
         
 void
@@ -228,22 +233,42 @@
         
       {
         Ptr<Ipv4> ipv4 = link.GetFromNode ()->GetObject<Ipv4> ();
-        NS_ASSERT (ipv4 != 0);
+        if (ipv4 != 0)
+          {
+            int32_t interfaceId = ipv4->GetInterfaceForDevice (link.GetFromNetDevice ());
+            NS_ASSERT (interfaceId >= 0);
         
-        int32_t interfaceId = ipv4->GetInterfaceForDevice (link.GetFromNetDevice ());
-        NS_ASSERT (interfaceId >= 0);
-        
-        ipv4->SetMetric (interfaceId,metric);
+            ipv4->SetMetric (interfaceId,metric);
+          }
+
+        Ptr<Ccnx> ccnx = link.GetFromNode ()->GetObject<Ccnx> ();
+        if (ccnx != 0)
+          {
+            Ptr<CcnxFace> face = ccnx->GetFaceByNetDevice (link.GetFromNetDevice ());
+            NS_ASSERT (face != 0);
+            
+            face->SetMetric (metric);
+          }
       }
         
       {
         Ptr<Ipv4> ipv4 = link.GetToNode ()->GetObject<Ipv4> ();
-        NS_ASSERT (ipv4 != 0);
-        
-        int32_t interfaceId = ipv4->GetInterfaceForDevice (link.GetToNetDevice ());
-        NS_ASSERT (interfaceId >= 0);
+        if (ipv4 != 0)
+          {
+            int32_t interfaceId = ipv4->GetInterfaceForDevice (link.GetToNetDevice ());
+            NS_ASSERT (interfaceId >= 0);
 
-        ipv4->SetMetric (interfaceId,metric);
+            ipv4->SetMetric (interfaceId,metric);
+          }
+        
+        Ptr<Ccnx> ccnx = link.GetToNode ()->GetObject<Ccnx> ();
+        if (ccnx != 0)
+          {
+            Ptr<CcnxFace> face = ccnx->GetFaceByNetDevice (link.GetToNetDevice ());
+            NS_ASSERT (face != 0);
+            
+            face->SetMetric (metric);
+          }
       }
     }
 }
@@ -290,4 +315,22 @@
     }
 }
 
+void
+AnnotatedTopologyReader::SavePositions (const std::string &file) const
+{
+  ofstream os (file.c_str (), ios::trunc);
+  os << "router\n";
+  
+  for (NodeContainer::Iterator node = m_nodes.Begin ();
+       node != m_nodes.End ();
+       node++)
+    {
+      std::string name = Names::FindName (*node);
+      Ptr<MobilityModel> mobility = (*node)->GetObject<MobilityModel> ();
+      Vector position = mobility->GetPosition ();
+
+      os << name << "\t" << "unknown" << "\t" << -position.y << "\t" << position.x << "\n";
+    }
+}
+
 }
diff --git a/model/annotated-topology-reader.h b/model/annotated-topology-reader.h
index b9268b8..95ce123 100644
--- a/model/annotated-topology-reader.h
+++ b/model/annotated-topology-reader.h
@@ -63,6 +63,12 @@
   GetNodes () const;
     
   /**
+   * \brief Get links read by the reader
+   */  
+  const std::list<Link>&
+  GetLinks () const;
+  
+  /**
    * \brief Assign IPv4 addresses to all links
    *
    * Note, IPv4 stack should be installed on all nodes prior this call
@@ -74,12 +80,34 @@
   void
   AssignIpv4Addresses (Ipv4Address base);
 
+  /**
+   * \brief Set bounding box where nodes will be randomly places (if positions are unspecified)
+   * \param ulx Upper left x coordinate
+   * \param uly Upper left y coordinate
+   * \param lrx Lower right x coordinate
+   * \param lry Lower right y coordinate
+   */
   void
   SetBoundingBox (double ulx, double uly, double lrx, double lry);
 
+  /**
+   * \brief Set mobility model to be used on nodes
+   * \param model class name of the model
+   */
   void
   SetMobilityModel (const std::string &model);
 
+  /**
+   * \brief Apply OSPF metric on Ipv4 (if exists) and Ccnx (if exists) stacks
+   */
+  void ApplyOspfMetric ();
+
+  /**
+   * \brief Save positions (e.g., after manual modification using visualizer)
+   */
+  void
+  SavePositions (const std::string &file) const;
+
 protected:
   Ptr<Node>
   CreateNode (const std::string name);
@@ -94,7 +122,6 @@
    * NodeContainer from Read method
    */
   void ApplySettings ();
-  void ApplyOspfMetric ();
     
 protected:
   std::string m_path;
diff --git a/model/batches.cc b/model/batches.cc
new file mode 100644
index 0000000..1dbccfa
--- /dev/null
+++ b/model/batches.cc
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011,2012 University of California, Los Angeles
+ *
+ * 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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#include "ns3/batches.h"
+
+namespace ns3 {
+
+ATTRIBUTE_HELPER_CPP (Batches);
+
+std::ostream &
+operator << (std::ostream &os, const Batches &batch)
+{
+  for (Batches::const_iterator i = batch.begin (); i != batch.end (); i++)
+    os << i->get<0> () << " " << i->get<1> () << " ";
+
+  return os;
+}
+
+/**
+ * \brief Read components from input and add them to components. Will read input stream till eof
+ * Substrings separated by slashes will become separate components
+ */
+std::istream &
+operator >> (std::istream &is, Batches &batch)
+{
+  Time time;
+  uint32_t amount;
+  while (!is.eof ())
+    {
+      is >> time >> amount;
+      batch.Add (time, amount);
+      // std::cout << time << ", " << amount << ". \n";
+    }
+  
+  is.clear ();
+  return is;
+}
+
+
+}
diff --git a/model/batches.h b/model/batches.h
new file mode 100644
index 0000000..d481a47
--- /dev/null
+++ b/model/batches.h
@@ -0,0 +1,58 @@
+/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011,2012 University of California, Los Angeles
+ *
+ * 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: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ */
+
+#ifndef _BATCHES_H_
+#define _BATCHES_H_
+
+#include "ns3/attribute.h"
+#include "ns3/attribute-helper.h"
+#include "ns3/nstime.h"
+#include <list>
+#include <boost/tuple/tuple.hpp>
+
+namespace ns3 {
+
+class Batches : public std::list<boost::tuple<Time, uint32_t> >
+{
+public:
+  Batches () { };
+
+  void
+  Add (const Time &when, uint32_t amount)
+  {
+    push_back (boost::make_tuple<Time, uint32_t> (when, amount));
+  }
+};
+
+ATTRIBUTE_HELPER_HEADER (Batches);
+
+std::ostream &
+operator << (std::ostream &os, const Batches &batch);
+
+/**
+ * \brief Read components from input and add them to components. Will read input stream till eof
+ * Substrings separated by slashes will become separate components
+ */
+std::istream &
+operator >> (std::istream &is, Batches &batch);
+
+} // namespace ns3
+
+#endif // _BATCHES_H_
diff --git a/model/ccnx-bestroute-strategy.cc b/model/ccnx-bestroute-strategy.cc
index 2bbe287..2f3057f 100644
--- a/model/ccnx-bestroute-strategy.cc
+++ b/model/ccnx-bestroute-strategy.cc
@@ -23,6 +23,7 @@
 #include "ccnx-interest-header.h"
 #include "ccnx-pit.h"
 #include "ccnx-pit-entry.h"
+#include "ccnx-path-stretch-tag.h"
 
 #include "ns3/assert.h"
 #include "ns3/log.h"
@@ -62,6 +63,8 @@
 {
   NS_LOG_FUNCTION (this);
 
+  
+
   // Try to work out with just green faces
   bool greenOk = PropagateInterestViaGreen (pitEntry, incomingFace, header, packet);
   if (greenOk)
@@ -99,7 +102,10 @@
       m_pit->modify (m_pit->iterator_to (pitEntry),
                      ll::bind(&CcnxPitEntry::AddOutgoing, ll::_1, metricFace.m_face));
 
-      metricFace.m_face->Send (packet->Copy ());
+      Ptr<Packet> packetToSend = packet->Copy ();
+
+      //transmission
+      metricFace.m_face->Send (packetToSend);
       m_transmittedInterestsTrace (header, metricFace.m_face);
       
       propagatedCount++;
diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
index 3c88e1c..78266fe 100644
--- a/model/ccnx-face.cc
+++ b/model/ccnx-face.cc
@@ -27,8 +27,11 @@
 #include "ns3/assert.h"
 #include "ns3/uinteger.h"
 #include "ns3/double.h"
+#include "ns3/boolean.h"
 #include "ns3/simulator.h"
 
+#include "ccnx-path-stretch-tag.h"
+
 #include <boost/ref.hpp>
 
 NS_LOG_COMPONENT_DEFINE ("CcnxFace");
@@ -56,6 +59,10 @@
                    MakeDoubleAccessor (&CcnxFace::m_bucketLeak),
                    MakeDoubleChecker<double> ())
                    
+    .AddAttribute ("MetricTagging", "Enable metric tagging (path-stretch calculation)",
+                   BooleanValue (false),
+                   MakeBooleanAccessor (&CcnxFace::m_enableMetricTagging),
+                   MakeBooleanChecker ())
     ;
   return tid;
 }
@@ -74,6 +81,8 @@
   , m_ifup (false)
   , m_id ((uint32_t)-1)
   , m_lastLeakTime (0)
+  , m_metric (0)
+  , m_enableMetricTagging (false)
 {
   NS_LOG_FUNCTION (this);
 
@@ -94,6 +103,12 @@
   return *this;
 }
 
+Ptr<Node>
+CcnxFace::GetNode () const
+{
+  return m_node;
+}
+
 void
 CcnxFace::RegisterProtocolHandler (ProtocolHandler handler)
 {
@@ -141,6 +156,24 @@
   if (!IsUp ())
     return false;
 
+  if (m_enableMetricTagging)
+    {
+      // update path information
+      Ptr<const WeightsPathStretchTag> origTag = packet->RemovePacketTag<WeightsPathStretchTag> ();
+      Ptr<WeightsPathStretchTag> tag;
+      if (origTag == 0)
+        {
+          tag = CreateObject<WeightsPathStretchTag> (); // create a new tag
+        }
+      else
+        {
+          tag = CreateObject<WeightsPathStretchTag> (*origTag); // will update existing tag
+        }
+
+      tag->AddPathInfo (m_node, GetMetric ());
+      packet->AddPacketTag (tag);
+    }
+  
   SendImpl (packet);
   return true;
 }
@@ -194,19 +227,19 @@
   m_bucketLeak = leak;
 }
 
-// void
-// CcnxFace::SetMetric (uint16_t metric)
-// {
-//   NS_LOG_FUNCTION (metric);
-//   m_metric = metric;
-// }
+void
+CcnxFace::SetMetric (uint16_t metric)
+{
+  NS_LOG_FUNCTION (metric);
+  m_metric = metric;
+}
 
-// uint16_t
-// CcnxFace::GetMetric (void) const
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-//   return m_metric;
-// }
+uint16_t
+CcnxFace::GetMetric (void) const
+{
+  NS_LOG_FUNCTION_NOARGS ();
+  return m_metric;
+}
 
 /**
  * These are face states and may be distinct from 
diff --git a/model/ccnx-face.h b/model/ccnx-face.h
index df488dc..e2100c6 100644
--- a/model/ccnx-face.h
+++ b/model/ccnx-face.h
@@ -67,6 +67,9 @@
   CcnxFace (Ptr<Node> node);
   virtual ~CcnxFace();
 
+  Ptr<Node>
+  GetNode () const;
+
   ////////////////////////////////////////////////////////////////////
   
   /**
@@ -108,19 +111,19 @@
   Receive (const Ptr<const Packet> &p);
   ////////////////////////////////////////////////////////////////////
 
-  // /**
-  //  * \Brief Assign routing/forwarding metric with face
-  //  *
-  //  * \param metric configured routing metric (cost) of this face
-  //  */
-  // virtual void SetMetric (uint16_t metric);
+  /**
+   * \Brief Assign routing/forwarding metric with face
+   *
+   * \param metric configured routing metric (cost) of this face
+   */
+  virtual void SetMetric (uint16_t metric);
 
-  // /**
-  //  * \brief Get routing/forwarding metric assigned to the face
-  //  *
-  //  * \returns configured routing/forwarding metric (cost) of this face
-  //  */
-  // virtual uint16_t GetMetric (void) const;
+  /**
+   * \brief Get routing/forwarding metric assigned to the face
+   *
+   * \returns configured routing/forwarding metric (cost) of this face
+   */
+  virtual uint16_t GetMetric (void) const;
 
   /**
    * These are face states and may be distinct from actual lower-layer
@@ -225,7 +228,10 @@
   ProtocolHandler m_protocolHandler; ///< Callback via which packets are getting send to CCNx stack
   bool m_ifup; ///< \brief flag indicating that the interface is UP 
   uint32_t m_id; ///< \brief id of the interface in CCNx stack (per-node uniqueness)
-  Time m_lastLeakTime; 
+  Time m_lastLeakTime;
+  uint32_t m_metric; ///< \brief metric of the face
+
+  bool m_enableMetricTagging; 
 };
 
 std::ostream& operator<< (std::ostream& os, const CcnxFace &face);
diff --git a/model/ccnx-fib.cc b/model/ccnx-fib.cc
index 24f236f..b068954 100644
--- a/model/ccnx-fib.cc
+++ b/model/ccnx-fib.cc
@@ -289,7 +289,7 @@
 {
   static const std::string statusString[] = {"","g","y","r"};
 
-  os << *metric.m_face << "(" << metric.m_routingCost << ","<< statusString [metric.m_status] << ")";
+  os << *metric.m_face << "(" << metric.m_routingCost << ","<< statusString [metric.m_status] << "," << metric.m_face->GetMetric () << ")";
   return os;
 }
 
diff --git a/model/ccnx-fib.h b/model/ccnx-fib.h
index f383961..318bc54 100644
--- a/model/ccnx-fib.h
+++ b/model/ccnx-fib.h
@@ -60,7 +60,7 @@
    * \param face Face for which metric
    * \param cost Initial value for routing cost
    */
-  CcnxFibFaceMetric (Ptr<CcnxFace> face, int cost)
+  CcnxFibFaceMetric (Ptr<CcnxFace> face, int32_t cost)
     : m_face (face)
     , m_status (NDN_FIB_YELLOW)
     , m_routingCost (cost)
diff --git a/model/ccnx-flooding-strategy.cc b/model/ccnx-flooding-strategy.cc
index 5b8542d..182381e 100644
--- a/model/ccnx-flooding-strategy.cc
+++ b/model/ccnx-flooding-strategy.cc
@@ -22,6 +22,7 @@
 #include "ccnx-interest-header.h"
 #include "ccnx-pit.h"
 #include "ccnx-pit-entry.h"
+#include "ccnx-path-stretch-tag.h"
 
 #include "ns3/assert.h"
 #include "ns3/log.h"
@@ -116,7 +117,10 @@
       //     NS_LOG_ERROR ("size: " << pitEntry.m_outgoing.size ());
       //   }
 
-      metricFace.m_face->Send (packet->Copy ());
+      Ptr<Packet> packetToSend = packet->Copy ();
+
+      //transmission
+      metricFace.m_face->Send (packetToSend);
       m_transmittedInterestsTrace (header, metricFace.m_face);
       
       propagatedCount++;
diff --git a/model/ccnx-forwarding-strategy.cc b/model/ccnx-forwarding-strategy.cc
index fbd4613..a856577 100644
--- a/model/ccnx-forwarding-strategy.cc
+++ b/model/ccnx-forwarding-strategy.cc
@@ -22,9 +22,9 @@
 #include "ns3/assert.h"
 
 #include "ccnx-forwarding-strategy.h"
+#include "ns3/ptr.h"
 #include "ns3/log.h"
 #include "ns3/simulator.h"
-#include "ns3/double.h"
 
 #include "ccnx-pit.h"
 #include "ccnx-pit-entry.h"
@@ -109,22 +109,18 @@
         }
 
       m_pit->modify (m_pit->iterator_to (pitEntry),
-                     ll::bind(&CcnxPitEntry::AddOutgoing, ll::_1, metricFace.m_face));
+                     ll::bind (&CcnxPitEntry::AddOutgoing, ll::_1, metricFace.m_face));
 
-      metricFace.m_face->Send (packet->Copy ());
+      Ptr<Packet> packetToSend = packet->Copy ();
+
+      //transmission
+      metricFace.m_face->Send (packetToSend);
       m_transmittedInterestsTrace (header, metricFace.m_face);
       
       propagatedCount++;
       break; // propagate only one interest
     }
 
-  // if (Simulator::GetContext ()==1)
-  //   {
-  //     if (propagatedCount > 0)
-  //       NS_LOG_DEBUG ("Propagate via a green face");
-  //     else 
-  //       NS_LOG_DEBUG ("Can't :(");
-  //   }
   return propagatedCount > 0;
 }
 
diff --git a/model/ccnx-forwarding-strategy.h b/model/ccnx-forwarding-strategy.h
index 23c15a5..ea9f692 100644
--- a/model/ccnx-forwarding-strategy.h
+++ b/model/ccnx-forwarding-strategy.h
@@ -32,6 +32,7 @@
 class CcnxInterestHeader;
 class CcnxPit;
 class CcnxPitEntry;
+class CcnxFibFaceMetric;
 
 /**
  * \ingroup ccnx
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 223c578..87c0881 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -75,12 +75,10 @@
                    MakePointerAccessor (&CcnxL3Protocol::SetForwardingStrategy, &CcnxL3Protocol::GetForwardingStrategy),
                    MakePointerChecker<CcnxForwardingStrategy> ())
     
-    // .AddAttribute ("BucketLeakInterval",
-    //                "Interval to leak buckets",
-    //                StringValue ("100ms"),
-    //                MakeTimeAccessor (&CcnxL3Protocol::GetBucketLeakInterval,
-    //                                  &CcnxL3Protocol::SetBucketLeakInterval),
-    //                MakeTimeChecker ())
+    .AddAttribute ("EnableNACKs", "Enabling support of NACKs",
+                   BooleanValue (true),
+                   MakeBooleanAccessor (&CcnxL3Protocol::m_nacksEnabled),
+                   MakeBooleanChecker ())
   ;
   return tid;
 }
@@ -410,14 +408,17 @@
        * Every time interest is satisfied, PIT entry (with empty incoming and outgoing faces)
        * is kept for another small chunk of time.
        */
-      
-      NS_LOG_DEBUG ("Sending NACK_LOOP");
-      header->SetNack (CcnxInterestHeader::NACK_LOOP);
-      Ptr<Packet> nack = Create<Packet> ();
-      nack->AddHeader (*header);
 
-      incomingFace->Send (nack);
-      m_outNacks (header, incomingFace);
+      if (m_nacksEnabled)
+        {
+          NS_LOG_DEBUG ("Sending NACK_LOOP");
+          header->SetNack (CcnxInterestHeader::NACK_LOOP);
+          Ptr<Packet> nack = Create<Packet> ();
+          nack->AddHeader (*header);
+
+          incomingFace->Send (nack);
+          m_outNacks (header, incomingFace);
+        }
       
       return;
     }
@@ -610,16 +611,20 @@
 CcnxL3Protocol::GiveUpInterest (const CcnxPitEntry &pitEntry,
                                 Ptr<CcnxInterestHeader> header)
 {
-  Ptr<Packet> packet = Create<Packet> ();
-  header->SetNack (CcnxInterestHeader::NACK_GIVEUP_PIT);
-  packet->AddHeader (*header);
-
-  BOOST_FOREACH (const CcnxPitEntryIncomingFace &incoming, pitEntry.m_incoming)
+  if (m_nacksEnabled)
     {
-      incoming.m_face->Send (packet->Copy ());
+      Ptr<Packet> packet = Create<Packet> ();
+      header->SetNack (CcnxInterestHeader::NACK_GIVEUP_PIT);
+      packet->AddHeader (*header);
 
-      m_outNacks (header, incoming.m_face);
+      BOOST_FOREACH (const CcnxPitEntryIncomingFace &incoming, pitEntry.m_incoming)
+        {
+          incoming.m_face->Send (packet->Copy ());
+
+          m_outNacks (header, incoming.m_face);
+        }
     }
+  
   // All incoming interests cannot be satisfied. Remove them
   m_pit->modify (m_pit->iterator_to (pitEntry),
                  ll::bind (&CcnxPitEntry::ClearIncoming, ll::_1));
@@ -634,37 +639,4 @@
                            Simulator::Now () + m_pit->GetPitEntryPruningTimeout ()));
 }
 
-// void
-// CcnxL3Protocol::SetBucketLeakInterval (Time interval)
-// {
-//   m_bucketLeakInterval = interval;
-  
-//   if (m_bucketLeakEvent.IsRunning ())
-//     m_bucketLeakEvent.Cancel ();
-
-//   m_bucketLeakEvent = Simulator::Schedule (m_bucketLeakInterval,
-//                                            &CcnxL3Protocol::LeakBuckets, this);
-// }
-
-// Time
-// CcnxL3Protocol::GetBucketLeakInterval () const
-// {
-//   return m_bucketLeakInterval;
-// }
-
-// void 
-// CcnxL3Protocol::LeakBuckets ()
-// {
-//   // NS_LOG_FUNCTION (this);
-
-//   BOOST_FOREACH (const Ptr<CcnxFace> &face, m_faces)
-//     {
-//       face->LeakBucket (m_bucketLeakInterval);
-//     }
-
-//   m_bucketLeakEvent = Simulator::Schedule (m_bucketLeakInterval,
-//                                            &CcnxL3Protocol::LeakBuckets,
-//                                            this);
-// }
-
 } //namespace ns3
diff --git a/model/ccnx-l3-protocol.h b/model/ccnx-l3-protocol.h
index d3e1b44..1da29b7 100644
--- a/model/ccnx-l3-protocol.h
+++ b/model/ccnx-l3-protocol.h
@@ -207,6 +207,8 @@
   Ptr<CcnxPit> m_pit; ///< \brief PIT (pending interest table)
   Ptr<CcnxFib> m_fib; ///< \brief FIB  
   Ptr<CcnxContentStore> m_contentStore; ///< \brief Content store (for caching purposes only)
+
+  bool m_nacksEnabled;
   
   // Time    m_bucketLeakInterval;
   // EventId m_bucketLeakEvent;
diff --git a/model/ccnx-local-face.cc b/model/ccnx-local-face.cc
index 7b4413c..f3abba9 100644
--- a/model/ccnx-local-face.cc
+++ b/model/ccnx-local-face.cc
@@ -26,12 +26,14 @@
 #include "ns3/packet.h"
 #include "ns3/node.h"
 #include "ns3/assert.h"
+#include "ns3/simulator.h"
 
 #include "ns3/ccnx-header-helper.h"
 #include "ns3/ccnx-app.h"
 
 #include "ccnx-interest-header.h"
 #include "ccnx-content-object-header.h"
+#include "ccnx-path-stretch-tag.h"
 
 NS_LOG_COMPONENT_DEFINE ("CcnxLocalFace");
 
@@ -87,7 +89,7 @@
 
   m_app->RegisterProtocolHandler (MakeCallback (&CcnxFace::Receive, this));
 }
-    
+
 void
 CcnxLocalFace::SendImpl (Ptr<Packet> p)
 {
@@ -104,9 +106,9 @@
             p->RemoveHeader (*header);
 
             if (header->GetNack () > 0)
-              m_app->OnNack (header);
+              m_app->OnNack (header, p);
             else
-              m_app->OnInterest (header);
+              m_app->OnInterest (header, p);
           
             break;
           }
diff --git a/model/ccnx-local-face.h b/model/ccnx-local-face.h
index 63458f2..327199d 100644
--- a/model/ccnx-local-face.h
+++ b/model/ccnx-local-face.h
@@ -23,6 +23,7 @@
 #define CCNX_LOCAL_FACE_H
 
 #include "ccnx-face.h"
+#include "ns3/traced-callback.h"
 
 namespace ns3 
 {
diff --git a/model/ccnx-path-stretch-tag.cc b/model/ccnx-path-stretch-tag.cc
new file mode 100644
index 0000000..31adca1
--- /dev/null
+++ b/model/ccnx-path-stretch-tag.cc
@@ -0,0 +1,119 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+ 
+#include "ccnx-path-stretch-tag.h"
+#include "ns3/node.h"
+#include "ns3/names.h"
+
+namespace ns3 {
+
+WeightsPathStretchTag::WeightsPathStretchTag ()
+{
+}
+
+void
+WeightsPathStretchTag::AddPathInfo (Ptr<Node> node, uint32_t weight)
+{
+  m_infos.push_back (NodeWeightPair (node, weight));
+}
+
+
+TypeId WeightsPathStretchTag::GetTypeId ()
+{
+  static TypeId tid = TypeId("ns3::WeightsPathStretchTag")
+    .SetParent<Tag>()
+    .AddConstructor<WeightsPathStretchTag>()
+    ;
+  return tid;
+}
+
+// TypeId
+// WeightsPathStretchTag::GetInstanceTypeId () const
+// {
+//   return GetTypeId ();
+// }
+
+uint64_t
+WeightsPathStretchTag::GetTotalWeight () const
+{
+  uint64_t total = 0;
+  for (std::list<NodeWeightPair>::const_iterator info = m_infos.begin (); info != m_infos.end (); info++)
+    {
+      total += info->weight;
+    }
+  return total;
+}
+
+Ptr<Node>
+WeightsPathStretchTag::GetSourceNode () const
+{
+  NS_ASSERT (m_infos.size () > 0);
+  return m_infos.front ().node;
+}
+
+Ptr<Node>
+WeightsPathStretchTag::GetDestinationNode () const
+{
+  NS_ASSERT (m_infos.size () > 0);
+  return m_infos.back ().node;
+}
+
+uint32_t WeightsPathStretchTag::GetSerializedSize (void) const
+{
+  return 0;
+  // return sizeof (GetPointer (m_value.node)) + sizeof (m_value.weight);
+}
+
+void WeightsPathStretchTag::Serialize (TagBuffer i) const
+{
+  NS_FATAL_ERROR ("Serialization is not supported for this tag");
+  // m_value.node->Ref ();
+  // i.WriteU64 (reinterpret_cast<uint64_t> (GetPointer (m_value.node)));
+  // i.WriteU32 (m_value.weight);
+}
+
+void WeightsPathStretchTag::Deserialize (TagBuffer i)
+{
+  NS_FATAL_ERROR ("Deserialization is not supported for this tag");
+  // m_value.node = Ptr<Node> (reinterpret_cast<Node*> (i.ReadU64 ()), false);
+  // m_value.weight = i.ReadU32 ();
+}
+
+void WeightsPathStretchTag::Print (std::ostream &os) const
+{
+  for (std::list<NodeWeightPair>::const_iterator info = m_infos.begin ();
+       info != m_infos.end ();
+       info ++)
+    {
+      if (info != m_infos.begin ()) os << ",";
+      NS_ASSERT (info->node != 0);
+
+      os << info->node->GetId () << "(" << Names::FindName (info->node) << ")";
+      // std::string name = Names::FindName (info->node);
+      // if (!name.empty ())
+      //   os << name;
+      // else
+      //   os << info->node->GetId ();
+      os << ":" << info->weight;
+    }
+}
+
+} // namespace ns3
+
diff --git a/model/ccnx-path-stretch-tag.h b/model/ccnx-path-stretch-tag.h
new file mode 100644
index 0000000..644871f
--- /dev/null
+++ b/model/ccnx-path-stretch-tag.h
@@ -0,0 +1,118 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * 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: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+ 
+#include "ns3/tag.h"
+ 
+#ifndef PATH_STRETCH_TAG_H
+#define PATH_STRETCH_TAG_H
+
+namespace ns3 {
+
+class Node;
+class Packet;
+
+//#define PATH_SPLICING_MAX_N_HOPS 38
+//#define PATH_SPLICING_MAX_SLICE_INDEX 16
+
+class WeightsPathStretchTag : public Tag
+{
+public:
+  struct NodeWeightPair
+  {
+    NodeWeightPair () : node (0), weight (0) { }
+    NodeWeightPair (Ptr<Node> _node, uint32_t _weight) : node (_node), weight (_weight) { }
+    
+    Ptr<Node> node;
+    uint32_t  weight;
+  };
+  
+  static TypeId
+  GetTypeId ();
+
+  WeightsPathStretchTag ();
+  virtual ~WeightsPathStretchTag () { };
+
+  void
+  AddPathInfo (Ptr<Node> node, uint32_t weight);
+
+  uint64_t
+  GetTotalWeight () const;
+
+  Ptr<Node>
+  GetSourceNode () const;
+
+  Ptr<Node>
+  GetDestinationNode () const;
+
+  const std::list<NodeWeightPair> &
+  GetInfos () const
+  { return m_infos; }
+
+  // from Tag
+  virtual uint32_t
+  GetSerializedSize (void) const;
+  
+  virtual void
+  Serialize (TagBuffer i) const;
+
+  virtual void
+  Deserialize (TagBuffer i);
+
+  virtual void
+  Print (std::ostream &os) const;
+  
+private:
+  std::list<NodeWeightPair> m_infos;
+};
+
+// class DelaysPathStretchTag : public Tag
+// {
+// public:
+//   DelaysPathStretchTag();
+
+//   static TypeId GetTypeId(void);
+//   virtual TypeId GetInstanceTypeId(void) const;
+
+//   virtual uint32_t GetSerializedSize(void) const;
+//   virtual void Serialize(TagBuffer i) const;
+//   virtual void Deserialize(TagBuffer i);
+//   virtual void Print(std::ostream &os) const;
+
+//   int GetNHops();
+//   void AddNewHop(double delay);
+//   int GetCurrentHop();
+//   void RemoveCurrentHop();
+//   //void RandomizeTags(UniformVariable &rand, uint32_t max);
+
+// private:
+//   //PathSplicingPathTag(const PathSplicingPathTag &o);
+//   //PathSplicingPathTag &operator = (const PathSplicingPathTag &o);
+
+//   //bool operator == (PathSplicingPathTag const &o) const;
+
+// private:
+//   std::list<double> m_delays;
+// };
+
+
+} // namespace ns3
+
+
+#endif /* PATH_STRETCH_TAG_H */
diff --git a/model/ccnx-pit.cc b/model/ccnx-pit.cc
index d9667cf..ca2c3f3 100644
--- a/model/ccnx-pit.cc
+++ b/model/ccnx-pit.cc
@@ -170,7 +170,7 @@
     {
       CcnxFibEntryContainer::type::iterator fibEntry = m_fib->LongestPrefixMatch (header);
       NS_ASSERT_MSG (fibEntry != m_fib->m_fib.end (),
-                     "There should be at least default route set");
+                     "There should be at least default route set" << " Prefix = "<<header.GetName() << "NodeID == " << m_fib->GetObject<Node>()->GetId() << "\n" << *m_fib);
 
       entry = insert (end (),
                       CcnxPitEntry (Create<CcnxNameComponents> (header.GetName ()),
diff --git a/model/rocketfuel-weights-reader.cc b/model/rocketfuel-weights-reader.cc
index 4681e4e..acd3235 100644
--- a/model/rocketfuel-weights-reader.cc
+++ b/model/rocketfuel-weights-reader.cc
@@ -177,22 +177,4 @@
   SpringMobilityHelper::InstallSprings (LinksBegin (), LinksEnd ());
 }
 
-void
-RocketfuelWeightsReader::SavePositions (const std::string &file) const
-{
-  ofstream os (file.c_str (), ios::trunc);
-  os << "router\n";
-  
-  for (NodeContainer::Iterator node = m_nodes.Begin ();
-       node != m_nodes.End ();
-       node++)
-    {
-      std::string name = Names::FindName (*node);
-      Ptr<MobilityModel> mobility = (*node)->GetObject<MobilityModel> ();
-      Vector position = mobility->GetPosition ();
-
-      os << name << "\t" << "unknown" << "\t" << -position.y << "\t" << position.x << "\n";
-    }
-}
-
 } /* namespace ns3 */
diff --git a/model/rocketfuel-weights-reader.h b/model/rocketfuel-weights-reader.h
index cf6a784..e93ca32 100644
--- a/model/rocketfuel-weights-reader.h
+++ b/model/rocketfuel-weights-reader.h
@@ -67,9 +67,6 @@
       LATENCIES,
       POSITIONS
     };
-
-  void
-  SavePositions (const std::string &file) const;
   
 private:
   RocketfuelWeightsReader (const RocketfuelWeightsReader&);
diff --git a/test/basic-regression-test.cc b/test/basic-regression-test.cc
index b4625bb..2edac36 100644
--- a/test/basic-regression-test.cc
+++ b/test/basic-regression-test.cc
@@ -86,59 +86,59 @@
     // -- Read topology data.
     // --------------------------------------------
     
-    string input = NS_TEST_SOURCEDIR;
-    input += "/testtopology.txt";
+    // string input = NS_TEST_SOURCEDIR;
+    // input += "/testtopology.txt";
     
-    Ptr<AnnotatedTopologyReader> reader = CreateObject<AnnotatedTopologyReader> ();
-    reader->SetFileName (input);
+    // Ptr<AnnotatedTopologyReader> reader = CreateObject<AnnotatedTopologyReader> ();
+    // reader->SetFileName (input);
     
-    NodeContainer nodes;
-    if (reader != 0)
-    {
-        nodes = reader->Read ();
-    }
-    else
-    {
-        NS_TEST_ASSERT_MSG_EQ (true, false, "file not found");
-    }
+    // NodeContainer nodes;
+    // if (reader != 0)
+    // {
+    //     nodes = reader->Read ();
+    // }
+    // else
+    // {
+    //     NS_TEST_ASSERT_MSG_EQ (true, false, "file not found");
+    // }
     
-    NS_TEST_ASSERT_MSG_EQ (7, reader->LinksSize (), "link count is wrong");
+    // NS_TEST_ASSERT_MSG_EQ (7, reader->LinksSize (), "link count is wrong");
     
     
-    // ------------------------------------------------------------
-    // -- Create nodes and network stacks
-    // --------------------------------------------
-    NS_LOG_INFO ("creating internet stack");
-    InternetStackHelper stack;
+    // // ------------------------------------------------------------
+    // // -- Create nodes and network stacks
+    // // --------------------------------------------
+    // NS_LOG_INFO ("creating internet stack");
+    // InternetStackHelper stack;
     
     
-    //routing
-    /*Ipv4StaticRoutingHelper staticRouting;
-    Ipv4ListRoutingHelper listRH;
-    listRH.Add (staticRouting, 0);
-    stack.SetRoutingHelper (listRH);  // has effect on the next Install ()
-    stack.Install (nodes);
+    // //routing
+    // /*Ipv4StaticRoutingHelper staticRouting;
+    // Ipv4ListRoutingHelper listRH;
+    // listRH.Add (staticRouting, 0);
+    // stack.SetRoutingHelper (listRH);  // has effect on the next Install ()
+    // stack.Install (nodes);
     
-    NS_LOG_INFO ("creating ip4 addresses");
-    Ipv4AddressHelper address;
-    address.SetBase ("10.0.0.0", "255.255.255.252");*/
+    // NS_LOG_INFO ("creating ip4 addresses");
+    // Ipv4AddressHelper address;
+    // address.SetBase ("10.0.0.0", "255.255.255.252");*/
     
-    int totlinks = reader->LinksSize ();
+    // int totlinks = reader->LinksSize ();
     
     
-    /// applying settings
-    NS_LOG_INFO ("creating node containers");
-    NodeContainer* nc = new NodeContainer[totlinks];
-    TopologyReader::ConstLinksIterator iter;
-    int i = 0;
-    for ( iter = reader->LinksBegin (); iter != reader->LinksEnd (); iter++, i++ )
-    {
-        nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
-    }
+    // /// applying settings
+    // NS_LOG_INFO ("creating node containers");
+    // NodeContainer* nc = new NodeContainer[totlinks];
+    // TopologyReader::ConstLinksIterator iter;
+    // int i = 0;
+    // for ( iter = reader->LinksBegin (); iter != reader->LinksEnd (); iter++, i++ )
+    // {
+    //     nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
+    // }
     
-    NetDeviceContainer* ndc = new NetDeviceContainer[totlinks];
-    reader->ApplySettings(ndc,nc);
-    /// settings applied
+    // NetDeviceContainer* ndc = new NetDeviceContainer[totlinks];
+    // reader->ApplySettings(ndc,nc);
+    // /// settings applied
     
     
     
diff --git a/test/content-object-test.cc b/test/content-object-test.cc
index eff1304..cbb5811 100644
--- a/test/content-object-test.cc
+++ b/test/content-object-test.cc
@@ -23,6 +23,7 @@
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/uinteger.h"
 #include "ns3/random-variable.h"
+#include "ns3/packet.h"
 #include <limits> 
 #include "ns3/ccnx-header-helper.h"
 #include "ns3/header.h"
diff --git a/test/interest-header-serialization-test.cc b/test/interest-header-serialization-test.cc
index 62d83a4..5c73bfc 100644
--- a/test/interest-header-serialization-test.cc
+++ b/test/interest-header-serialization-test.cc
@@ -30,6 +30,7 @@
 #include "ns3/nstime.h"
 #include "ns3/buffer.h"
 #include "ns3/log.h"
+#include "ns3/packet.h"
 
 #include <iostream>
 #include <fstream>
diff --git a/examples/packet-sizes.cc b/test/packet-sizes.cc
similarity index 100%
rename from examples/packet-sizes.cc
rename to test/packet-sizes.cc
diff --git a/utils/highway-position-allocator.cc b/utils/highway-position-allocator.cc
new file mode 100644
index 0000000..9ad52ba
--- /dev/null
+++ b/utils/highway-position-allocator.cc
@@ -0,0 +1,103 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 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: Lucas Wang <lucas@cs.ucla.edu>
+ */
+
+
+#include "highway-position-allocator.h"
+#include "ns3/random-variable.h"
+#include "ns3/log.h"
+#include "ns3/double.h"
+#include <math.h>
+
+NS_LOG_COMPONENT_DEFINE ("HighwayPositionAllocator");
+
+namespace ns3 {
+
+NS_OBJECT_ENSURE_REGISTERED (HighwayPositionAllocator);
+
+TypeId HighwayPositionAllocator::GetTypeId (void){
+  static TypeId tid = TypeId("ns3::HighwayPositionAllocator").
+    SetParent<PositionAllocator> ().
+    SetGroupName("Mobility").
+    AddConstructor<HighwayPositionAllocator>().
+    AddAttribute("Start", "the start position of the highway",
+		 VectorValue (Vector(0.0, 0.0, 0.0)),
+		 MakeVectorAccessor(&HighwayPositionAllocator::SetStartPosition,
+				    &HighwayPositionAllocator::GetStartPosition),
+                 MakeVectorChecker ()).
+    AddAttribute("Direction", "the direction of the highway",
+		 DoubleValue (0.0),
+		 MakeDoubleAccessor(&HighwayPositionAllocator::SetDirection,
+				    &HighwayPositionAllocator::GetDirection),
+                 MakeDoubleChecker<double> ()).
+    AddAttribute("Length", "the length of the highway",
+		 DoubleValue (0.0),
+		 MakeDoubleAccessor(&HighwayPositionAllocator::SetLength,
+				    &HighwayPositionAllocator::GetLength),
+                 MakeDoubleChecker<double> ());
+
+  return tid;
+}
+
+HighwayPositionAllocator::HighwayPositionAllocator (){
+  m_previous_position = Vector(0.0, 0.0, 0.0);
+}
+
+Vector HighwayPositionAllocator::GetNext (void) const{
+  UniformVariable random_gap_var (1.0, 10.0);
+  double random_gap = random_gap_var.GetValue();
+  
+  double delta_x = random_gap * cos(m_direction);
+  double delta_y = random_gap * sin(m_direction);
+  
+  
+  Vector new_position(m_previous_position.x - delta_x, m_previous_position.y - delta_y, m_previous_position.z);
+  m_previous_position.x = new_position.x;
+  m_previous_position.y = new_position.y;
+  m_previous_position.z = new_position.z;
+
+  return new_position;
+}
+
+void HighwayPositionAllocator::SetStartPosition(Vector start){
+  m_start = start;
+  m_previous_position = m_start; // initialize the m_previous_position to be start of the highway
+}
+
+Vector HighwayPositionAllocator::GetStartPosition(void) const {
+  return m_start;
+}
+
+void HighwayPositionAllocator::SetDirection(double direction){
+  m_direction = direction;
+}
+
+double HighwayPositionAllocator::GetDirection(void) const {
+  return m_direction;
+}
+
+void HighwayPositionAllocator::SetLength(double length){
+  m_length = length;
+}
+
+double HighwayPositionAllocator::GetLength(void) const {
+  return m_length;
+}
+
+}
diff --git a/utils/highway-position-allocator.h b/utils/highway-position-allocator.h
new file mode 100644
index 0000000..4028b4a
--- /dev/null
+++ b/utils/highway-position-allocator.h
@@ -0,0 +1,53 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 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: Lucas Wang <lucas@cs.ucla.edu>
+ */
+#ifndef HIGHWAY_POSITION_ALLOCATOR_H
+#define HIGHWAY_POSITION_ALLOCATOR_H
+
+#include "ns3/position-allocator.h"
+
+namespace ns3 {
+  
+/**
+ * This position allocator is used to generate positions for cars 
+ * on a highway.
+ */
+
+class HighwayPositionAllocator : public PositionAllocator
+{
+public:
+  static TypeId GetTypeId (void);
+  HighwayPositionAllocator ();
+  virtual Vector GetNext (void) const;
+  void SetStartPosition(Vector start);
+  Vector GetStartPosition(void) const;
+  void SetDirection(double direction); // the angle in terms of radian degrees
+  double GetDirection(void) const ;
+  void SetLength(double length);
+  double GetLength(void) const ;
+
+private:
+  mutable Vector m_previous_position; // previously generated vehicle position
+  Vector m_start; // highway starting point
+  double m_direction; //highway direction
+  double m_length; // highway length
+};
+}
+
+#endif
diff --git a/wscript b/wscript
index 80bc42c..2643c67 100644
--- a/wscript
+++ b/wscript
@@ -59,8 +59,11 @@
         "helper/ccnx-header-helper.h",
         "helper/ccnx-trace-helper.h",
         "helper/tracers/ipv4-app-tracer.h",
+        "helper/tracers/ipv4-l3-tracer.h",
         "helper/tracers/ccnx-app-tracer.h",
         "helper/tracers/ccnx-l3-tracer.h",
+        "helper/tracers/ccnx-consumer-window-tracer.h",
+        "helper/tracers/ccnx-path-weight-tracer.h",
         "helper/ccnx-face-container.h",
 
         "apps/ccnx-app.h",
@@ -72,6 +75,7 @@
         "model/ccnx-interest-header.h",
         "model/ccnx-content-object-header.h",
         "model/ccnx-name-components.h",
+        "model/ccnx-path-stretch-tag.h",
         "model/ccnx-fib.h",
 
         "utils/spring-mobility-model.h",
@@ -79,29 +83,22 @@
 
         "model/rocketfuel-weights-reader.h",
         "model/annotated-topology-reader.h",
+
+        "model/batches.h"
         ]
 
     tests.source = bld.path.ant_glob('test/*.cc');
 
     if True or bld.env['ENABLE_EXAMPLES']:
-        obj = bld.create_ns3_program('ccnx-test', ['NDNabstraction', 'internet'])
-        obj.source = 'examples/ccnx-test.cc'
-        
-        obj = bld.create_ns3_program('ccnx-routing-simple', ['NDNabstraction', 'point-to-point-layout'])
+        obj = bld.create_ns3_program('ccnx-routing-simple', ['NDNabstraction'])
         obj.source = 'examples/ccnx-routing-simple.cc'
         
-        obj = bld.create_ns3_program('ccnx-grid', ['NDNabstraction', 'point-to-point-layout'])
+        obj = bld.create_ns3_program('ccnx-grid', ['NDNabstraction'])
         obj.source = 'examples/ccnx-grid.cc'
 
-        obj = bld.create_ns3_program('annotated-topology', ['NDNabstraction', 'point-to-point-layout'])
+        obj = bld.create_ns3_program('annotated-topology', ['NDNabstraction'])
         obj.source = 'examples/annotated-topology-read-example.cc'
 
-        obj = bld.create_ns3_program('interest-header-example', ['NDNabstraction'])
-        obj.source = 'examples/interest-header-example.cc'
-
-        obj = bld.create_ns3_program('packet-sizes', ['NDNabstraction'])
-        obj.source = 'examples/packet-sizes.cc'
-
         obj = bld.create_ns3_program('ccnx-sprint-topology', ['NDNabstraction'])
         obj.source = 'examples/sprint-topology.cc'
 
@@ -114,8 +111,20 @@
         obj = bld.create_ns3_program('congestion-pop', ['NDNabstraction'])
         obj.source = 'examples/congestion-pop.cc'
 
-        obj = bld.create_ns3_program('congestion-tcp-pop', ['NDNabstraction'])
-        obj.source = 'examples/congestion-tcp-pop.cc'
+        obj = bld.create_ns3_program('link-failure', ['NDNabstraction'])
+        obj.source = 'examples/link-failure-sprint.cc'
+
+        obj = bld.create_ns3_program('link-failure-base', ['NDNabstraction'])
+        obj.source = 'examples/link-failure-base.cc'
+
+        obj = bld.create_ns3_program('blackhole-sprint', ['NDNabstraction'])
+        obj.source = 'examples/blackhole-sprint.cc'
+        
+        obj = bld.create_ns3_program('congestion-zoom', ['NDNabstraction'])
+        obj.source = 'examples/congestion-zoom.cc'
+
+        obj = bld.create_ns3_program('vanet-ccnx', ['NDNabstraction', 'highway-mobility'])
+        obj.source = 'examples/vanet-ccnx.cc'
 
         obj = bld.create_ns3_program('car2car-wifi', ['internet', 'applications', 'visualizer', 'NDNabstraction'])
         obj.source = 'examples/car2car-wifi.cc'