diff -ur misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp
--- misc/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2013-10-26 16:25:53.000000000 -0700
+++ misc/build/boost_1_55_0/boost/asio/ssl/impl/context.ipp	2016-03-23 01:11:12.425434000 -0700
@@ -87,6 +87,14 @@
     handle_ = ::SSL_CTX_new(::SSLv2_server_method());
     break;
 #endif // defined(OPENSSL_NO_SSL2)
+#if defined(OPENSSL_NO_SSL3)
+  case context::sslv3:
+  case context::sslv3_client:
+  case context::sslv3_server:
+    boost::asio::detail::throw_error(
+        boost::asio::error::invalid_argument, "context");
+    break;
+#else // defined(OPENSSL_NO_SSL3)
   case context::sslv3:
     handle_ = ::SSL_CTX_new(::SSLv3_method());
     break;
@@ -96,6 +104,7 @@
   case context::sslv3_server:
     handle_ = ::SSL_CTX_new(::SSLv3_server_method());
     break;
+#endif // defined(OPENSSL_NO_SSL3)
   case context::tlsv1:
     handle_ = ::SSL_CTX_new(::TLSv1_method());
     break;
diff -ur misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp
--- misc/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2013-05-20 05:32:20.000000000 -0700
+++ misc/build/boost_1_55_0/boost/asio/ssl/old/detail/openssl_context_service.hpp	2016-03-23 01:11:12.426497000 -0700
@@ -85,6 +85,13 @@
       impl = ::SSL_CTX_new(::SSLv2_server_method());
       break;
 #endif // defined(OPENSSL_NO_SSL2)
+#if defined(OPENSSL_NO_SSL3)
+    case context_base::sslv3:
+    case context_base::sslv3_client:
+    case context_base::sslv3_server:
+      boost::asio::detail::throw_error(boost::asio::error::invalid_argument);
+      break;
+#else // defined(OPENSSL_NO_SSL3)
     case context_base::sslv3:
       impl = ::SSL_CTX_new(::SSLv3_method());
       break;
@@ -94,6 +101,7 @@
     case context_base::sslv3_server:
       impl = ::SSL_CTX_new(::SSLv3_server_method());
       break;
+#endif // defined(OPENSSL_NO_SSL3)
     case context_base::tlsv1:
       impl = ::SSL_CTX_new(::TLSv1_method());
       break;
diff -ur misc/boost_1_55_0/boost/bind/arg.hpp misc/build/boost_1_55_0/boost/bind/arg.hpp
--- misc/boost_1_55_0/boost/bind/arg.hpp	2007-11-25 10:07:19.000000000 -0800
+++ misc/build/boost_1_55_0/boost/bind/arg.hpp	2016-03-23 01:11:12.421530000 -0700
@@ -33,8 +33,7 @@
 
     template< class T > arg( T const & /* t */ )
     {
-        // static assert I == is_placeholder<T>::value
-        typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
+        BOOST_STATIC_ASSERT( I == is_placeholder<T>::value );
     }
 };
 
diff -ur misc/boost_1_55_0/boost/concept/detail/general.hpp misc/build/boost_1_55_0/boost/concept/detail/general.hpp
--- misc/boost_1_55_0/boost/concept/detail/general.hpp	2010-06-08 12:31:13.000000000 -0700
+++ misc/build/boost_1_55_0/boost/concept/detail/general.hpp	2016-03-23 01:11:12.388374000 -0700
@@ -65,10 +65,19 @@
   
 # endif
 
+// Version check from https://svn.boost.org/trac/boost/changeset/82886
+// (boost/static_assert.hpp)
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
+#define BOOST_CONCEPT_UNUSED_TYPEDEF __attribute__((unused))
+#else
+#define BOOST_CONCEPT_UNUSED_TYPEDEF /**/
+#endif
+
 #  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
     typedef ::boost::concepts::detail::instantiate<          \
     &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
-      BOOST_PP_CAT(boost_concept_check,__LINE__)
+      BOOST_PP_CAT(boost_concept_check,__LINE__)             \
+      BOOST_CONCEPT_UNUSED_TYPEDEF
 
 }}
 
diff -ur misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp
--- misc/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2013-09-28 09:19:47.000000000 -0700
+++ misc/build/boost_1_55_0/boost/math/special_functions/fpclassify.hpp	2016-03-23 01:11:12.392773000 -0700
@@ -348,7 +348,7 @@
 { //!< \brief return true if floating-point type t is finite.
    typedef detail::fp_traits<long double>::type traits;
    typedef traits::method method;
-   typedef boost::is_floating_point<long double>::type fp_tag;
+   //typedef boost::is_floating_point<long double>::type fp_tag;
    typedef long double value_type;
    return detail::isfinite_impl(static_cast<value_type>(x), method());
 }
@@ -419,7 +419,7 @@
 {
    typedef detail::fp_traits<long double>::type traits;
    typedef traits::method method;
-   typedef boost::is_floating_point<long double>::type fp_tag;
+   //typedef boost::is_floating_point<long double>::type fp_tag;
    typedef long double value_type;
    return detail::isnormal_impl(static_cast<value_type>(x), method());
 }
@@ -508,7 +508,7 @@
 {
    typedef detail::fp_traits<long double>::type traits;
    typedef traits::method method;
-   typedef boost::is_floating_point<long double>::type fp_tag;
+   //typedef boost::is_floating_point<long double>::type fp_tag;
    typedef long double value_type;
    return detail::isinf_impl(static_cast<value_type>(x), method());
 }
@@ -594,7 +594,7 @@
 { //!< \brief return true if floating-point type t is NaN (Not A Number).
    typedef detail::fp_traits<long double>::type traits;
    typedef traits::method method;
-   typedef boost::is_floating_point<long double>::type fp_tag;
+   //typedef boost::is_floating_point<long double>::type fp_tag;
    return detail::isnan_impl(x, method());
 }
 #endif
diff -ur misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp
--- misc/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2008-06-22 08:05:38.000000000 -0700
+++ misc/build/boost_1_55_0/boost/spirit/home/classic/core/primitives/primitives.hpp	2016-03-23 01:11:12.407415000 -0700
@@ -47,7 +47,6 @@
         typename parser_result<self_t, ScannerT>::type
         parse(ScannerT const& scan) const
         {
-            typedef typename parser_result<self_t, ScannerT>::type result_t;
             typedef typename ScannerT::value_t value_t;
             typedef typename ScannerT::iterator_t iterator_t;
 
diff -ur misc/boost_1_55_0/boost/static_assert.hpp misc/build/boost_1_55_0/boost/static_assert.hpp
--- misc/boost_1_55_0/boost/static_assert.hpp	2013-09-21 13:17:00.000000000 -0700
+++ misc/build/boost_1_55_0/boost/static_assert.hpp	2016-03-23 01:11:12.430683000 -0700
@@ -67,7 +67,7 @@
 //
 // If the compiler warns about unused typedefs then enable this:
 //
-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))) || defined(__clang__)
 #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
 #else
 #  define BOOST_STATIC_ASSERT_UNUSED_ATTRIBUTE
diff -ur misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp
--- misc/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2011-01-02 12:25:11.000000000 -0800
+++ misc/build/boost_1_55_0/boost/tuple/detail/tuple_basic.hpp	2016-03-23 01:11:12.435344000 -0700
@@ -225,7 +225,6 @@
 get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
   typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
       apply<cons<HT, TT> > impl;
-  typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
   return impl::call(c).head;
 }
 
diff -ur misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp
--- misc/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2012-12-05 14:06:57.000000000 -0800
+++ misc/build/boost_1_55_0/boost/unordered/detail/equivalent.hpp	2016-03-23 01:04:46.934774000 -0700
@@ -534,11 +534,11 @@
             }
 
             node_pointer first_node = static_cast<node_pointer>(prev->next_);
-            link_pointer end = first_node->group_prev_->next_;
+            link_pointer end_var = first_node->group_prev_->next_;
 
-            std::size_t count = this->delete_nodes(prev, end);
+            std::size_t count_var = this->delete_nodes(prev, end_var);
             this->fix_bucket(bucket_index, prev);
-            return count;
+            return count_var;
         }
 
         iterator erase(c_iterator r)
@@ -557,21 +557,21 @@
             return iterator(r2.node_);
         }
 
-        link_pointer erase_nodes(node_pointer begin, node_pointer end)
+        link_pointer erase_nodes(node_pointer begin_arg, node_pointer end_arg)
         {
-            std::size_t bucket_index = this->hash_to_bucket(begin->hash_);
+            std::size_t bucket_index = this->hash_to_bucket(begin_arg->hash_);
 
-            // Split the groups containing 'begin' and 'end'.
+            // Split the groups containing 'begin_arg' and 'end_arg'.
             // And get the pointer to the node before begin while
             // we're at it.
-            link_pointer prev = split_groups(begin, end);
+            link_pointer prev = split_groups(begin_arg, end_arg);
 
-            // If we don't have a 'prev' it means that begin is at the
+            // If we don't have a 'prev' it means that begin_arg is at the
             // beginning of a block, so search through the blocks in the
             // same bucket.
             if (!prev) {
                 prev = this->get_previous_start(bucket_index);
-                while (prev->next_ != begin)
+                while (prev->next_ != begin_arg)
                     prev = static_cast<node_pointer>(prev->next_)->group_prev_;
             }
 
@@ -581,24 +581,24 @@
                     static_cast<node_pointer>(prev->next_)->group_prev_->next_;
                 this->delete_nodes(prev, group_end);
                 bucket_index = this->fix_bucket(bucket_index, prev);
-            } while(prev->next_ != end);
+            } while(prev->next_ != end_arg);
 
             return prev;
         }
 
-        static link_pointer split_groups(node_pointer begin, node_pointer end)
+        static link_pointer split_groups(node_pointer begin_arg, node_pointer end_arg)
         {
-            node_pointer prev = begin->group_prev_;
-            if (prev->next_ != begin) prev = node_pointer();
+            node_pointer prev = begin_arg->group_prev_;
+            if (prev->next_ != begin_arg) prev = node_pointer();
 
-            if (end) {
-                node_pointer first = end;
-                while (first != begin && first->group_prev_->next_ == first) {
+            if (end_arg) {
+                node_pointer first = end_arg;
+                while (first != begin_arg && first->group_prev_->next_ == first) {
                     first = first->group_prev_;
                 }
 
-                boost::swap(first->group_prev_, end->group_prev_);
-                if (first == begin) return prev;
+                boost::swap(first->group_prev_, end_arg->group_prev_);
+                if (first == begin_arg) return prev;
             }
 
             if (prev) {
@@ -606,7 +606,7 @@
                 while (first->group_prev_->next_ == first) {
                     first = first->group_prev_;
                 }
-                boost::swap(first->group_prev_, begin->group_prev_);
+                boost::swap(first->group_prev_, begin_arg->group_prev_);
             }
 
             return prev;
diff -ur misc/boost_1_55_0/boost/unordered/detail/table.hpp misc/build/boost_1_55_0/boost/unordered/detail/table.hpp
--- misc/boost_1_55_0/boost/unordered/detail/table.hpp	2013-08-18 02:44:14.000000000 -0700
+++ misc/build/boost_1_55_0/boost/unordered/detail/table.hpp	2016-03-23 01:04:46.936005000 -0700
@@ -257,9 +257,9 @@
             return prev ? iterator(prev->next_) : iterator();
         }
         
-        std::size_t hash_to_bucket(std::size_t hash) const
+        std::size_t hash_to_bucket(std::size_t hash_arg) const
         {
-            return policy::to_bucket(bucket_count_, hash);
+            return policy::to_bucket(bucket_count_, hash_arg);
         }
 
         float load_factor() const
@@ -655,8 +655,8 @@
             // assign_nodes takes ownership of the container's elements,
             // assigning to them if possible, and deleting any that are
             // left over.
-            assign_nodes<table> assign(*this);
-            table_impl::fill_buckets(x.begin(), *this, assign);
+            assign_nodes<table> assign_var(*this);
+            table_impl::fill_buckets(x.begin(), *this, assign_var);
         }
 
         void assign(table const& x, true_type)
@@ -730,9 +730,9 @@
                 // move_assign_nodes takes ownership of the container's
                 // elements, assigning to them if possible, and deleting
                 // any that are left over.
-                move_assign_nodes<table> assign(*this);
+                move_assign_nodes<table> assign_var(*this);
                 node_holder<node_allocator> nodes(x);
-                table_impl::fill_buckets(nodes.begin(), *this, assign);
+                table_impl::fill_buckets(nodes.begin(), *this, assign_var);
             }
         }
         
diff -ur misc/boost_1_55_0/boost/unordered/detail/unique.hpp misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp
--- misc/boost_1_55_0/boost/unordered/detail/unique.hpp	2013-08-18 02:44:14.000000000 -0700
+++ misc/build/boost_1_55_0/boost/unordered/detail/unique.hpp	2016-03-23 01:04:46.937066000 -0700
@@ -529,9 +529,9 @@
 
             link_pointer end = static_cast<node_pointer>(prev->next_)->next_;
 
-            std::size_t count = this->delete_nodes(prev, end);
+            std::size_t count_var = this->delete_nodes(prev, end);
             this->fix_bucket(bucket_index, prev);
-            return count;
+            return count_var;
         }
 
         iterator erase(c_iterator r)
@@ -550,19 +550,19 @@
             return iterator(r2.node_);
         }
 
-        void erase_nodes(node_pointer begin, node_pointer end)
+        void erase_nodes(node_pointer begin_arg, node_pointer end_arg)
         {
-            std::size_t bucket_index = this->hash_to_bucket(begin->hash_);
+            std::size_t bucket_index = this->hash_to_bucket(begin_arg->hash_);
 
-            // Find the node before begin.
+            // Find the node before begin_arg
             link_pointer prev = this->get_previous_start(bucket_index);
-            while(prev->next_ != begin) prev = prev->next_;
+            while(prev->next_ != begin_arg) prev = prev->next_;
 
             // Delete the nodes.
             do {
                 this->delete_node(prev);
                 bucket_index = this->fix_bucket(bucket_index, prev);
-            } while (prev->next_ != end);
+            } while (prev->next_ != end_arg);
         }
 
         ////////////////////////////////////////////////////////////////////////
diff -ur misc/boost_1_55_0/boost/config/compiler/gcc.hpp misc/build/boost_1_55_0/boost/config/compiler/gcc.hpp
--- misc/boost_1_55_0/boost/config/compiler/gcc.hpp	2013-09-17 09:55:51.000000000 -0700
+++ misc/build/boost_1_55_0/boost/config/compiler/gcc.hpp	2019-11-04 09:59:20.741944674 -0800
@@ -137,14 +137,18 @@
 
 // C++0x features in 4.3.n and later
 //
-#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
+#if ((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || (__cplusplus >= 201103L)
 // C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
 // passed on the command line, which in turn defines
 // __GXX_EXPERIMENTAL_CXX0X__.
 #  define BOOST_HAS_DECLTYPE
 #  define BOOST_HAS_RVALUE_REFS
 #  define BOOST_HAS_STATIC_ASSERT
-#  define BOOST_HAS_VARIADIC_TMPL
+#  if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4))
+#    define BOOST_HAS_VARIADIC_TMPL
+#  else
+#    define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#  endif
 #else
 #  define BOOST_NO_CXX11_DECLTYPE
 #  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
@@ -153,7 +157,7 @@
 
 // Variadic templates compiler:
 //   http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
-#  if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__))
+#  if defined(__VARIADIC_TEMPLATES)
 #    define BOOST_HAS_VARIADIC_TMPL
 #  else
 #    define BOOST_NO_CXX11_VARIADIC_TEMPLATES
diff -ur misc/boost_1_55_0/boost/config/stdlib/libcpp.hpp misc/build/boost_1_55_0/boost/config/stdlib/libcpp.hpp
--- misc/boost_1_55_0/boost/config/stdlib/libcpp.hpp	2012-05-15 04:57:21.000000000 -0700
+++ misc/build/boost_1_55_0/boost/config/stdlib/libcpp.hpp
@@ -19,7 +19,7 @@
 
 #define BOOST_HAS_THREADS
 
-#ifdef _LIBCPP_HAS_NO_VARIADICS
+#if defined(_LIBCPP_HAS_NO_VARIADICS) || (__cplusplus < 201103)
 #    define BOOST_NO_CXX11_HDR_TUPLE
 #endif
 
--- misc/boost_1_55_0/boost/tr1/detail/config_all.hpp	2020-11-21 14:07:48.895886290 +0100
+++ misc/build/boost_1_55_0/boost/tr1/detail/config_all.hpp	2020-11-21 14:10:16.895419939 +0100
@@ -95,6 +95,11 @@
          // compiler version:
 #        define BOOST_TR1_STD_HEADER(name) <../4.0.0/name>
          /*
+          *  After version 6 the include path consists of the major number only
+          */
+#      elif (__GNUC__ > 6)
+#        define BOOST_TR1_STD_HEADER(name) <../__GNUC__/name>
+         /*
           *  Before version 3.4.0 the 0 patch level was not part of the include path:
           */
 #      elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \
