Merge commit '3aa33935d966152f9864579b42840039f2920f09' as 'third_party/boostorg/preprocessor'
Change-Id: I26f069235058a63e648193197bc262c1270959ad
diff --git a/third_party/boostorg/preprocessor/.gitattributes b/third_party/boostorg/preprocessor/.gitattributes
new file mode 100644
index 0000000..3e84d7c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/.gitattributes
@@ -0,0 +1,96 @@
+* text=auto !eol svneol=native#text/plain
+*.gitattributes text svneol=native#text/plain
+
+# Scriptish formats
+*.bat text svneol=native#text/plain
+*.bsh text svneol=native#text/x-beanshell
+*.cgi text svneol=native#text/plain
+*.cmd text svneol=native#text/plain
+*.js text svneol=native#text/javascript
+*.php text svneol=native#text/x-php
+*.pl text svneol=native#text/x-perl
+*.pm text svneol=native#text/x-perl
+*.py text svneol=native#text/x-python
+*.sh eol=lf svneol=LF#text/x-sh
+configure eol=lf svneol=LF#text/x-sh
+
+# Image formats
+*.bmp binary svneol=unset#image/bmp
+*.gif binary svneol=unset#image/gif
+*.ico binary svneol=unset#image/ico
+*.jpeg binary svneol=unset#image/jpeg
+*.jpg binary svneol=unset#image/jpeg
+*.png binary svneol=unset#image/png
+*.tif binary svneol=unset#image/tiff
+*.tiff binary svneol=unset#image/tiff
+*.svg text svneol=native#image/svg%2Bxml
+
+# Data formats
+*.pdf binary svneol=unset#application/pdf
+*.avi binary svneol=unset#video/avi
+*.doc binary svneol=unset#application/msword
+*.dsp text svneol=crlf#text/plain
+*.dsw text svneol=crlf#text/plain
+*.eps binary svneol=unset#application/postscript
+*.gz binary svneol=unset#application/gzip
+*.mov binary svneol=unset#video/quicktime
+*.mp3 binary svneol=unset#audio/mpeg
+*.ppt binary svneol=unset#application/vnd.ms-powerpoint
+*.ps binary svneol=unset#application/postscript
+*.psd binary svneol=unset#application/photoshop
+*.rdf binary svneol=unset#text/rdf
+*.rss text svneol=unset#text/xml
+*.rtf binary svneol=unset#text/rtf
+*.sln text svneol=native#text/plain
+*.swf binary svneol=unset#application/x-shockwave-flash
+*.tgz binary svneol=unset#application/gzip
+*.vcproj text svneol=native#text/xml
+*.vcxproj text svneol=native#text/xml
+*.vsprops text svneol=native#text/xml
+*.wav binary svneol=unset#audio/wav
+*.xls binary svneol=unset#application/vnd.ms-excel
+*.zip binary svneol=unset#application/zip
+
+# Text formats
+.htaccess text svneol=native#text/plain
+*.bbk text svneol=native#text/xml
+*.cmake text svneol=native#text/plain
+*.css text svneol=native#text/css
+*.dtd text svneol=native#text/xml
+*.htm text svneol=native#text/html
+*.html text svneol=native#text/html
+*.ini text svneol=native#text/plain
+*.log text svneol=native#text/plain
+*.mak text svneol=native#text/plain
+*.qbk text svneol=native#text/plain
+*.rst text svneol=native#text/plain
+*.sql text svneol=native#text/x-sql
+*.txt text svneol=native#text/plain
+*.xhtml text svneol=native#text/xhtml%2Bxml
+*.xml text svneol=native#text/xml
+*.xsd text svneol=native#text/xml
+*.xsl text svneol=native#text/xml
+*.xslt text svneol=native#text/xml
+*.xul text svneol=native#text/xul
+*.yml text svneol=native#text/plain
+boost-no-inspect text svneol=native#text/plain
+CHANGES text svneol=native#text/plain
+COPYING text svneol=native#text/plain
+INSTALL text svneol=native#text/plain
+Jamfile text svneol=native#text/plain
+Jamroot text svneol=native#text/plain
+Jamfile.v2 text svneol=native#text/plain
+Jamrules text svneol=native#text/plain
+Makefile* text svneol=native#text/plain
+README text svneol=native#text/plain
+TODO text svneol=native#text/plain
+
+# Code formats
+*.c text svneol=native#text/plain
+*.cpp text svneol=native#text/plain
+*.h text svneol=native#text/plain
+*.hpp text svneol=native#text/plain
+*.ipp text svneol=native#text/plain
+*.tpp text svneol=native#text/plain
+*.jam text svneol=native#text/plain
+*.java text svneol=native#text/plain
diff --git a/third_party/boostorg/preprocessor/.travis.yml b/third_party/boostorg/preprocessor/.travis.yml
new file mode 100644
index 0000000..92c2ee7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/.travis.yml
@@ -0,0 +1,39 @@
+# Copyright 2016 Edward Diener
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
+
+language: cpp
+
+sudo: false
+
+python: "2.7"
+
+os:
+ - linux
+ - osx
+
+branches:
+ only:
+ - master
+ - develop
+
+install:
+ - cd ..
+ - git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
+ - cd boost-root
+ - git submodule update --init tools/build
+ - git submodule update --init libs/config
+ - git submodule update --init tools/boostdep
+ - cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor
+ - python tools/boostdep/depinst/depinst.py preprocessor
+ - ./bootstrap.sh
+ - ./b2 headers
+
+script:
+ - TOOLSET=gcc,clang
+ - if [ $TRAVIS_OS_NAME == osx ]; then TOOLSET=clang; fi
+ - ./b2 libs/preprocessor/test toolset=$TOOLSET
+
+notifications:
+ email:
+ on_success: always
diff --git a/third_party/boostorg/preprocessor/appveyor.yml b/third_party/boostorg/preprocessor/appveyor.yml
new file mode 100644
index 0000000..1fefc07
--- /dev/null
+++ b/third_party/boostorg/preprocessor/appveyor.yml
@@ -0,0 +1,36 @@
+# Copyright 2017 Edward Diener
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
+
+version: 1.0.{build}-{branch}
+
+shallow_clone: true
+
+branches:
+ only:
+ - master
+ - develop
+
+environment:
+ matrix:
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
+ TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0,msvc-12.0,msvc-14.0
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+ TOOLSET: msvc-14.1
+
+install:
+ - cd ..
+ - git clone -b %APPVEYOR_REPO_BRANCH% https://github.com/boostorg/boost.git boost-root
+ - cd boost-root
+ - git submodule update --init tools/build
+ - git submodule update --init libs/config
+ - git submodule update --init tools/boostdep
+ - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\preprocessor
+ - python tools/boostdep/depinst/depinst.py preprocessor
+ - bootstrap
+ - b2 headers
+
+build: off
+
+test_script:
+ - b2 libs/preprocessor/test toolset=%TOOLSET%
diff --git a/third_party/boostorg/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html b/third_party/boostorg/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html
new file mode 100644
index 0000000..73be306
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html
@@ -0,0 +1,2494 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html
+
+ lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
+ <meta name="generator" content="Docutils 0.3.8: http://docutils.sourceforge.net/" />
+ <title>Appendix A - An Introduction to Preprocessor Metaprogramming</title>
+ <meta name="copyright" content="From "C++ Template Metaprogramming," by David Abrahams and Aleksey Gurtovoy. Copyright (c) 2005 by Pearson Education, Inc. Reprinted with permission." />
+ <style type="text/css">
+
+/*
+:Author: David Goodger
+:Contact: goodger@users.sourceforge.net
+:date: $Date: 2004/06/23 13:31:26 $
+:version: $Revision: 1.37 $
+:copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+*/
+
+.first {
+ margin-top: 0 }
+
+.last {
+ margin-bottom: 0 }
+
+a.toc-backref {
+ text-decoration: none ;
+ color: black }
+
+blockquote.epigraph {
+ margin: 2em 5em ; }
+
+dd {
+ margin-bottom: 0.5em }
+
+/* Uncomment (& remove this text!) to get bold-faced definition list terms
+dt {
+ font-weight: bold }
+*/
+
+div.abstract {
+ margin: 2em 5em }
+
+div.abstract p.topic-title {
+ font-weight: bold ;
+ text-align: center }
+
+div.attention, div.caution, div.danger, div.error, div.hint,
+div.important, div.note, div.tip, div.warning, div.admonition {
+ margin: 2em ;
+ border: medium outset ;
+ padding: 1em }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title {
+ color: red ;
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.hint p.admonition-title, div.important p.admonition-title,
+div.note p.admonition-title, div.tip p.admonition-title,
+div.admonition p.admonition-title {
+ font-weight: bold ;
+ font-family: sans-serif }
+
+div.dedication {
+ margin: 2em 5em ;
+ text-align: center ;
+ font-style: italic }
+
+div.dedication p.topic-title {
+ font-weight: bold ;
+ font-style: normal }
+
+div.figure {
+ margin-left: 2em }
+
+div.footer, div.header {
+ font-size: smaller }
+
+div.sidebar {
+ margin-left: 1em ;
+ border: medium outset ;
+ padding: 0em 1em ;
+ background-color: #ffffee ;
+ width: 40% ;
+ float: right ;
+ clear: right }
+
+div.sidebar p.rubric {
+ font-family: sans-serif ;
+ font-size: medium }
+
+div.system-messages {
+ margin: 5em }
+
+div.system-messages h1 {
+ color: red }
+
+div.system-message {
+ border: medium outset ;
+ padding: 1em }
+
+div.system-message p.system-message-title {
+ color: red ;
+ font-weight: bold }
+
+div.topic {
+ margin: 2em }
+
+h1.title {
+ text-align: center }
+
+h2.subtitle {
+ text-align: center }
+
+hr {
+ width: 75% }
+
+ol.simple, ul.simple {
+ margin-bottom: 1em }
+
+ol.arabic {
+ list-style: decimal }
+
+ol.loweralpha {
+ list-style: lower-alpha }
+
+ol.upperalpha {
+ list-style: upper-alpha }
+
+ol.lowerroman {
+ list-style: lower-roman }
+
+ol.upperroman {
+ list-style: upper-roman }
+
+p.attribution {
+ text-align: right ;
+ margin-left: 50% }
+
+p.caption {
+ font-style: italic }
+
+p.credits {
+ font-style: italic ;
+ font-size: smaller }
+
+p.label {
+ white-space: nowrap }
+
+p.rubric {
+ font-weight: bold ;
+ font-size: larger ;
+ color: maroon ;
+ text-align: center }
+
+p.sidebar-title {
+ font-family: sans-serif ;
+ font-weight: bold ;
+ font-size: larger }
+
+p.sidebar-subtitle {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+p.topic-title {
+ font-weight: bold }
+
+pre.address {
+ margin-bottom: 0 ;
+ margin-top: 0 ;
+ font-family: serif ;
+ font-size: 100% }
+
+pre.line-block {
+ font-family: serif ;
+ font-size: 100% }
+
+pre.literal-block, pre.doctest-block {
+ margin-left: 2em ;
+ margin-right: 2em ;
+ background-color: #eeeeee }
+
+span.classifier {
+ font-family: sans-serif ;
+ font-style: oblique }
+
+span.classifier-delimiter {
+ font-family: sans-serif ;
+ font-weight: bold }
+
+span.interpreted {
+ font-family: sans-serif }
+
+span.option {
+ white-space: nowrap }
+
+span.option-argument {
+ font-style: italic }
+
+span.pre {
+ white-space: pre }
+
+span.problematic {
+ color: red }
+
+table {
+ margin-top: 0.5em ;
+ margin-bottom: 0.5em }
+
+table.citation {
+ border-left: solid thin gray ;
+ padding-left: 0.5ex }
+
+table.docinfo {
+ margin: 2em 4em }
+
+table.footnote {
+ border-left: solid thin black ;
+ padding-left: 0.5ex }
+
+dt {
+ font-weight: bold }
+
+td, th {
+ padding-left: 0.5em ;
+ padding-right: 0.5em ;
+ vertical-align: top }
+
+th.docinfo-name, th.field-name {
+ font-weight: bold ;
+ text-align: left ;
+ white-space: nowrap }
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ font-size: 100% }
+
+tt {
+ background-color: #eeeeee }
+
+ul.auto-toc {
+ list-style-type: none }
+
+</style> </head>
+ <body><br />
+ <div class="document" id="preprocessor-title">
+ <h1 class="title">Appendix A - An Introduction to Preprocessor
+ Metaprogramming</h1>
+ <table class="docinfo" frame="void" rules="none">
+ <colgroup><col class="docinfo-name" /> <col class="docinfo-content" />
+ </colgroup>
+ <tbody valign="top">
+ <tr>
+ <th class="docinfo-name">Copyright:</th>
+ <td>From "C++ Template Metaprogramming," by David Abrahams and
+ Aleksey Gurtovoy. Copyright (c) 2005 by Pearson Education, Inc.
+ Reprinted with permission.</td>
+ </tr>
+ <tr class="field">
+ <th class="docinfo-name">ISBN:</th>
+ <td class="field-body">0321227255</td>
+ </tr>
+ </tbody>
+ </table>
+ <div class="section" id="motivation">
+ <h1><a name="motivation">A.1 Motivation</a></h1>
+ <p>Even with the full power of template metaprogramming and the <a class="reference"
+
+ href="http://www.boost.org/libs/mpl">Boost Metaprogramming library</a>
+ at our disposal, some C++ coding jobs still require a great deal of
+ boilerplate code repetition. We saw one example in Chapter 5, when we
+ implemented <tt class="docutils literal"><span class="pre">tiny_size</span></tt>:</p>
+ <pre class="literal-block">template <class T0, class T1, class T2>
+struct tiny_size
+ : mpl::int_<3> {};
+</pre>
+ <!-- : rst-mode hack -->
+ <!-- @prefix.append('struct none {};') -->
+ <p>Aside from the repeated pattern in the parameter list of the primary
+ template above, there are three partial specializations below, which
+ also follow a predictable pattern:</p>
+ <pre class="literal-block">template <class T0, class T1>
+struct tiny_size<T0,T1,none>
+ : mpl::int_<2> {};
+
+template <class T0>
+struct tiny_size<T0,none,none>
+ : mpl::int_<1> {};
+
+template <>
+struct tiny_size<none,none,none>
+ : mpl::int_<0> {};
+</pre>
+ <!-- : rst-mode hack -->
+ <!-- @compile('all') -->
+ <p>In this case there is only a small amount of code with such a
+ "mechanical" flavor, but had we been implementing <tt class="docutils literal"><span
+
+ class="pre">large</span></tt> instead of <tt class="docutils literal"><span
+
+ class="pre">tiny</span></tt>, there might easily have been a great
+ deal more. When the number of instances of a pattern grows beyond two
+ or three, writing them by hand tends to become error-prone. Perhaps
+ more importantly, the code gets hard to read, because the important
+ abstraction in the code is really the pattern, not the individual
+ instances.</p>
+ <div class="section" id="code-generation">
+ <h2><a name="code-generation">A.1.1 Code Generation</a></h2>
+ <p>Rather than being written out by hand, mechanical-looking code
+ should really be generated mechanically. Having written a program to
+ spit out instances of the code pattern, a library author has two
+ choices: She can either ship pre-generated source code files, or she
+ can ship the generator itself. Either approach has drawbacks. If
+ clients only get the generated source, they are stuck with whatever
+ the library author generated—and experience shows that if they are
+ happy with three instances of a pattern today, someone will need
+ four tomorrow. If clients get the generator program, on the other
+ hand, they also need the resources to execute it (e.g.,
+ interpreters), and they must integrate the generator into their
+ build processes...</p>
+ </div>
+ <div class="section" id="enter-the-preprocessor">
+ <h2><a name="enter-the-preprocessor">A.1.2 Enter the Preprocessor</a></h2>
+ <p>...unless the generator is a preprocessor metaprogram. Though not
+ designed for that purpose, the C and C++ preprocessors can be made
+ to execute sophisticated programs during the preprocessing phase of
+ compilation. Users can control the code generation process with
+ preprocessor <tt class="docutils literal"><span class="pre">#define</span></tt>s
+ in code or <tt class="docutils literal"><span class="pre">-D</span></tt>
+ options on the compiler's command line, making build integration
+ trivial. For example, we might parameterize the primary <tt class="docutils literal"><span
+
+ class="pre">tiny_size</span></tt> template above as follows:</p>
+ <pre class="literal-block">#include <<strong>boost/preprocessor/repetition/enum_params</strong>.hpp>
+
+#ifndef TINY_MAX_SIZE
+# define TINY_MAX_SIZE 3 // default maximum size is 3
+#endif
+
+template <<strong>BOOST_PP_ENUM_PARAMS(TINY_MAX_SIZE, class T)</strong>>
+struct tiny_size
+ : mpl::int_<TINY_MAX_SIZE>
+{};
+</pre>
+ <!-- : rst-mode hack -->
+ <!-- @compile(pop = None) -->
+ <p>To test the metaprogram, run your compiler in its "preprocessing"
+ mode (usually the <tt class="docutils literal"><span class="pre">-E</span></tt>
+ option), with the Boost root directory in your <tt class="docutils literal"><span
+
+ class="pre">#include</span></tt> path. For instance:<a class="footnote-reference"
+
+ href="#minusp" id="id2" name="id2">[1]</a></p>
+ <pre class="literal-block">g++ -P -E -Ipath/to/boost_1_32_0 -I. test.cpp
+</pre>
+ <!-- @ignore() -->
+ <table class="docutils footnote" frame="void" id="minusp" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id2" name="minusp">[1]</a></td>
+ <td>GCC's <tt class="docutils literal"><span class="pre">-P</span></tt>
+ option inhibits the generation of source file and line number
+ markers in preprocessed output.</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Given the appropriate metaprograms, users would be able to adjust
+ not only the number of parameters to <tt class="docutils literal"><span
+
+ class="pre">tiny_size</span></tt>, but the maximum size of the
+ entire <tt class="docutils literal"><span class="pre">tiny</span></tt>
+ implementation just by <tt class="docutils literal"><span class="pre">#define</span></tt>-ing
+ <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>.</p>
+ <p>The Boost Preprocessor library <a class="citation-reference" href="#mk04"
+
+ id="id3" name="id3">[MK04]</a> plays a role in preprocessor
+ metaprogramming similar to the one played by the MPL in template
+ metaprogramming: It supplies a framework of high-level components
+ (like <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>)
+ that make otherwise-painful metaprogramming jobs approachable. In
+ this appendix we won't attempt to cover nitty-gritty details of how
+ the preprocessor works, nor principles of preprocessor
+ metaprogramming in general, nor even many details of how the
+ Preprocessor <em>library</em> works. We <em>will</em> show you
+ enough at a high level that you'll be able to use the library
+ productively and learn the rest on your own.</p>
+ <table class="docutils citation" frame="void" id="mk04" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id3" name="mk04">[MK04]</a></td>
+ <td>Paul Mensonides and Vesa Karvonen. "The Boost Preprocessor
+ Library." <a class="reference" href="http://www.boost.org/libs/preprocessor">http://www.boost.org/libs/preprocessor</a>.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="section" id="fundamental-abstractions-of-the-preprocessor">
+ <h1><a name="fundamental-abstractions-of-the-preprocessor">A.2 Fundamental
+ Abstractions of the Preprocessor</a></h1>
+ <p>We began our discussion of template metaprogramming in Chapter 2 by
+ describing its metadata (potential template arguments) and
+ metafunctions (class templates). On the basis of those two fundamental
+ abstractions, we built up the entire picture of compile-time
+ computation covered in the rest of this book. In this section we'll
+ lay a similar foundation for the preprocessor metaprogrammer. Some of
+ what we cover here may be a review for you, but it's important to
+ identify the basic concepts going into detail.</p>
+ <div class="section" id="preprocessing-tokens">
+ <h2><a name="preprocessing-tokens">A.2.1 Preprocessing Tokens</a></h2>
+ <p>The fundamental unit of data in the preprocessor is the <strong>preprocessing
+ token</strong>. Preprocessing tokens correspond roughly to the
+ tokens you're used to working with in C++, such as identifiers,
+ operator symbols, and literals. Technically, there are some
+ differences between <em>preprocessing tokens</em> and regular <em>tokens</em>
+ (see section 2 of the C++ standard for details), but they can be
+ ignored for the purposes of this discussion. In fact, we'll be using
+ the terms interchangeably here.</p>
+ </div>
+ <div class="section" id="macros">
+ <h2><a name="macros">A.2.2 Macros</a></h2>
+ <p>Preprocessor macros come in two flavors. <strong>Object-like
+ macros</strong> can be defined this way:</p>
+ <blockquote>
+ <div class="line-block">
+ <div class="line"><tt class="docutils literal"><span class="pre">#define</span></tt>
+ <em>identifier</em> <em>replacement-list</em></div>
+ </div>
+ </blockquote>
+ <!-- @litre_translator.line_offset -= 7 -->
+ <p>where the <em>identifier</em> names the macro being defined, and <em>replacement-list</em>
+ is a sequence of zero or more tokens. Where the <em>identifier</em>
+ appears in subsequent program text, it is <strong>expanded</strong>
+ by the preprocessor into its <em>replacement-list</em>.</p>
+ <p><strong>Function-like macros</strong>, which act as the
+ "metafunctions of the preprocessing phase," are defined as follows:</p>
+ <blockquote>
+ <div class="line-block">
+ <div class="line"><tt class="docutils literal"><span class="pre">#define</span></tt>
+ <em>identifier</em>(<em>a</em><sub>1</sub>, <em>a</em><sub>2</sub>,
+ ... <em>a</em><sub>n</sub>) <em>replacement-list</em></div>
+ </div>
+ </blockquote>
+ <!-- @litre_translator.line_offset -= 7 -->
+ <p>where each <em>a</em><sub>i</sub> is an identifier naming a <strong>macro
+ parameter</strong>. When the macro name appears in subsequent
+ program text followed by a suitable argument list, it is expanded
+ into its <em>replacement-list</em>, except that each argument is
+ substituted for the corresponding parameter where it appears in the
+ <em>replacement-list</em>.<a class="footnote-reference" href="#expansion"
+
+ id="id4" name="id4">[2]</a></p>
+ <table class="docutils footnote" frame="void" id="expansion" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id4" name="expansion">[2]</a></td>
+ <td>We have omitted many details of how macro expansion works.
+ We encourage you to take a few minutes to study section 16.3
+ of the C++ standard, which describes that process in
+ straightforward terms.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="section" id="macro-arguments">
+ <h2><a name="macro-arguments">A.2.3 Macro Arguments</a></h2>
+ <div class="admonition-definition admonition">
+ <p class="first admonition-title">Definition</p>
+ <p>A <strong>macro argument</strong> is a nonempty sequence of:</p>
+ <ul class="last simple">
+ <li>Preprocessing tokens other than commas or parentheses, <em>and/or</em></li>
+ <li>Preprocessing tokens surrounded by matched pairs of
+ parentheses.</li>
+ </ul>
+ </div>
+ <p>This definition has consequences for preprocessor metaprogramming
+ that must not be underestimated. Note, first of all, that the
+ following tokens have special status:</p>
+ <blockquote>
+ <pre class="literal-block">, ( )
+</pre> </blockquote>
+ <!-- @ignore() -->
+ <p>As a result, a macro argument can never contain an unmatched
+ parenthesis, or a comma that is not surrounded by matched
+ parentheses. For example, both lines following the definition of FOO
+ below are ill-formed:</p>
+ <pre class="literal-block">#define FOO(X) X // Unary identity macro
+FOO(,) // un-parenthesized comma or two empty arguments
+FOO()) // unmatched parenthesis or missing argument
+</pre>
+ <!-- @def pp_failure(options = ['-E'], **kw):
+ compile( expect_error = not 'mwcc' in config.compiler , options = options, **kw)pp_failure() -->
+ <p>Note also that the following tokens do <em>not</em> have special
+ status; the preprocessor knows nothing about matched pairs of
+ braces, brackets, or angle brackets:</p>
+ <blockquote>
+ <pre class="literal-block">{ } [ ] < >
+</pre> </blockquote>
+ <!-- @ignore() -->
+ <p>As a result, these lines are also ill-formed:</p>
+ <pre class="literal-block">FOO(std::pair<int<strong>,</strong> long>) // two arguments
+FOO({ int x = 1<strong>,</strong> y = 2; return x+y; }) // two arguments
+</pre>
+ <!-- @example.prepend('#define FOO(X) X')
+pp_failure() -->
+ <p>It <em>is</em> possible to pass either string of tokens above as
+ part of a single macro argument, provided it is parenthesized:</p>
+ <pre class="literal-block">FOO(<strong>(</strong>std::pair<int,int><strong>)</strong>) // one argument
+FOO(<strong>(</strong>{ int x = 1, y = 2; return x+y; }<strong>)</strong>) // one argument
+</pre>
+ <!-- @example.prepend('#define FOO(X) X')
+compile(options = ['-E']) -->
+ <p>However, because of the special status of commas, it is impossible
+ to strip parentheses from a macro argument without knowing the
+ number of comma-separated token sequences it contains.<a class="footnote-reference"
+
+ href="#c99" id="id5" name="id5">[3]</a> If you are writing a macro
+ that needs to be able to accept an argument containing a variable
+ number of commas, your users will either have to parenthesize that
+ argument <em>and</em> pass you the number of comma-separated token
+ sequences as an additional argument, or they will have to encode the
+ same information in one of the preprocessor data structures covered
+ later in this appendix.</p>
+ <table class="docutils footnote" frame="void" id="c99" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a name="c99">[3]</a></td>
+ <td><em>(<a class="fn-backref" href="#id5">1</a>, <a class="fn-backref"
+
+ href="#id12">2</a>)</em> The C99 preprocessor, by virtue
+ of its variadic macros, can do that and more. The C++
+ standardization committee is likely to adopt C99's
+ preprocessor extensions for the next version of the C++
+ standard.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="section" id="preprocessor-library-structure">
+ <h1><a name="preprocessor-library-structure">A.3 Preprocessor Library
+ Structure</a></h1>
+ <p>Since in-depth coverage of the Boost Preprocessor library is beyond
+ the scope of this book, we'll try to give you the <em>tools</em> to
+ gain an in-depth understanding of the library here. To do that, you'll
+ need to use the electronic Preprocessor library documentation, which
+ begins with the index.html file in the <tt class="docutils literal"><span
+
+ class="pre">libs/preprocessor/</span></tt> subdirectory of your
+ Boost installation.</p>
+ <p>On the left of your browser window you'll see an index, and if you
+ follow the "Headers" link, it will reveal the structure of the <tt class="docutils literal"><span
+
+ class="pre">boost/preprocessor/</span></tt> directory. Most of the
+ library's headers are grouped into subdirectories according to related
+ functionality. The top-level directory contains only a few headers
+ that provide general-purpose macros, along with a header for each
+ subdirectory that simply <tt class="docutils literal"><span class="pre">#include</span></tt>s
+ all the headers in that subdirectory. For example, <tt class="docutils literal"><span
+
+ class="pre">boost/preprocessor/selection.hpp</span></tt> does
+ nothing more than to <tt class="docutils literal"><span class="pre">#include</span></tt>
+ the <tt class="docutils literal"><span class="pre">min.hpp</span></tt>
+ and <tt class="docutils literal"><span class="pre">max.hpp</span></tt>
+ headers that comprise the contents of <tt class="docutils literal"><span
+
+ class="pre">boost/preprocessor/selection/</span></tt>. The headers
+ whose names <em>don't</em> correspond to subdirectories generally
+ declare a macro whose name is the same as the name of the header,
+ without the extension, and with a <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_</span></tt> prefix. For example, <tt class="docutils literal"><span
+
+ class="pre">boost/preprocessor/selection/max.hpp</span></tt>
+ declares <tt class="docutils literal"><span class="pre">BOOST_PP_MAX</span></tt>.</p>
+ <p>You'll also notice that often a header will declare an additional
+ macro with a <tt class="docutils literal"><span class="pre">_D</span></tt>,
+ <tt class="docutils literal"><span class="pre">_R</span></tt>, or <tt
+
+ class="docutils literal"><span class="pre">_Z</span></tt> suffix.<a
+
+ class="footnote-reference" href="#suffix" id="id6" name="id6">[4]</a>
+ For instance, <tt class="docutils literal"><span class="pre">boost/preprocessor/selection/max.hpp</span></tt>
+ also declares <tt class="docutils literal"><span class="pre">BOOST_PP_MAX_D</span></tt>.
+ For the purposes of this appendix, you should ignore those macros.
+ Eventually you will want to understand how they can be used to
+ optimize preprocessing speed; consult the Topics section of the
+ library documentation under the subheading "reentrancy" for that
+ information.</p>
+ <table class="docutils footnote" frame="void" id="suffix" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id6" name="suffix">[4]</a></td>
+ <td>Macros with <tt class="docutils literal"><span class="pre">_1ST</span></tt>,
+ <tt class="docutils literal"><span class="pre">_2ND</span></tt>,
+ or <tt class="docutils literal"><span class="pre">_3RD</span></tt>
+ suffixes, if they appear, should be ignored for a different
+ reason: They are deprecated and will be removed from the library
+ soon.</td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="section" id="preprocessor-library-abstractions">
+ <h1><a name="preprocessor-library-abstractions">A.4 Preprocessor
+ Library Abstractions</a></h1>
+ <p>In this section we'll discuss the basic abstractions of the
+ Preprocessor library, and give some simple examples of each.</p>
+ <div class="section" id="repetition">
+ <h2><a name="repetition">A.4.1 Repetition</a></h2>
+ <p>The repeated generation of <tt class="docutils literal"><span class="pre">class</span>
+ <span class="pre">T0</span></tt>, <tt class="docutils literal"><span
+
+ class="pre">class</span> <span class="pre">T1</span></tt>... <tt
+
+ class="docutils literal"><span class="pre">class</span> <span class="pre">T</span></tt><em>n</em>
+ that we achieved using <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>
+ was a specific case of the general concept of <strong>horizontal
+ repetition</strong>. The library also has a concept of vertical
+ repetition, which we'll get to in a moment. Horizontal repetition
+ macros are all found in the library's <tt class="docutils literal"><span
+
+ class="pre">repetition/</span></tt> subdirectory.</p>
+ <div class="section" id="horizontal-repetition">
+ <h3><a name="horizontal-repetition">A.4.1.1 Horizontal Repetition</a></h3>
+ <p>To generate the <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
+ specializations using horizontal repetition, we might write the
+ following:</p>
+ <pre class="literal-block">#include <boost/preprocessor/repetition.hpp>
+#include <boost/preprocessor/arithmetic/sub.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+
+#define TINY_print(z, n, data) data
+
+#define TINY_size(z, n, unused) \
+ template <BOOST_PP_ENUM_PARAMS(n, class T)> \
+ struct tiny_size< \
+ BOOST_PP_ENUM_PARAMS(n,T) \
+ BOOST_PP_COMMA_IF(n) \
+ BOOST_PP_ENUM( \
+ BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none) \
+ > \
+ : mpl::int_<n> {};
+
+BOOST_PP_REPEAT(TINY_MAX_SIZE, TINY_size, ~)
+
+#undef TINY_size
+#undef TINY_print
+</pre>
+ <!-- @import re
+compile('all', pop = None)example.sub('BOOST_PP_REPEAT.*', '', flags = re.DOTALL) -->
+ <p>The code generation process is kicked off by calling <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_REPEAT</span></tt>, a <strong>higher-order
+ macro</strong> that repeatedly invokes the macro named by its
+ second argument (<tt class="docutils literal"><span class="pre">TINY_size</span></tt>).
+ The first argument specifies the number of repeated invocations,
+ and the third one can be any data; it is passed on unchanged to
+ the macro being invoked. In this case, <tt class="docutils literal"><span
+
+ class="pre">TINY_size</span></tt> doesn't use that data, so
+ the choice to pass <tt class="docutils literal"><span class="pre">~</span></tt>
+ was arbitrary.<a class="footnote-reference" href="#markers" id="id7"
+
+ name="id7">[5]</a></p>
+ <table class="docutils footnote" frame="void" id="markers" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id7" name="markers">[5]</a></td>
+ <td><tt class="docutils literal"><span class="pre">~</span></tt>
+ is not an <em>entirely</em> arbitrary choice. Both <tt class="docutils literal"><span
+
+ class="pre">@</span></tt> and <tt class="docutils literal"><span
+
+ class="pre">$</span></tt> might have been good choices,
+ except that they are technically not part of the basic
+ character set that C++ implementations are required to
+ support. An identifier like <tt class="docutils literal"><span
+
+ class="pre">ignored</span></tt> might be subject to
+ macro expansion, leading to unexpected results.</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Each time the <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
+ macro is invoked by <tt class="docutils literal"><span class="pre">BOOST_PP_REPEAT</span></tt>,
+ it generates a different specialization of <tt class="docutils literal"><span
+
+ class="pre">tiny_size</span></tt>. The macro accepts three
+ parameters.</p>
+ <ul class="simple">
+ <li><tt class="docutils literal"><span class="pre">z</span></tt>
+ is related to the <tt class="docutils literal"><span class="pre">_Z</span></tt>
+ macro suffix we mentioned earlier. You'll never need to use it
+ except for optimization purposes, and can safely ignore it for
+ now.</li>
+ <li><tt class="docutils literal"><span class="pre">n</span></tt>
+ is the repetition index. In repeated invocations of <tt class="docutils literal"><span
+
+ class="pre">TINY_size</span></tt>, <tt class="docutils literal"><span
+
+ class="pre">n</span></tt> will be <tt class="docutils literal"><span
+
+ class="pre">0</span></tt>, then <tt class="docutils literal"><span
+
+ class="pre">1</span></tt>, then <tt class="docutils literal"><span
+
+ class="pre">2</span></tt>, and so on.</li>
+ <li><tt class="docutils literal"><span class="pre">unused</span></tt>,
+ in this case, will be <tt class="docutils literal"><span class="pre">~</span></tt>
+ on each repetition. In general, the final argument to a macro
+ invoked by <tt class="docutils literal"><span class="pre">BOOST_PP_REPEAT</span></tt>
+ is always the same as its invoker's final argument.</li>
+ </ul>
+ <p>Because its <em>replacement-list</em> covers several lines, all
+ but the last line of <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
+ is continued with a trailing backslash. The first few of those
+ lines just invoke <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>
+ (which we already used in the primary template) to generate
+ comma-separated lists, so each invocation of <tt class="docutils literal"><span
+
+ class="pre">TINY_size</span></tt> produces something
+ equivalent to:<a class="footnote-reference" href="#cont" id="id8"
+
+ name="id8">[6]</a></p>
+ <pre class="literal-block">template <<strong>class T0, class T1, ... class T</strong><em>n-1</em>>
+struct tiny_size<
+ <strong>T0, T1, ... T</strong><em>n-1</em>
+ <em>...more...</em>
+>
+ : mpl::int_<n> {};
+</pre>
+ <table class="docutils footnote" frame="void" id="cont" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id8" name="cont">[6]</a></td>
+ <td>Note that the line continuation characters <em>and</em>
+ the newlines following them are removed by the preprocessor,
+ so the resulting code actually appears on a single line in
+ the preprocessed output.</td>
+ </tr>
+ </tbody>
+ </table>
+ <!-- @ignore() -->
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_COMMA_IF</span></tt>
+ generates a comma if its numeric argument is not <tt class="docutils literal"><span
+
+ class="pre">0</span></tt>. When <tt class="docutils literal"><span
+
+ class="pre">n</span></tt> is <tt class="docutils literal"><span
+
+ class="pre">0</span></tt>, the list generated by the preceding
+ line will be empty, and a leading comma directly following the <tt
+
+ class="docutils literal"><span class="pre"><</span></tt>
+ character would be ill-formed.</p>
+ <p>The next line uses <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>
+ to generate <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE-n</span></tt>
+ comma-separated copies of <tt class="docutils literal"><span class="pre">none</span></tt>.
+ <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>
+ is just like <tt class="docutils literal"><span class="pre">BOOST_PP_REPEAT</span></tt>
+ except that it generates commas between repetitions, so its second
+ argument (<tt class="docutils literal"><span class="pre">TINY_print</span></tt>,
+ here) must have the same signature as <tt class="docutils literal"><span
+
+ class="pre">TINY_size</span></tt>. In this case, <tt class="docutils literal"><span
+
+ class="pre">TINY_print</span></tt> ignores its repetition
+ index <tt class="docutils literal"><span class="pre">n</span></tt>,
+ and simply yields its third argument, <tt class="docutils literal"><span
+
+ class="pre">none</span></tt>.</p>
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_SUB</span></tt>
+ implements token subtraction. It's crucial to understand that
+ although the preprocessor <em>itself</em> can evaluate ordinary
+ arithmetic expressions:</p>
+ <pre class="literal-block">#define X 3
+...
+#if <strong>X - 1 > 0</strong> // OK
+ <em>whatever</em>
+#endif
+</pre>
+ <!-- @compile() -->
+ <!-- @litre_translator.line_offset -= 7 -->
+ <p>preprocessor <em>metaprograms</em> can only operate on tokens.
+ Normally, when a macro in the Preprocessor library expects a
+ numeric argument, it must be passed as a single token. If we had
+ written <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE-n</span></tt>
+ instead of <tt class="docutils literal"><span class="pre">BOOST_PP_SUB(TINY_MAX_SIZE,n)</span></tt>
+ above, the first argument to <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>
+ would have contained three tokens at each invocation: first <tt class="docutils literal"><span
+
+ class="pre">3-0</span></tt>, then <tt class="docutils literal"><span
+
+ class="pre">3-1</span></tt>, and finally <tt class="docutils literal"><span
+
+ class="pre">3-2</span></tt>. <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_SUB</span></tt>, though, generates
+ single-token results: first <tt class="docutils literal"><span class="pre">3</span></tt>,
+ then <tt class="docutils literal"><span class="pre">2</span></tt>,
+ and finally <tt class="docutils literal"><span class="pre">1</span></tt>,
+ in successive repetitions.</p>
+ <div class="sidebar">
+ <p class="first sidebar-title">Naming Conventions</p>
+ <p class="last">Note that <tt class="docutils literal"><span class="pre">TINY_print</span></tt>
+ and <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
+ are <tt class="docutils literal"><span class="pre">#undef</span></tt>'d
+immediately
+ after they're used, with no intervening <tt class="docutils literal"><span
+
+ class="pre">#include</span></tt>s. They can therefore be
+ thought of as "local" macro definitions. Because the
+ preprocessor doesn't respect scope boundaries, it's important to
+ choose names carefully to prevent clashes. We recommend <tt class="docutils literal"><span
+
+ class="pre">PREFIXED_lower_case</span></tt> names for local
+ macros and <tt class="docutils literal"><span class="pre">PREFIXED_UPPER_CASE</span></tt>
+ names for global ones. The only exceptions are one-letter
+ lowercase names, which are safe to use for local macros: No
+ other header is likely to <tt class="docutils literal"><span class="pre">#define</span></tt>
+ a global single-letter lowercase macro—that would be <em>very</em>
+ bad manners.</p>
+ </div>
+ </div>
+ <div class="section" id="vertical-repetition">
+ <h3><a name="vertical-repetition">A.4.1.2 Vertical Repetition</a></h3>
+ <p>If you send the previous example through your preprocessor,
+ you'll see one long line containing something like this:</p>
+ <pre class="literal-block">template <> struct tiny_size< none , none , none > : mpl::int_<0>
+ {}; template < class T0> struct tiny_size< T0 , none , none > :
+mpl::int_<1> {}; template < class T0 , class T1> struct tiny_size
+< T0 , T1 , none > : mpl::int_<2> {};
+</pre>
+ <!-- @compile('all', pop = 1) -->
+ <p>The distinguishing feature of horizontal repetition is that all
+ instances of the repeated pattern are generated on the same line
+ of preprocessed output. For some jobs, like generating the primary
+ <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
+ template, that's perfectly appropriate. In this case, however,
+ there are at least two disadvantages.</p>
+ <ol class="arabic simple">
+ <li>It's hard to verify that our metaprogram is doing the right
+ thing without reformatting the resulting code by hand.</li>
+ <li>The efficiency of nested horizontal repetitions varies widely
+ across preprocessors. Each specialization generated by means of
+ horizontal repetition contains three other horizontal
+ repetitions: two invocations of <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_ENUM_PARAMS</span></tt> and one
+ invocation of <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM</span></tt>.
+ When <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
+ is <tt class="docutils literal"><span class="pre">3</span></tt>,
+ you'll probably never care, but on at least one preprocessor
+ still in use today, compilation begins to slow noticeably when <tt
+
+ class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
+ reaches <tt class="docutils literal"><span class="pre">8</span></tt>.<a
+
+ class="footnote-reference" href="#nest" id="id9" name="id9">[7]</a></li>
+ </ol>
+ <blockquote>
+ <table class="docutils footnote" frame="void" id="nest" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id9" name="nest">[7]</a></td>
+ <td>That said, other preprocessors can handle 256 * 256
+ nested repetitions without any speed problems whatsoever.</td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
+ <p>The solution to these problems, naturally, is <strong>vertical
+ repetition</strong>, which generates instances of a pattern
+ across multiple lines. The Preprocessor library provides two means
+ of vertical repetition: <strong>local iteration</strong> and <strong>file
+ iteration</strong>.</p>
+ <div class="section" id="local-iteration">
+ <h4><a name="local-iteration">Local Iteration</a></h4>
+ <p>The most expedient way to demonstrate local iteration in our
+ example is to replace the invocation of <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_REPEAT</span></tt> with the following:</p>
+ <pre class="literal-block">#include <boost/preprocessor/<strong>iteration/local.hpp</strong>>
+
+#define BOOST_PP_LOCAL_MACRO(n) TINY_size(~, n, ~)
+#define BOOST_PP_LOCAL_LIMITS (0, <strong>TINY_MAX_SIZE - 1</strong>)
+<strong>#include</strong> BOOST_PP_LOCAL_ITERATE()
+</pre>
+ <!-- @compile('all', pop = 1) -->
+ <p>Local iteration repeatedly invokes the user-defined macro with
+ the special name <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_MACRO</span></tt>,
+ whose argument will be an iteration index. Since we already had
+ <tt class="docutils literal"><span class="pre">TINY_size</span></tt>
+ lying around, we've just defined <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_LOCAL_MACRO</span></tt> to invoke it.
+ The range of iteration indices are given by another user-defined
+ macro, <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_LIMITS</span></tt>,
+ which must expand to a parenthesized pair of integer values
+ representing the <em>inclusive</em> range of index values
+ passed to <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_MACRO</span></tt>.
+ Note that this is one of the rare places where the library
+ expects a numeric argument that can be an expression consisting
+ of multiple tokens.</p>
+ <p>Finally, the repetition is initiated by <tt class="docutils literal"><span
+
+ class="pre">#include</span></tt>-ing the result of invoking
+ <tt class="docutils literal"><span class="pre">BOOST_PP_LOCAL_ITERATE</span></tt>,
+ which will ultimately be a file in the Preprocessor library
+ itself. You may find it surprising that many preprocessors can
+ handle repeated file inclusion more quickly than nested
+ horizontal repetition, but that is in fact the case.</p>
+ <p>If we throw the new example at our preprocessor, we'll see the
+ following, on three separate lines in the output:</p>
+ <pre class="literal-block">template <> struct tiny_size< none , none , none > : mpl::int_<0>
+ {};
+
+template < class T0> struct tiny_size< T0 , none , none > : mpl::
+int_<1> {};
+
+template < class T0 , class T1> struct tiny_size< T0 , T1 , none
+> : mpl::int_<2> {};
+</pre>
+ <!-- @compile('all', pop = 1) -->
+ <p>That represents a great improvement in verifiability, but it's
+ still not ideal. As <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
+ grows, it gets harder and harder to see that the pattern is
+ generating what we'd like. If we could get some more line breaks
+ into the output it would retain a more recognizable form.</p>
+ <p>Both repetition methods we've used so far have another
+ drawback, though it doesn't show up in this example. Consider
+ what would happen if <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
+ had a member function that we wanted to debug. If you've ever
+ tried to use a debugger to step through a function generated by
+ a preprocessor macro, you know that it's a frustrating
+ experience at best: The debugger shows you the line from which
+ the macro was ultimately invoked, which usually looks nothing at
+ all like the code that was generated. Worse, as far as the
+ debugger is concerned, <em>every</em> statement in that
+ generated function occupies that same line.</p>
+ </div>
+ <div class="section" id="file-iteration">
+ <h4><a name="file-iteration">File Iteration</a></h4>
+ <p>Clearly, debuggability depends on preserving the association
+ between generated code and the lines in the source file that
+ describe the code pattern. File iteration generates pattern
+ instances by repeatedly <tt class="docutils literal"><span class="pre">#include</span></tt>-ing
+ the same source file. The effect of file iteration on
+ debuggability is similar to that of templates: Although separate
+ instances appear to occupy the same source lines in the
+ debugger, we do have the experience of stepping through the
+ function's source code.</p>
+ <p>To apply file iteration in our example, we can replace our
+ earlier local iteration code and the definition of <tt class="docutils literal"><span
+
+ class="pre">TINY_size</span></tt>, with:</p>
+ <pre class="literal-block">#include <boost/preprocessor/iteration/iterate.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, TINY_MAX_SIZE - 1)
+#define BOOST_PP_FILENAME_1 "tiny_size_spec.hpp"
+#include BOOST_PP_ITERATE()
+</pre>
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_ITERATION_LIMITS</span></tt>
+ follows the same pattern as <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_LOCAL_LIMITS</span></tt> did, allowing
+ us to specify an inclusive range of iteration indices. <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_FILENAME_1</span></tt> specifies the
+ name of the file to repeatedly <tt class="docutils literal"><span
+
+ class="pre">#include</span></tt> (we'll show you that file
+ in a moment). The trailing <tt class="docutils literal"><span class="pre">1</span></tt>
+ indicates that this is the first nesting level of file
+ iteration—should we need to invoke file iteration again from
+ within <tt class="docutils literal"><span class="pre">tiny_size_spec.hpp</span></tt>,
+ we'd need to use <tt class="docutils literal"><span class="pre">BOOST_PP_FILENAME_2</span></tt>
+ instead.</p>
+ <p>The contents of <tt class="docutils literal"><span class="pre">tiny_size_spec.hpp</span></tt>
+ should look familiar to you; most of it is the same as <tt class="docutils literal"><span
+
+ class="pre">TINY_size</span></tt>'s <em>replacement-list</em>,
+ without the backslashes:</p>
+ <pre class="literal-block">#define n BOOST_PP_ITERATION()
+
+template <BOOST_PP_ENUM_PARAMS(n, class T)>
+struct tiny_size<
+ BOOST_PP_ENUM_PARAMS(n,T)
+ BOOST_PP_COMMA_IF(n)
+ BOOST_PP_ENUM(BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none)
+>
+ : mpl::int_<n> {};
+
+#undef n
+</pre>
+ <!-- @import tempfile, os
+open(os.path.join(tempfile.gettempdir(),'tiny_size_spec.hpp'), 'w' ).write(str(example))ignore()vertical_options = ['-I'+tempfile.gettempdir(), '-c']
+compile('all', options = vertical_options, pop = 1) -->
+ <p>The Library transmits the iteration index to us in the result
+ of <tt class="docutils literal"><span class="pre">BOOST_PP_ITERATION()</span></tt>;
+ <tt class="docutils literal"><span class="pre">n</span></tt> is
+ nothing more than a convenient local macro used to reduce
+ syntactic noise. Note that we didn't use <tt class="docutils literal"><span
+
+ class="pre">#include</span></tt> guards because we need <tt
+
+ class="docutils literal"><span class="pre">tiny_size_spec.hpp</span></tt>
+ to be processed multiple times.</p>
+ <p>The preprocessed result should now preserve the line structure
+ of the pattern and be more verifiable for larger values of <tt
+
+ class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>.
+ For instance, when <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>
+ is <tt class="docutils literal"><span class="pre">8</span></tt>,
+ the following excerpt appears in the output of GCC's
+ preprocessing phase:</p>
+ <pre class="literal-block"><em>...</em>
+template < class T0 , class T1 , class T2 , class T3>
+struct tiny_size<
+ T0 , T1 , T2 , T3
+ ,
+ none , none , none , none
+>
+ : mpl::int_<4> {};
+
+template < class T0 , class T1 , class T2 , class T3 , class T4>
+struct tiny_size<
+ T0 , T1 , T2 , T3 , T4
+ ,
+ none , none , none
+>
+ : mpl::int_<5> {};
+<em>...etc.</em>
+</pre>
+ <!-- @compile('all', options = vertical_options + ['-DTINY_MAX_SIZE=8']) -->
+ </div>
+ <div class="section" id="self-iteration">
+ <h4><a name="self-iteration">Self-Iteration</a></h4>
+ <p>Creating an entirely new file like <tt class="docutils literal"><span
+
+ class="pre">tiny_size_spec.hpp</span></tt> each time we want
+ to express a trivial code pattern for file repetition can be
+ inconvenient. Fortunately, the library provides a macro that
+ allows us to place the pattern right in the file that invokes
+ the iteration. <tt class="docutils literal"><span class="pre">BOOST_PP_IS_ITERATING</span></tt>
+ is defined to a nonzero value whenever we're inside an
+ iteration. We can use that value to select between the part of a
+ file that invokes the iteration and the part that provides the
+ repeated pattern. Here's a complete <tt class="docutils literal"><span
+
+ class="pre">tiny_size.hpp</span></tt> file that demonstrates
+ self-iteration. Note in particular the placement and use of the
+ <tt class="docutils literal"><span class="pre">#include</span></tt>
+ guard <tt class="docutils literal"><span class="pre">TINY_SIZE_HPP_INCLUDED</span></tt>:</p>
+ <pre class="literal-block">#ifndef <strong>BOOST_PP_IS_ITERATING</strong>
+
+# ifndef TINY_SIZE_HPP_INCLUDED
+# define TINY_SIZE_HPP_INCLUDED
+
+# include <boost/preprocessor/repetition.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/iteration/iterate.hpp>
+
+# ifndef TINY_MAX_SIZE
+# define TINY_MAX_SIZE 3 // default maximum size is 3
+# endif
+
+// primary template
+template <BOOST_PP_ENUM_PARAMS(TINY_MAX_SIZE, class T)>
+struct tiny_size
+ : mpl::int_<TINY_MAX_SIZE>
+{};
+
+// generate specializations
+# define BOOST_PP_ITERATION_LIMITS (0, TINY_MAX_SIZE - 1)
+# define BOOST_PP_FILENAME_1 "tiny_size.hpp" // this file
+# include BOOST_PP_ITERATE()
+
+# endif // TINY_SIZE_HPP_INCLUDED
+
+#else // <strong>BOOST_PP_IS_ITERATING</strong>
+
+# define n BOOST_PP_ITERATION()
+
+# define TINY_print(z, n, data) data
+
+// specialization pattern
+template <BOOST_PP_ENUM_PARAMS(n, class T)>
+struct tiny_size<
+ BOOST_PP_ENUM_PARAMS(n,T)
+ BOOST_PP_COMMA_IF(n)
+ BOOST_PP_ENUM(BOOST_PP_SUB(TINY_MAX_SIZE,n), TINY_print, none)
+>
+ : mpl::int_<n> {};
+
+# undef TINY_print
+# undef n
+
+#endif // <strong>BOOST_PP_IS_ITERATING</strong>
+</pre>
+ <!-- @compile(source_file = 'tiny_size.hpp') --> </div>
+ <div class="section" id="more">
+ <h4><a name="more">More</a></h4>
+ <p>There's a good deal more to file iteration than what we've been
+ able to show you here. For more details, we encourage you to
+ delve into the library's electronic documentation of <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_ITERATE</span></tt> and friends. Also,
+ it's important to note that no single technique for repetition
+ is superior to any other: Your choice may depend on convenience,
+ verifiability, debuggability, compilation speed, and your own
+ sense of "logical coherence."</p>
+ </div>
+ </div>
+ </div>
+ <div class="section" id="arithmetic-logical-and-comparison-operations">
+ <h2><a name="arithmetic-logical-and-comparison-operations">A.4.2 Arithmetic,
+ Logical, and Comparison Operations</a></h2>
+ <p>As we mentioned earlier, many of the Preprocessor library
+ interfaces require single-token numeric arguments, and when those
+ numbers need to be computed arithmetically, straightforward
+ arithmetic expressions are inappropriate. We used <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_SUB</span></tt> to subtract two numeric
+ tokens in our <tt class="docutils literal"><span class="pre">tiny_size</span></tt>
+ examples. The library contains a suite of operations for
+ non-negative integral token arithmetic in its <tt class="docutils literal"><span
+
+ class="pre">arithmetic/</span></tt> subdirectory, as shown in
+ Table A.1</p>
+ <table border="1" class="docutils">
+ <caption>Preprocessor Library Arithmetic Operations</caption> <colgroup>
+ <col width="44%" /> <col width="56%" /> </colgroup>
+ <thead valign="bottom">
+ <tr>
+ <th>Expression</th>
+ <th>Value of Single Token Result</th>
+ </tr>
+ </thead>
+ <tbody valign="top">
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ADD(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">+</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_DEC(x)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">-</span> <span class="pre">1</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_DIV(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">/</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_INC(x)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">+</span> <span class="pre">1</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_MOD(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">%</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_MUL(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">*</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SUB(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">-</span> <span class="pre">y</span></tt></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>The <tt class="docutils literal"><span class="pre">logical/</span></tt>
+ subdirectory contains the convenient Boolean token operations shown
+ in Table A.2 and the more efficient operations shown in Table A.3,
+ which require that their operands are either <tt class="docutils literal"><span
+
+ class="pre">0</span></tt> or <tt class="docutils literal"><span
+
+ class="pre">1</span></tt> (a single bit).</p>
+ <table border="1" class="docutils">
+ <caption>Preprocessor Library Integer Logical Operations</caption> <colgroup>
+ <col width="44%" /> <col width="56%" /> </colgroup>
+ <thead valign="bottom">
+ <tr>
+ <th>Expression</th>
+ <th>Value of Single Token Result</th>
+ </tr>
+ </thead>
+ <tbody valign="top">
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_AND(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">&&</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_NOR(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">!(x</span> <span
+
+ class="pre">||</span> <span class="pre">y)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_OR(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">||</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_XOR(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(bool)x</span>
+ <span class="pre">!=</span> <span class="pre">(bool)y</span>
+ <span class="pre">?</span> <span class="pre">1</span> <span
+
+ class="pre">:</span> <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_NOT(x)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">?</span> <span class="pre">0</span> <span class="pre">:</span>
+ <span class="pre">1</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BOOL(x)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ </tbody>
+ </table>
+ <table border="1" class="docutils">
+ <caption>Preprocessor Library Bit Logical Operations</caption> <colgroup>
+ <col width="44%" /> <col width="56%" /> </colgroup>
+ <thead valign="bottom">
+ <tr>
+ <th>Expression</th>
+ <th>Value of Single Token Result</th>
+ </tr>
+ </thead>
+ <tbody valign="top">
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITAND(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">&&</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITNOR(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">!(x</span> <span
+
+ class="pre">||</span> <span class="pre">y)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITOR(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">||</span> <span class="pre">y</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_BITXOR(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(bool)x</span>
+ <span class="pre">!=</span> <span class="pre">(bool)y</span>
+ <span class="pre">?</span> <span class="pre">1</span> <span
+
+ class="pre">:</span> <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_COMPL(x)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">?</span> <span class="pre">0</span> <span class="pre">:</span>
+ <span class="pre">1</span></tt></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Finally, the <tt class="docutils literal"><span class="pre">comparison/</span></tt>
+ subdirectory provides the token integral comparison operations shown
+ in Table A.4.</p>
+ <table border="1" class="docutils">
+ <caption>Preprocessor Library Comparison Operations</caption> <colgroup>
+ <col width="46%" /> <col width="54%" /> </colgroup>
+ <thead valign="bottom">
+ <tr>
+ <th>Expression</th>
+ <th>Value of Single Token Result</th>
+ </tr>
+ </thead>
+ <tbody valign="top">
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_EQUAL(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">==</span> <span class="pre">y</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_NOT_EQUAL(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">!=</span> <span class="pre">y</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_LESS(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre"><</span> <span class="pre">y</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_LESS_EQUAL(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre"><=</span> <span class="pre">y</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_GREATER(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">></span> <span class="pre">y</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_GREATER_EQUAL(x,y)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">x</span> <span
+
+ class="pre">>=</span> <span class="pre">y</span> <span
+
+ class="pre">?</span> <span class="pre">1</span> <span class="pre">:</span>
+ <span class="pre">0</span></tt></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Because it's common to have a choice among several workable
+ comparison operators, it may be useful to know that <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_EQUAL</span></tt> and <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_NOT_EQUAL</span></tt> are likely to be O(1)
+ while the other comparison operators are generally slower.</p>
+ </div>
+ <div class="section" id="control-structures">
+ <h2><a name="control-structures">A.4.3 Control Structures</a></h2>
+ <p>In its <tt class="docutils literal"><span class="pre">control/</span></tt>
+ directory, the Preprocessor Library supplies a macro <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_IF(c,t,f)</span></tt> that fulfills a
+ similar role to the one filled by <tt class="docutils literal"><span
+
+ class="pre">mpl::if_</span></tt>. To explore the "control"
+ group, we'll generate code for a framework of generic function
+ objects: the Boost Function Library.<a class="footnote-reference" href="#function"
+
+ id="id10" name="id10">[8]</a> <tt class="docutils literal"><span
+
+ class="pre">boost::function</span></tt> is partially specialized
+ to match function type arguments of each arity up to the maximum
+ supported by the library:</p>
+ <pre class="literal-block">template <class Signature> struct function; // primary template
+
+template <class R> // arity = 0
+struct function<R()>
+ <em>definition not shown...</em>
+
+template <class R, class A0> // arity = 1
+struct function<R(A0)>
+ <em>definition not shown...</em>
+
+template <class R, class A0, class A1> // arity = 2
+struct function<R(A0,A1)>
+ <em>definition not shown...</em>
+
+template <class R, class A0, class A1, class A2> // arity = 3
+struct function<R(A0,A1,A2)>
+ <em>definition not shown...</em>
+
+<em>etc.</em>
+</pre>
+ <!-- @example.replace(')>', ')>;')
+compile() -->
+ <table class="docutils footnote" frame="void" id="function" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id10" name="function">[8]</a></td>
+ <td>We touched briefly on the design of Boost Function when we
+ discussed type erasure in Chapter 9. See the Function library
+ documentation at <tt class="docutils literal"><span class="pre">boost_1_32_0/libs/function/index.html</span></tt>
+ on the CD that accompanies this book for more information.</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>We've already covered a few strategies that can be used to generate
+ the pattern above, so we won't belabor that part of the problem; the
+ file iteration approach we used for <tt class="docutils literal"><span
+
+ class="pre">tiny_size</span></tt> would be fine:</p>
+ <pre class="literal-block">#ifndef BOOST_PP_IS_ITERATING
+
+# ifndef BOOST_FUNCTION_HPP_INCLUDED
+# define BOOST_FUNCTION_HPP_INCLUDED
+
+# include <boost/preprocessor/repetition.hpp>
+# include <boost/preprocessor/iteration/iterate.hpp>
+
+# ifndef FUNCTION_MAX_ARITY
+# define FUNCTION_MAX_ARITY 15
+# endif
+
+<strong>template <class Signature> struct function;</strong> // primary template
+
+// generate specializations
+# define BOOST_PP_ITERATION_LIMITS (0, FUNCTION_MAX_ARITY)
+# define BOOST_PP_FILENAME_1 "boost/function.hpp" // this file
+# include BOOST_PP_ITERATE()
+
+# endif // BOOST_FUNCTION_HPP_INCLUDED
+
+#else // BOOST_PP_IS_ITERATING
+
+# define n BOOST_PP_ITERATION()
+
+// specialization pattern
+<strong>template <class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)></strong>
+<strong>struct function<R ( BOOST_PP_ENUM_PARAMS(n,A) )></strong>
+ <em>definition not shown...</em>
+
+# undef n
+
+#endif // BOOST_PP_IS_ITERATING
+</pre>
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_TRAILING_PARAMS</span></tt>,
+ used above, is just like <tt class="docutils literal"><span class="pre">BOOST_PP_ENUM_PARAMS</span></tt>
+ except that when its first argument is not <tt class="docutils literal"><span
+
+ class="pre">0</span></tt>, it generates a leading comma.</p>
+ <!-- @example.replace_emphasis(';//')
+tmpdir = tempfile.gettempdir()tmpboost = os.path.join(tmpdir,'boost')try: os.mkdir(tmpboost)except: pass
+tmp_boost_function = os.path.join(tmpdir, 'boost/function.hpp')compile( options = vertical_options , source_file = tmp_boost_function
+ , pop = None) -->
+ <div class="section" id="argument-selection">
+ <h3><a name="argument-selection">A.4.3.1 Argument Selection</a></h3>
+ <p>For the sake of interoperability with C++ standard library
+ algorithms, it might be nice if <tt class="docutils literal"><span
+
+ class="pre">function</span></tt>s of one or two arguments were
+ derived from appropriate specializations of <tt class="docutils literal"><span
+
+ class="pre">std::unary_function</span></tt> or <tt class="docutils literal"><span
+
+ class="pre">std::binary_function</span></tt>, respectively.<a
+
+ class="footnote-reference" href="#ebo" id="id11" name="id11">[9]</a>
+ <tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
+ is a great tool for dealing with special cases:</p>
+ <pre class="literal-block"># include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+
+// specialization pattern
+template <class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)>
+struct function<R ( BOOST_PP_ENUM_PARAMS(n,A) )>
+ BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,2), <strong>: std::binary_function<A0, A1, R></strong>
+ , BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,1), <strong>: std::unary_function<A0, R></strong>
+ , <em>...empty argument...</em>
+ )
+ )
+{ <em>...class body omitted...</em> };
+</pre>
+ <!-- @pp_failure() -->
+ <table class="docutils footnote" frame="void" id="ebo" rules="none">
+ <colgroup><col class="label" /><col /></colgroup>
+ <tbody valign="top">
+ <tr>
+ <td class="label"><a class="fn-backref" href="#id11" name="ebo">[9]</a></td>
+ <td>While derivation from <tt class="docutils literal"><span
+
+ class="pre">std::unary_function</span></tt> or <tt class="docutils literal"><span
+
+ class="pre">std::binary_function</span></tt> might be
+ necessary for interoperability with some older library
+ implementations, it may inhibit the Empty Base Optimization
+ (EBO) from taking effect when two such derived classes are
+ part of the same object. For more information, see section
+ 9.4. In general, it's better to expose <tt class="docutils literal"><span
+
+ class="pre">first_argument_type</span></tt>, <tt class="docutils literal"><span
+
+ class="pre">second_argument_type</span></tt>, and <tt class="docutils literal"><span
+
+ class="pre">result_type</span></tt> <tt class="docutils literal"><span
+
+ class="pre">typedef</span></tt>s directly.</td>
+ </tr>
+ </tbody>
+ </table>
+ <p>Well, our first attempt has run into several problems. First off,
+ you're not allowed to pass an empty argument to the preprocessor.<a
+
+ class="footnote-reference" href="#c99" id="id12" name="id12">[3]</a>
+ Secondly, because angle brackets don't get special treatment, the
+ commas in the <tt class="docutils literal"><span class="pre">std::unary_function</span></tt>
+ and <tt class="docutils literal"><span class="pre">std::binary_function</span></tt>
+ specializations above are treated as macro argument separators,
+ and the preprocessor will complain that we've passed the wrong
+ number of arguments to <tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
+ in two places.</p>
+ <p>Because it captures all of the issues, let's focus on the inner <tt
+
+ class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
+ invocation for a moment. The strategy that <tt class="docutils literal"><span
+
+ class="pre">mpl::eval_if</span></tt> uses, of selecting a
+ nullary function to invoke, could work nicely here. The
+ preprocessor doesn't have a direct analogue for <tt class="docutils literal"><span
+
+ class="pre">mpl::eval_if</span></tt>, but it doesn't really
+ need one: We can get the right effect by adding a second set of
+ parentheses to <tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>.</p>
+ <pre class="literal-block">#define BOOST_FUNCTION_unary() : std::unary_function<A0,R>
+#define BOOST_FUNCTION_empty() // nothing
+
+...
+
+ , BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary
+ , BOOST_FUNCTION_empty
+ )<strong>()</strong>
+
+#undef BOOST_FUNCTION_empty
+#undef BOOST_FUNCTION_unary
+</pre>
+ <!-- @ignore() -->
+ <p>A nullary macro that generates nothing is so commonly needed that
+ the library's "facilities" group provides one: <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_EMPTY</span></tt>. To complete the
+ example we'll need to delay evaluation all the way to the outer <tt
+
+ class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
+ invocation, because <tt class="docutils literal"><span class="pre">std::binary_function<A0,A1,R></span></tt>
+ also has a "comma problem":</p>
+ <pre class="literal-block"># include <boost/preprocessor/<strong>facilities/empty.hpp</strong>>
+
+# define BOOST_FUNCTION_binary() : std::binary_function<A0,A1,R>
+# define BOOST_FUNCTION_unary() : std::unary_function<A0,R>
+
+// specialization pattern
+template <class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)>
+struct function<R ( BOOST_PP_ENUM_PARAMS(n,A) )>
+ BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,2), BOOST_FUNCTION_binary
+ , BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary
+ , <strong>BOOST_PP_EMPTY</strong>
+ )
+ )<strong>()</strong>
+{
+ <em>...class body omitted...</em>
+};
+
+# undef BOOST_FUNCTION_unary
+# undef BOOST_FUNCTION_binary
+# undef n
+</pre>
+ <!-- @stack.pop()
+stack[-1].replace('// specialization pattern', '////\n%s\n////' % str(example))compile(source_file = tmp_boost_function, pop = None) -->
+ <p>Note that because we happened to be using file iteration, we
+ could have also used <tt class="docutils literal"><span class="pre">#if</span></tt>
+ on <tt class="docutils literal"><span class="pre">n</span></tt>'s
+ value directly:</p>
+ <pre class="literal-block"> template <class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)>
+ struct function<R ( BOOST_PP_ENUM_PARAMS(n,A) )>
+<strong>#if n == 2</strong>
+ : std::binary_function<A0, A1, R>
+<strong>#elif n == 1</strong>
+ : std::unary_function<A0, R>
+<strong>#endif</strong>
+</pre>
+ <!-- @stack.pop()
+stack[-1].sub( r'////.*////', '////\n%s\n////' % str(example), flags = re.DOTALL)compile(source_file = tmp_boost_function, pop = None) -->
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_IF</span></tt>
+ has the advantage of enabling us to encapsulate the logic in a
+ reusable macro, parameterized on <tt class="docutils literal"><span
+
+ class="pre">n</span></tt>, that is compatible with all
+ repetition constructs:</p>
+ <pre class="literal-block">#define BOOST_FUNCTION_BASE(n) \
+ BOOST_PP_IF(BOOST_PP_EQUAL(n,2), BOOST_FUNCTION_binary \
+ , BOOST_PP_IF(BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary \
+ , BOOST_PP_EMPTY \
+ ) \
+ )()
+</pre>
+ <!-- @compile(options = ['-E']) --> </div>
+ <div class="section" id="other-selection-constructs">
+ <h3><a name="other-selection-constructs">A.4.3.2 Other Selection
+ Constructs</a></h3>
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_IDENTITY</span></tt>,
+ also in the "facilities" group, is an interesting cousin of <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_EMPTY</span></tt>:</p>
+ <pre class="literal-block">#define BOOST_PP_IDENTITY(tokens) tokens BOOST_PP_EMPTY
+</pre>
+ <!-- @ignore() -->
+ <p>You can think of it as creating a nullary macro that returns <tt
+
+ class="docutils literal"><span class="pre">tokens</span></tt>:
+ When empty parentheses are appended, the trailing <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_EMPTY</span></tt> is expanded leaving
+ just <tt class="docutils literal"><span class="pre">tokens</span></tt>
+ behind. If we had wanted inheritance from <tt class="docutils literal"><span
+
+ class="pre">mpl::empty_base</span></tt> when <tt class="docutils literal"><span
+
+ class="pre">function</span></tt>'s arity is not one or two, we
+ could have used <tt class="docutils literal"><span class="pre">BOOST_PP_IDENTITY</span></tt>:</p>
+ <pre class="literal-block">// specialization pattern
+template <class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)>
+struct function<R ( BOOST_PP_ENUM_PARAMS(n,A) )>
+ BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,2), BOOST_FUNCTION_binary
+ , BOOST_PP_IF(
+ BOOST_PP_EQUAL(n,1), BOOST_FUNCTION_unary
+ , <strong>BOOST_PP_IDENTITY(: mpl::empty_base)</strong>
+ )
+ )<strong>()</strong>
+{
+ <em>...class body omitted...</em>
+};
+</pre>
+ <!-- @stack.pop()
+stack[-1].sub( r'////.*////', '////\n%s\n////' % str(example), flags = re.DOTALL)compile(source_file = tmp_boost_function, pop = None) -->
+ <p>It's also worth knowing about <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_EXPR_IF</span></tt>, which generates its
+ second argument or nothing, depending on the Boolean value of its
+ first:</p>
+ <pre class="literal-block">#define BOOST_PP_EXPR_IF(c,tokens) \
+ BOOST_PP_IF(c,BOOST_PP_IDENTITY(tokens),BOOST_PP_EMPTY)()
+</pre>
+ <!-- @example.append(
+ 'int BOOST_PP_EXPR_IF(1,main) BOOST_PP_EXPR_IF(0,quack) () {}')compile() -->
+ <p>So <tt class="docutils literal"><span class="pre">BOOST_PP_EXPR_IF(1,foo)</span></tt>
+ expands to <tt class="docutils literal"><span class="pre">foo</span></tt>,
+ while <tt class="docutils literal"><span class="pre">BOOST_PP_EXPR_IF(0,foo)</span></tt>
+ expands to nothing.</p>
+ </div>
+ </div>
+ <div class="section" id="token-pasting">
+ <h2><a name="token-pasting">A.4.4 Token Pasting</a></h2>
+ <p>It would be nice if there were a generic way to access the return
+ and parameter types of <em>all</em> function objects, rather than
+ just the unary and binary ones. A metafunction returning the
+ signature as an MPL sequence would do the trick. We could just
+ specialize <tt class="docutils literal"><span class="pre">signature</span></tt>
+ for each <tt class="docutils literal"><span class="pre">function</span></tt>
+ arity:</p>
+ <pre class="literal-block">template <class F> struct signature; // primary template
+
+// partial specializations for boost::function
+template <class R>
+struct signature<function<R()> >
+ : mpl::vector1<R> {};
+
+template <class R, class A0>
+struct signature<function<R(A0)> >
+ : mpl::vector2<R,A0> {};
+
+template <class R, class A0, class A1>
+struct signature<function<R(A0,A1)> >
+ : mpl::vector3<R,A0,A1> {};
+
+...
+</pre>
+ <!-- @example.prepend('template <class T> struct function;')
+compile() -->
+ <p>To generate these specializations, we might add the following to
+ our pattern:</p>
+ <pre class="literal-block">template <class R BOOST_PP_ENUM_TRAILING_PARAMS(n, class A)>
+struct signature<function<R( BOOST_PP_ENUM_PARAMS(n,A) )> >
+ : mpl::<strong>BOOST_PP_CAT</strong>(vector,n)<
+ R BOOST_PP_ENUM_TRAILING_PARAMS(n,A)
+ > {};
+</pre>
+ <!-- @stack.pop()
+stack[-1].replace( ';//', ''';// template <class T> struct signature; %s''' % example)
+compile(source_file = tmp_boost_function) -->
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_CAT</span></tt>
+ implements <strong>token pasting</strong>; its two arguments are
+ "glued" together into a single token. Since this is a
+ general-purpose macro, it sits in <tt class="docutils literal"><span
+
+ class="pre">cat.hpp</span></tt> at the top level of the
+ library's directory tree.</p>
+ <p>Although the preprocessor has a built-in token-pasting operator, <tt
+
+ class="docutils literal"><span class="pre">##</span></tt>, it only
+ works within a macro definition. If we'd used it here, it wouldn't
+ have taken effect at all:</p>
+ <pre class="literal-block">template <class R>
+struct signature<function<R()> >
+ : mpl::<strong>vector##1</strong><R> {};
+
+template <class R, class A0>
+struct signature<function<R(A0)> >
+ : mpl::<strong>vector##2</strong><R,A0> {};
+
+template <class R, class A0, class A1>
+struct signature<function<R(A0,A1)> >
+ : mpl::<strong>vector##3</strong><R,A0,A1> {};
+
+...
+</pre>
+ <!-- @example.replace('##','')
+example.prepend(''' template <class T> struct function; template <class T> struct signature;''')
+compile() -->
+ <p>Also, <tt class="docutils literal"><span class="pre">##</span></tt>
+ often yields surprising results by taking effect before its
+ arguments have been expanded:</p>
+ <pre class="literal-block">#define N 10
+#define VEC(i) vector##i
+
+VEC(N) // vectorN
+</pre>
+ <!-- @example.wrap('typedef int vectorN;', 'x;')
+compile() -->
+ <p>By contrast, <tt class="docutils literal"><span class="pre">BOOST_PP_CAT</span></tt>
+ delays concatenation until after its arguments have been fully
+ evaluated:</p>
+ <pre class="literal-block">#define N 10
+#define VEC(i) BOOST_PP_CAT(vector,i)
+
+VEC(N) // vector10
+</pre>
+ <!-- @example.wrap('''
+ #include <boost/preprocessor/cat.hpp> typedef int vector10; ''', 'x;')compile() -->
+ </div>
+ <div class="section" id="data-types">
+ <h2><a name="data-types">A.4.5 Data Types</a></h2>
+ <p>The Preprocessor library also provides <strong>data types</strong>,
+ which you can think of as being analogous to the MPL's type
+ sequences. Preprocessor data types store <em>macro arguments</em>
+ instead of C++ types.</p>
+ <div class="section" id="sequences">
+ <h3><a name="sequences">A.4.5.1 Sequences</a></h3>
+ <p>A <strong>sequence</strong> (or <strong>seq</strong> for short)
+ is any string of nonempty parenthesized <em>macro arguments</em>.
+ For instance, here's a three-element sequence:</p>
+ <pre class="literal-block">#define MY_SEQ (f(12))(a + 1)(foo)
+</pre>
+ <!-- @ignore() -->
+ <p>Here's how we might use a sequence to generate specializations of
+ the <tt class="docutils literal"><span class="pre">is_integral</span></tt>
+ template from the Boost Type Traits library (see Chapter 2):</p>
+ <pre class="literal-block">#include <boost/preprocessor/seq.hpp>
+
+template <class T>
+struct is_integral : mpl::false_ {};
+
+// a seq of integral types with unsigned counterparts
+#define BOOST_TT_basic_ints (char)(short)(int)(long)
+
+// generate a seq containing "signed t" and "unsigned t"
+#define BOOST_TT_int_pair(r,data,t) (signed t)(unsigned t)
+
+// a seq of all the integral types
+#define BOOST_TT_ints \
+ (bool)(char) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_TT_int_pair, ~, BOOST_TT_basic_ints)
+
+// generate an is_integral specialization for type t
+#define BOOST_TT_is_integral_spec(r,data,t) \
+ template <> \
+ struct is_integral<t> : mpl::true_ {};
+
+BOOST_PP_SEQ_FOR_EACH(BOOST_TT_is_integral_spec, ~, BOOST_TT_ints)
+
+#undef BOOST_TT_is_integral_spec
+#undef BOOST_TT_ints
+#undef BOOST_TT_int_pair
+#undef BOOST_TT_basic_ints
+</pre>
+ <!-- @compile() -->
+ <p><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH</span></tt>
+ is a higher-order macro, similar to <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_REPEAT</span></tt>, that invokes its
+ first argument on each element of its third argument.</p>
+ <p>Sequences are the most efficient, most flexible, and
+ easiest-to-use of the library's data structures, provided that you
+ never need to make an empty one: An empty sequence would contain
+ no tokens, and so couldn't be passed as a macro argument. The
+ other data structures covered here all have an empty
+ representation.</p>
+ <p>The facilities for manipulating sequences are all in the
+ library's <tt class="docutils literal"><span class="pre">seq/</span></tt>
+ subdirectory. They are summarized in Table A.5, where <tt class="docutils literal"><span
+
+ class="pre">t</span></tt> is the sequence <tt class="docutils literal"><span
+
+ class="pre">(</span></tt><em>t</em><sub>0</sub><tt class="docutils literal"><span
+
+ class="pre">)(</span></tt><em>t</em><sub>1</sub><tt class="docutils literal"><span
+
+ class="pre">)...(</span></tt><em>t</em><sub>k</sub><tt class="docutils literal"><span
+
+ class="pre">)</span></tt>. Where <em>s</em>, <em>r</em>, and
+ <em>d</em> appear, they have a similar purpose to the <tt class="docutils literal"><span
+
+ class="pre">z</span></tt> parameters we discussed earlier (and
+ suggested you ignore for now).</p>
+ <table border="1" class="docutils">
+ <caption>Preprocessor Sequence Operations</caption> <colgroup> <col
+
+ width="51%" /> <col width="49%" /> </colgroup>
+ <thead valign="bottom">
+ <tr>
+ <th>Expression</th>
+ <th>Result</th>
+ </tr>
+ </thead>
+ <tbody valign="top">
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_CAT(t)</span></tt></td>
+ <td><em>t</em><sub>0</sub><em>t</em><sub>1</sub>...<em>t</em><sub>k</sub></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_ELEM(n,t)</span></tt></td>
+ <td><em>t</em><sub>n</sub></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_ENUM(t)</span></tt></td>
+ <td><em>t</em><sub>0</sub>, <em>t</em><sub>1</sub>, ...<em>t</em><sub>k</sub></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FILTER(pred,data,t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">t</span></tt>
+ without the elements that don't satisfy <tt class="docutils literal"><span
+
+ class="pre">pred</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FIRST_N(n,t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>n-1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOLD_LEFT(op,</span>
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
+ <td>...<tt class="docutils literal"><span class="pre">op(</span></tt><em>s</em><tt
+
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
+
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
+
+ class="docutils literal"><span class="pre">,x</span></tt>,<em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">),</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">),</span></tt><em>t</em><sub>2</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...</td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOLD_RIGHT(op,</span>
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
+ <td>...<tt class="docutils literal"><span class="pre">op(</span></tt><em>s</em><tt
+
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
+
+ class="docutils literal"><span class="pre">,op(</span></tt><em>s</em><tt
+
+ class="docutils literal"><span class="pre">,x</span></tt>,<em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">),</span></tt><em>t</em><sub>k-1</sub><tt
+
+ class="docutils literal"><span class="pre">),</span></tt>
+ <em>t</em><sub>k-2</sub><tt class="docutils literal"><span class="pre">)</span></tt>...</td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH(f,</span>
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">f(</span></tt><em>r</em><tt
+
+ class="docutils literal"><span class="pre">,</span> <span
+
+ class="pre">x,</span></tt><em>t</em><sub>0</sub><tt class="docutils literal"><span
+
+ class="pre">)</span> <span class="pre">f(</span></tt><em>r</em><tt
+
+ class="docutils literal"><span class="pre">,</span> <span
+
+ class="pre">x,</span></tt><em>t</em><sub>1</sub><tt class="docutils literal"><span
+
+ class="pre">)</span></tt>...<tt class="docutils literal"><span
+
+ class="pre">f(</span></tt><em>r</em><tt class="docutils literal"><span
+
+ class="pre">,</span> <span class="pre">x,</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH_I(g,</span>
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">g(</span></tt><em>r</em><tt
+
+ class="docutils literal"><span class="pre">,</span> <span
+
+ class="pre">x,</span> <span class="pre">0,</span></tt>
+ <em>t</em><sub>0</sub><tt class="docutils literal"><span class="pre">)</span>
+ <span class="pre">g(</span></tt><em>r</em><tt class="docutils literal"><span
+
+ class="pre">,</span> <span class="pre">x,</span> <span
+
+ class="pre">1,</span></tt> <em>t</em><sub>1</sub><tt class="docutils literal"><span
+
+ class="pre">)</span></tt>... <tt class="docutils literal"><span
+
+ class="pre">g(</span></tt><em>r</em><tt class="docutils literal"><span
+
+ class="pre">,</span> <span class="pre">x,</span> <span
+
+ class="pre">k,</span></tt> <em>t</em><sub>k</sub><tt class="docutils literal"><span
+
+ class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_FOR_EACH_PRODUCT(h,</span>
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
+ <td>
+ <dl class="first last docutils">
+ <dt>Cartesian product—</dt>
+ <dd>see online docs</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_INSERT(t,i,tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i-1</sub><tt
+
+ class="docutils literal"><span class="pre">)(tokens)</span>
+ <span class="pre">(</span></tt><em>t</em><sub>i</sub><tt class="docutils literal"><span
+
+ class="pre">)(</span></tt><em>t</em><sub>i+1</sub><tt class="docutils literal"><span
+
+ class="pre">)</span></tt>...<tt class="docutils literal"><span
+
+ class="pre">(</span></tt><em>t</em><sub>k</sub><tt class="docutils literal"><span
+
+ class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_POP_BACK(t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k-1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_POP_FRONT(t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>2</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_PUSH_BACK(t,tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)(tokens)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_PUSH_FRONT(t,tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(tokens)(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REMOVE(t,i)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i-1</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>i+1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REPLACE(t,i,tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i-1</sub><tt
+
+ class="docutils literal"><span class="pre">)(tokens)(</span></tt><em>t</em><sub>i+1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REST_N(n,t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>n</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>n+1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_REVERSE(t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>k-1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_HEAD(t)</span></tt></td>
+ <td><em>t</em><sub>0</sub></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TAIL(t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>2</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_SIZE(t)</span></tt></td>
+ <td><em>k+1</em></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_SUBSEQ(t,i,m)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i</sub><tt
+
+ class="docutils literal"><span class="pre">)(</span></tt><em>t</em><sub>i+1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt>...<tt
+
+ class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>i+m-1</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TO_ARRAY(t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em>
+ <tt class="docutils literal"><span class="pre">,(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...<em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TO_TUPLE(t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt> <em>t</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...<em>t</em><sub>k</sub><tt
+
+ class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TRANSFORM(f,</span>
+ <span class="pre">x,</span> <span class="pre">t)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(f(</span></tt><em>r</em><tt
+
+ class="docutils literal"><span class="pre">,x,</span></tt><em>t</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">))</span> <span
+
+ class="pre">(f(</span></tt><em>r</em><tt class="docutils literal"><span
+
+ class="pre">,x,</span></tt><em>t</em><sub>1</sub><tt class="docutils literal"><span
+
+ class="pre">))</span></tt>...<tt class="docutils literal"><span
+
+ class="pre">(f(</span></tt><em>r</em><tt class="docutils literal"><span
+
+ class="pre">,x,</span></tt><em>t</em><sub>k</sub><tt class="docutils literal"><span
+
+ class="pre">))</span></tt></td>
+ </tr>
+ </tbody>
+ </table>
+ <p>It's worth noting that while there is no upper limit on the
+ length of a sequence, operations such as <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_SEQ_ELEM</span></tt> that take numeric
+ arguments will only work with values up to 256.</p>
+ </div>
+ <div class="section" id="tuples">
+ <h3><a name="tuples">A.4.5.2 Tuples</a></h3>
+ <p>A <strong>tuple</strong> is a very simple data structure for
+ which the library provides random access and a few other basic
+ operations. A tuple takes the form of a parenthesized,
+ comma-separated list of <em>macro arguments</em>. For example,
+ this is a three-element tuple:</p>
+ <pre class="literal-block">#define TUPLE3 (f(12), a + 1, foo)
+</pre>
+ <p>The operations in the library's <tt class="docutils literal"><span
+
+ class="pre">tuple/</span></tt> subdirectory can handle tuples
+ of up to 25 elements. For example, a tuple's <tt class="docutils literal"><span
+
+ class="pre">N</span></tt>th element can be accessed via <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_TUPLE_ELEM</span></tt>, as follows:</p>
+ <pre class="literal-block"> // length index tuple
+BOOST_PP_TUPLE_ELEM( 3 , 1 , TUPLE3) // a + 1
+</pre>
+ <!-- @def gen_id(id = 'a', hdr = 'tuple'):
+ example.wrap(''' #include <boost/preprocessor/%s.hpp> int const %s = 0; int const x =''' % (hdr,id), ';')
+ compile('all', pop = 1)gen_id() -->
+ <p>Notice that we had to pass the tuple's length as the second
+ argument to <tt class="docutils literal"><span class="pre">BOOST_PP_TUPLE_ELEM</span></tt>;
+ in fact, <em>all</em> tuple operations require explicit
+ specification of the tuple's length. We're not going to summarize
+ the other four operations in the "tuple" group here—you can
+ consult the Preprocessor library's electronic documentation for
+ more details. We note, however, that sequences can be transformed
+ into tuples with <tt class="docutils literal"><span class="pre">BOOST_PP_SEQ_TO_TUPLE</span></tt>,
+ and nonempty tuples can be transformed back into sequences with <tt
+
+ class="docutils literal"><span class="pre">BOOST_PP_TUPLE_TO_SEQ</span></tt>.</p>
+ <p>The greatest strength of tuples is that they conveniently take
+ the same representation as a macro argument list:</p>
+ <pre class="literal-block">#define FIRST_OF_THREE(a1,a2,a3) a1
+#define SECOND_OF_THREE(a1,a2,a3) a2
+#define THIRD_OF_THREE(a1,a2,a3) a3
+
+// uses tuple as an argument list
+# define SELECT(selector, tuple) <strong>selector tuple</strong>
+
+SELECT(THIRD_OF_THREE, TUPLE3) // foo
+</pre>
+ <!-- @gen_id('foo') --> </div>
+ <div class="section" id="arrays">
+ <h3><a name="arrays">A.4.5.3 Arrays</a></h3>
+ <p>An <strong>array</strong> is just a tuple containing a
+ non-negative integer and a tuple of that length:</p>
+ <pre class="literal-block">#define ARRAY3 ( 3, TUPLE3 )
+</pre>
+ <p>Because an array carries its length around with it, the library's
+ interface for operating on arrays is much more convenient than the
+ one used for tuples:</p>
+ <pre class="literal-block">BOOST_PP_ARRAY_ELEM(1, ARRAY3) // a + 1
+</pre>
+ <!-- @gen_id(hdr = 'array')
+del stack[-2:] -->
+ <p>The facilities for manipulating arrays of up to 25 elements are
+ all in the library's <tt class="docutils literal"><span class="pre">array/</span></tt>
+ subdirectory. They are summarized in Table A.6, where <tt class="docutils literal"><span
+
+ class="pre">a</span></tt> is the array <tt class="docutils literal"><span
+
+ class="pre">(</span></tt><em>k</em><tt class="docutils literal"><span
+
+ class="pre">,</span> <span class="pre">(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,...</span></tt><em>a</em><sub>k-1</sub><tt
+
+ class="docutils literal"><span class="pre">))</span></tt>.</p>
+ <table border="1" class="docutils">
+ <caption>Preprocessor Array Operations</caption> <colgroup> <col
+
+ width="52%" /> <col width="48%" /> </colgroup>
+ <thead valign="bottom">
+ <tr>
+ <th>Expression</th>
+ <th>Result</th>
+ </tr>
+ </thead>
+ <tbody valign="top">
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_DATA(a)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">)</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_ELEM(i,a)</span></tt></td>
+ <td><em>a</em><sub>i</sub></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_INSERT(a,</span>
+ <span class="pre">i,</span> <span class="pre">tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...<em>a</em><sub>i-1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span> <span
+
+ class="pre">tokens,</span></tt> <em>a</em><sub>i</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>i+1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_POP_BACK(a)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k-1</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-2</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_POP_FRONT(a)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k-1</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>2</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_PUSH_BACK(a,</span>
+ <span class="pre">tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">,</span>
+ <span class="pre">tokens))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_PUSH_FRONT(a,</span>
+ <span class="pre">tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k+1</em><tt
+
+ class="docutils literal"><span class="pre">,(tokens,</span></tt>
+ <em>a</em><sub>1</sub><tt class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>2</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_REMOVE(a,</span>
+ <span class="pre">i)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k-1</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>i-1</sub><tt class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>i+1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_REPLACE(a,</span>
+ <span class="pre">i,</span> <span class="pre">tokens)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>i-1</sub><tt class="docutils literal"><span class="pre">,</span>
+ <span class="pre">tokens,</span></tt> <em>a</em><sub>i+1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>k-1</sub><tt class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_REVERSE(a)</span></tt></td>
+ <td><tt class="docutils literal"><span class="pre">(</span></tt><em>k</em><tt
+
+ class="docutils literal"><span class="pre">,(</span></tt><em>a</em><sub>k-1</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>k-2</sub><tt
+
+ class="docutils literal"><span class="pre">,</span></tt>...
+ <em>a</em><sub>1</sub><tt class="docutils literal"><span class="pre">,</span></tt><em>a</em><sub>0</sub><tt
+
+ class="docutils literal"><span class="pre">))</span></tt></td>
+ </tr>
+ <tr>
+ <td><tt class="docutils literal"><span class="pre">BOOST_PP_ARRAY_SIZE(a)</span></tt></td>
+ <td><em>k</em></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="section" id="lists">
+ <h3><a name="lists">A.4.5.4 Lists</a></h3>
+ <p>A <strong>list</strong> is a two-element tuple whose first
+ element is the first element of the list, and whose second element
+ is a list of the remaining elements, or <tt class="docutils literal"><span
+
+ class="pre">BOOST_PP_NIL</span></tt> if there are no remaining
+ elements. Lists have access characteristics similar to those of a
+ runtime linked list. Here is a three-element list:</p>
+ <pre class="literal-block">#define LIST3 (<strong>f(12)</strong>, (<strong>a + 1</strong>, (<strong>foo</strong>, BOOST_PP_NIL)))
+</pre>
+ <!-- @ignore() -->
+ <p>The facilities for manipulating lists are all in the library's <tt
+
+ class="docutils literal"><span class="pre">list/</span></tt>
+ subdirectory. Because the operations are a subset of those
+ provided for sequences, we're not going to summarize them here—it
+ should be easy to understand the list operations by reading the
+ documentation on the basis of our coverage of sequences.</p>
+ <p>Like sequences, lists have no fixed upper length bound. Unlike
+ sequences, lists can also be empty. It's rare to need more than 25
+ elements in a preprocessor data structure, and lists tend to be
+ slower to manipulate and harder to read than any of the other
+ structures, so they should normally be used only as a last resort.</p>
+ </div>
+ </div>
+ </div>
+ <div class="section" id="exercise">
+ <h1><a name="exercise">A.5 Exercise</a></h1>
+ <dl class="docutils">
+ <dt>A-0</dt>
+ <dd>Fully preprocessor-ize the <tt class="docutils literal"><span class="pre">tiny</span></tt>
+ type sequence implemented in Chapter 5 so that all boilerplate code
+ is eliminated and the maximum size of a <tt class="docutils literal"><span
+
+ class="pre">tiny</span></tt> sequence can be adjusted by
+ changing <tt class="docutils literal"><span class="pre">TINY_MAX_SIZE</span></tt>.</dd>
+ </dl>
+ <!-- on hold:
+It isn't uncommon to need token-wise arithmetic operations forpurposes other than invoking Preprocessor Library repetitionmacros. For example, let's write a metafunction to generate
+function types from "signature" type sequences that specify thefunction's return and parameter types:: template <unsigned Size, class Signature>
+ struct to_function_impl; template <class Signature> struct to_function
+ : to_function_impl<mpl::size<Signature>::type, Signature> {};The challenge now is to implement ``to_function_impl``. For
+``Size == 3``, an appropriate specialization might look like this:: template <class Signature> struct to_function_impl<3,Signature>
+ { typedef mpl::begin<Signature>::type i0; typedef mpl::deref<i0>::type t0;
+ typedef mpl::next<i0>::type i1; typedef mpl::deref<i1>::type t1; typedef mpl::next<i1>::type i2;
+ typedef mpl::deref<i2>::type t2; typedef t0 type(t1,t2); };
+A local macro to generate a single ``to_function_impl``specialization would look something like this:
+.. parsed-literal:: #define to_function_impl_spec(size) \\ template <class Signature> \\
+ struct to_function_impl<3,Signature> \\ { \\ typedef mpl::begin<Signature>::type i0; \\ typedef mpl::deref<i0>::type t0; \\
+ \\ BOOST_PP_REPEAT_FROM_TO(1, size, to_function_t, ~) \\ \\ typedef t0 type(BOOST_PP_ENUM_SHIFTED_PARAMS(size,t)); \\
+ }; #define to_function_t(z, n, unused) \\ typedef mpl::next<BOOST_PP_CAT(i,\ **BOOST_PP_DEC(n)**)>::type \\
+ BOOST_PP_CAT(i,n); \\ \\ typedef mpl::deref<BOOST_PP_CAT(i,n)>::type BOOST_PP_CAT(t,n);
+We've used some new library macros above; here is a brief rundown:* ``BOOST_PP_REPEAT_FROM_TO`` is just like ``BOOST_PP_REPEAT``, except that it accepts an initial repetition index. Since every
+ function has a return type, we don't need to worry about the case where ``Size == 0``.* ``BOOST_PP_ENUM_SHIFTED_PARAMS`` is just like
+ ``BOOST_PP_ENUM_PARAMS``, except that repetition indices start at ``1`` instead of ``0``.* ``BOOST_PP_CAT`` implements token pasting; its two arguments are
+ "glued" together into a single token. Since this is a general-purpose macro, it sits in ``cat.hpp`` at the top level of the library's directory tree. [#paste]_
+.. [#paste] The preprocessor's built-in token-pasting operator, ``##``, often yields surprising results by taking effect before its arguments have been expanded. By contrast, ``BOOST_PP_CAT`` delays concatenation until after its arguments have been fully
+ evaluated.* Finally, though it only performs trivial arithmetic, ``BOOST_PP_DEC`` plays a crucial role in generating an
+ appropriate prior iterator identifier for our own code in ``to_function_t``.If we didn't have ``BOOST_PP_REPEAT_FROM_TO`` at our disposal in
+the previous example, we might've had to use ``BOOST_PP_REPEAT``,which always starts iterating at ``0``. Consequently``to_function_t`` would've been responsible for producing thedeclarations of ``i0`` and ``t0`` as well as those of the other
+nested types. To manage that, it would need a way to selectdifferent expansions depending on the value of ``n``.In its ``control/`` directory, the Preprocessor Library supplies a
+macro ``BOOST_PP_IF(c,t,f)`` that fulfills a similar role to theone filled by ``mpl::if_``. Rewriting the example accordingly, weget:
+.. parsed-literal:: #define to_function_impl_spec(size) \\ template <class Signature> \\
+ struct to_function_impl<3,Signature> \\ { \\ BOOST_PP_REPEAT_FROM_TO(1, size, to_function_t, ~) \\ \\
+ typedef t0 type(BOOST_PP_ENUM_SHIFTED_PARAMS(size,t)); \\ }; #define to_function_t(z, n, unused) \\
+ typedef BOOST_PP_IF( \\ n, \\ mpl::next<BOOST_PP_CAT(i,BOOST_PP_DEC(n))>::type, \\ typedef mpl::begin<Signature>::type i0; \\
+ ) \\ BOOST_PP_CAT(i,n); \\ \\ typedef mpl::deref<BOOST_PP_CAT(i,n)>::type BOOST_PP_CAT(t,n);
+Although the formulation above will work, it does unnecessary workwhen ``n == 0``, evaluating the "true" branch of the conditionalonly to discard it. -->
+ </div>
+ </div>
+ <hr class="docutils footer" />
+ <div class="footer"> Generated on: 2005-10-17 19:34 UTC. Generated by <a class="reference"
+
+ href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference"
+
+ href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>
+ source. </div>
+ </body>
+</html>
+<!--
+ FILE ARCHIVED ON 19:59:10 Mar 30, 2013 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 21:06:19 May 19, 2015. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
+ ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)).-->
diff --git a/third_party/boostorg/preprocessor/doc/acknowledgements.html b/third_party/boostorg/preprocessor/doc/acknowledgements.html
new file mode 100644
index 0000000..caa3583
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/acknowledgements.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>acknowledgements.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+</head>
+<body>
+ <h4>Acknowledgements</h4>
+ <div>
+ The following are a few acknowledgements of people that contributed to
+ or were instrumental in the development of the library by Vesa Karnoven and myself.
+ </div>
+ <h4>Vesa Karvonen</h4>
+ <div>
+ The original idea of passing two extra parameters to REPEAT, which makes it possible to create preprocessor code on top of it,
+ was due to Aleksey Gurtovoy.
+ The invokeable IDENTITY macro was invented by him.
+ He also suggested the name for the library.
+ Many thanks to Aleksey for his insights!
+ </div>
+ <div>
+ Thanks to everyone who participated in the review: David Abrahams, Beman Dawes, Ronald Garcia, Douglas Gregor, Aleksey Gurtovoy, Jeremy Siek, and Daryle Walker.
+ </div>
+ <div>
+ Thanks to Chris Little and Mat Marcus for providing help with MWCW.
+ </div>
+ <div>
+ The original automatic recursion technique, which makes many of the library
+ primitives easier to use, was invented by Paul Mensonides.
+ </div>
+ <div>
+ The PREPROCESSOR library has been developed by Vesa Karvonen.
+ </div>
+ <h4>Paul Mensonides</h4>
+ <div>
+ Thanks to Vesa Karvonen for the original conception of the library.
+ His work, his help, and his opinions are all much appreciated.
+ </div>
+ <div>
+ Thanks also to David Abrahams for his observations and continued support.
+ </div>
+ <div>
+ The help of several other Boost developers is also greatly appreciated.
+ In particular, thanks to Aleksey Gurtovoy for his suggestions and to Ralf W. Grosse-Kunstleve for providing
+ access to several compilers for testing.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/bibliography.html b/third_party/boostorg/preprocessor/doc/bibliography.html
new file mode 100644
index 0000000..512e2f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/bibliography.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>bibliography.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+</head>
+<body>
+<h4>Bibliography</h4>
+<table style="margin-left: 20px">
+ <tr>
+ <td><b><a name="stroustrup"></a>[Stroustrup]</b></td>
+ <td>Stroustrup: <i>The Design and Evolution of C++</i>, ISBN 0201543303</td>
+ </tr>
+ <tr>
+ <td><b><a name="czarnecki"></a>[Czarnecki]</b></td>
+ <td>Czarnecki, Eisenecker: <i>Generative Programming</i>, ISBN 0201309777</td>
+ </tr>
+ <tr>
+ <td><b><b><a name="barton"></a>[Barton]</b></td>
+ <td>Barton, Nackman: <i>Scientific and Engineering C++</i>, ISBN 0201533936</td>
+ </tr>
+ <tr>
+ <td><b><a name="mcconnell"></a>[McConnell]</b></td>
+ <td>McConnell: <i>Code Complete</i>, ISBN 1556154844</td>
+ </tr>
+ <tr>
+ <td><b><a name="std"></a>[Std]</b></td>
+ <td>ISO/IEC 14882:1998 <i>Programming Languages - C++</i></td>
+ </tr>
+ <tr>
+ <td><b>[Thompson]</b></td>
+ <td>Thompson: <i>Haskell: The Craft of Functional Programming</i>, ISBN 0201342758</td>
+ </tr>
+ <tr>
+ <td><b>[Okasaki]</b></td>
+ <td>Okasaki: <i>Purely Functional Data Structures</i>, ISBN 0521663504</td>
+ </tr>
+ <tr>
+ <td><b>[Cousineau]</b></td>
+ <td>Cousineau, Mauny: <i>The Functional Approach to Programming</i>, ISBN 0521576814</td>
+ </tr>
+ <tr>
+ <td><b>[Abelson]</b></td>
+ <td>Abelson, Sussman, Sussman: <i>Structure and Interpretation of Computer Programs</i>, ISBN 0521576814</td>
+ </tr>
+</table>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/contents.html b/third_party/boostorg/preprocessor/doc/contents.html
new file mode 100644
index 0000000..ad0c50c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/contents.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>contents.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <style>
+ a, a:link, a:visited { color: black; font-weight: bold; }
+ </style>
+ </head>
+ <body>
+ <h4><a href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html"
+ target="_top">Introduction</a></h4>
+ <h4><a href="topics.html">Topics</a></h4>
+ <a href="topics.html">
+ </a>
+ <h4><a href="topics.html"></a><a href="terms.html">Terminology</a></h4>
+ <a href="terms.html">
+ </a>
+ <h4><a href="terms.html"></a><a href="data.html">Data Types</a></h4>
+ <a href="data.html">
+ </a>
+ <h4><a href="data.html"></a><a href="ref.html">Reference</a></h4>
+ <a href="ref.html">
+ </a>
+ <h4><a href="ref.html"></a><a href="headers.html">Headers</a></h4>
+ <a href="headers.html">
+ </a>
+ <h4><a href="headers.html"></a><a href="examples.html">Examples</a></h4>
+ <a href="examples.html">
+ </a>
+ <h4><a href="examples.html"></a><a href="miscellanea.html">Miscellanea</a></h4>
+ <a href="miscellanea.html">
+ <!--
+© Copyright Housemarque Oy 2002© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)--> </a>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/data.html b/third_party/boostorg/preprocessor/doc/data.html
new file mode 100644
index 0000000..39e684e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/data.html
@@ -0,0 +1,27 @@
+<html>
+ <head>
+ <title>data.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+ </head>
+ <body>
+ <h4>
+ Data Types <small><a href="contents.html" target="index">[back]</a></small>
+ </h4>
+ <ul>
+ <li><a href="data/arrays.html">arrays</a></li>
+ <li><a href="data/lists.html">lists</a></li>
+ <li><a href="data/sequences.html">sequences</a></li>
+ <li><a href="data/tuples.html">tuples</a></li>
+ </ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/data/arrays.html b/third_party/boostorg/preprocessor/doc/data/arrays.html
new file mode 100644
index 0000000..d968c4f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/data/arrays.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>arrays.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>Arrays</h4>
+ <div> An <i>array</i> is a data structure consisting of a two-element <i>tuple</i>.
+ The first element is the number of elements in the <i>array</i>.
+ The second element is another <i>tuple</i> of the elements in the <i>array</i>.
+ For example, </div>
+ <div class="code"> (<i>3</i>, (<i>a</i>, <i>b</i>, <i>c</i>)) </div>
+ <div> ...is an <i>array</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and
+ <i>c</i>. </div>
+ <div> The primary strength of <i>arrays</i> is that they store their own
+ size. Because of this, access to elements does not require the
+ size. It only requires that an element exists at a certain index. </div>
+ <div> This allows macro parameters to be variable in size and allows data
+ states to change size without the user explicitly keeping track of the
+ size independently.<br>
+ <br>
+ An <i>array </i>can be empty and have no elements. An empty array has a
+ 0 size. The notation for an empty array is '(0,())'.<br>
+ <br>
+ <span style="font-style: italic;"> </span></div>
+ <div>With variadic macro support a <i>tuple </i>has all of the
+ functionality as an <i>array</i>, knows its own size, and is easier
+ syntactically to use. Because of that an <i>array</i> should be used, as
+ opposed to a <i>tuple</i>, only if your compiler does not support
+ variadic macros. The only advantage an <i>array </i>has over a <i>tuple
+ </i>is that an <i>array </i>can be empty while a <i>tuple </i>always
+ has at least one element and therefore can never have a size of 0.<br>
+ <br>
+ Elements of an <i>array</i> can be extracted with <b>BOOST_PP_ARRAY_ELEM</b>,
+ an <i>array's</i> size can be extracted with <b>BOOST_PP_ARRAY_SIZE</b>,
+ and an <i>array</i> can be converted to the more primitive <i>tuple</i>
+ data structure with <b>BOOST_PP_ARRAY_DATA</b>. </div>
+ <h4>Primitives</h4>
+ <ul>
+ <li><a href="../ref/array_data.html">BOOST_PP_ARRAY_DATA</a></li>
+ <li><a href="../ref/array_elem.html">BOOST_PP_ARRAY_ELEM</a></li>
+ <li><a href="../ref/array_size.html">BOOST_PP_ARRAY_SIZE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/data/lists.html b/third_party/boostorg/preprocessor/doc/data/lists.html
new file mode 100644
index 0000000..27abf08
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/data/lists.html
@@ -0,0 +1,42 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>lists.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>Lists</h4>
+ <div> A <i>list</i> is a simple cons-style list with a head and a
+ tail. The head of a <i>list</i> is an element, and the tail is
+ either another <i>list</i> or <b>BOOST_PP_NIL</b>. For example, </div>
+ <div class="code"> (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>)))
+ </div>
+ <div> ...is a <i>list</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
+ </div>
+ <div> This allows macro parameters to be variable in size and allows data
+ states to change size without the user explicitly keeping track of the
+ size independently.<br>
+ <br>
+ A list can be empty and therefore have a size of 0. An empty list is
+ represented by the notation <b>BOOST_PP_NIL.<br>
+ <br>
+ </b></div>
+ <div> Elements of a <i>list</i> can be extracted with <b>BOOST_PP_LIST_FIRST</b>
+ and <b>BOOST_PP_LIST_REST</b>. </div>
+ <h4>Primitives</h4>
+ <ul>
+ <li><a href="../ref/list_first.html">BOOST_PP_LIST_FIRST</a></li>
+ <li><a href="../ref/list_rest.html">BOOST_PP_LIST_REST</a></li>
+ <li><a href="../ref/nil.html">BOOST_PP_NIL</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/data/sequences.html b/third_party/boostorg/preprocessor/doc/data/sequences.html
new file mode 100644
index 0000000..746deb5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/data/sequences.html
@@ -0,0 +1,60 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>sequences.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4> Sequences </h4>
+ <div> A <i>sequence</i> (abbreviated to <i>seq</i>) is a group of adjacent
+ parenthesized elements. For example, </div>
+ <div class="code"> (<i>a</i>)(<i>b</i>)(<i>c</i>) </div>
+ <div> ...is a <i>seq</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
+ </div>
+ <div> <i>Sequences</i> are data structures that merge the properties of
+ both <i>lists</i> and <i>tuples</i> with the exception that a <i>seq, </i>like
+ a <i>tuple, </i>cannot be empty. Therefore, an "empty" <i>seq</i>
+ is considered a special case scenario that must be handled separately in
+ C++. </div>
+ <div class="code">
+ <pre>#define SEQ (x)(y)(z)
+#define REVERSE(s, state, elem) (elem) state
+ // append to head ^
+
+BOOST_PP_SEQ_FOLD_LEFT(REVERSE, BOOST_PP_EMPTY, SEQ)()
+ // #1 #2
+ // 1) placeholder for "empty" seq
+ // 2) remove placeholder
+
+#define SEQ_B (1)(2)(3)
+#define INC(s, state, elem) state (BOOST_PP_INC(elem))
+ // append to tail ^
+
+BOOST_PP_SEQ_FOLD_RIGHT(INC, BOOST_PP_SEQ_NIL, SEQ)
+ // ^
+ // special placeholder that will be "eaten"
+ // by appending to the tail
+</pre> </div>
+ <div> <i>Sequences</i> are extremely efficient. Element access speed
+ approaches random access--even with <i>seqs</i> of up to <i>256</i>
+ elements. This is because element access (among other things) is
+ implemented iteratively rather than recursively. Therefore, elements
+ can be accessed at extremely high indices even on preprocessors with low
+ maximum expansion depths. </div>
+ <div> Elements of a <i>seq</i> can be extracted with <b>BOOST_PP_SEQ_ELEM</b>.
+ </div>
+ <h4> Primitives </h4>
+ <ul>
+ <li> <a href="../ref/seq_elem.html">BOOST_PP_SEQ_ELEM</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/data/tuples.html b/third_party/boostorg/preprocessor/doc/data/tuples.html
new file mode 100644
index 0000000..7a93c9b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/data/tuples.html
@@ -0,0 +1,42 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuples.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>Tuples</h4>
+ <div> A <i>tuple</i> is a simple comma-separated list of elements inside
+ parenthesis. For example, </div>
+ <div class="code"> (<i>a</i>, <i>b</i>, <i>c</i>) </div>
+ <div> ...is a <i>tuple</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and
+ <i>c</i>.<br>
+ <br>
+ A <i>tuple </i>cannot be empty. The notation '()' as a <i>tuple </i>is
+ a single element <i>tuple </i>of size 1, where the element is empty. </div>
+ <div> <i>Tuples</i> are fast and easy to use. With variadic macro
+ support it is not necessary to know the size of a <i>tuple; </i>without
+ variadic macro support all access to <i>tuples</i> requires
+ knowledge of its size. Use a <i>tuple </i>instead of an <i>array</i> if
+ your compiler supports variadic macros, since a <i>tuple </i>has all of
+ the functionality as an <i>array </i>and is easier syntactically to use.
+ The only functionality an <i>array </i>has which a <i>tuple </i>does
+ not have is that an <i>array </i>can be empty whereas a <i>tuple </i>cannot
+ be empty.</div>
+ <div> Elements of a <i>tuple</i> can be extracted with <b>BOOST_PP_TUPLE_ELEM</b>.
+ </div>
+ <h4>Primitives</h4>
+ <ul>
+ <li><a href="../ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/examples.html b/third_party/boostorg/preprocessor/doc/examples.html
new file mode 100644
index 0000000..24496da
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples.html
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <title>topics.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Examples <small><a href="contents.html" target="index">[back]</a></small></h4>
+<ul>
+ <li><a href="examples/array_arithmetic.c">array_arithmetic.c</a></i>
+ <li><a href="examples/catch_builtin.cpp">catch_builtin.cpp</a></i>
+ <li><a href="examples/delay.c">delay.c</a></i>
+ <li><a href="examples/duffs_device.c">duffs_device.c</a></i>
+ <li><a href="examples/is_integral.cpp">is_integral.cpp</a></li>
+ <li><a href="examples/linear_fib.c">linear_fib.c</a></li>
+</ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/examples/array_arithmetic.c b/third_party/boostorg/preprocessor/doc/examples/array_arithmetic.c
new file mode 100644
index 0000000..ba1efc6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples/array_arithmetic.c
@@ -0,0 +1,196 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example implements over 2200 functions for 1-dimensional arithmetic
+# * array manipulation in C. The idea is to use preprocessor data structures,
+# * lists, and tuples for storing metainformation to be used for generating
+# * the actual C code.
+# *
+# * Who needs templates anyway? :)
+# *
+# * Compile with any C compiler with a standards conforming preprocessor.
+# */
+#
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/cat.hpp>
+# include <boost/preprocessor/list/for_each_product.hpp>
+# include <boost/preprocessor/logical/or.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* Information about C operators */
+#
+# /* Accessors for the operator datatype. */
+# define OP_SYMBOL(O) BOOST_PP_TUPLE_ELEM(5, 0, O)
+# define OP_NAME(O) BOOST_PP_TUPLE_ELEM(5, 1, O)
+# define OP_IS_FLOATING(O) BOOST_PP_TUPLE_ELEM(5, 2, O)
+# define OP_IS_LOGICAL(O) BOOST_PP_TUPLE_ELEM(5, 3, O)
+# define OP_IS_SHIFT(O) BOOST_PP_TUPLE_ELEM(5, 4, O)
+#
+# /* List of applicative unary operators. */
+# define APPLICATIVE_UNARY_OPS \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 3, \
+ ( \
+ ( ! , logical_not, 1, 1, 0), \
+ ( ~ , bitwise_not, 0, 0, 0), \
+ ( - , neg, 1, 0, 0) \
+ ) \
+ ) \
+ /**/
+#
+# /* List of applicative binary operators. */
+# define APPLICATIVE_BINARY_OPS \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 18, \
+ ( \
+ ( * , mul ,1 ,0 ,0), \
+ ( / , div ,1 ,0 ,0), \
+ ( % , mod ,0 ,0 ,0), \
+ ( + , add ,1 ,0 ,0), \
+ ( - , sub ,1 ,0 ,0), \
+ ( << , shift_left ,0 ,0 ,1), \
+ ( >> , shift_right ,0 ,0 ,1), \
+ ( < , less ,1 ,1 ,0), \
+ ( <= , less_equal ,1 ,1 ,0), \
+ ( >= , greater_equal ,1 ,1 ,0), \
+ ( > , greater ,1 ,1 ,0), \
+ ( == , equal ,1 ,1 ,0), \
+ ( != , not_equal ,1 ,1 ,0), \
+ ( & , bitwise_and ,0 ,0 ,0), \
+ ( | , bitwise_or ,0 ,0 ,0), \
+ ( ^ , bitwise_xor ,0 ,0 ,0), \
+ ( && , logical_and ,1 ,1 ,0), \
+ ( || , logical_or ,1 ,1 ,0) \
+ ) \
+ ) \
+ /**/
+#
+# /* Information about C built-in types. */
+#
+# /* Accessors for the type datatype. */
+# define TYPE_NAME(T) BOOST_PP_TUPLE_ELEM(4, 0, T)
+# define TYPE_ABBREVIATION(T) BOOST_PP_TUPLE_ELEM(4, 1, T)
+# define TYPE_IS_FLOATING(T) BOOST_PP_TUPLE_ELEM(4, 2, T)
+# define TYPE_RANK(T) BOOST_PP_TUPLE_ELEM(4, 3, T)
+#
+# /* List of C built-in types. */
+# define BUILTIN_TYPES \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 12, \
+ ( \
+ ( signed char ,sc, 0, 1), \
+ ( char ,ch, 0, 1), \
+ ( unsigned char ,uc, 0, 1), \
+ ( short ,ss, 0, 2), \
+ ( unsigned short ,us, 0, 2), \
+ TYPE_INT, \
+ ( unsigned ,ui, 0, 4), \
+ ( long ,sl, 0, 5), \
+ ( unsigned long ,ul, 0, 6), \
+ ( float ,fl, 1, 7), \
+ ( double ,db, 1, 8), \
+ ( long double ,ld, 1, 9) \
+ ) \
+ ) \
+ /**/
+#
+# /* Type int is needed in some type computations. */
+# define TYPE_INT (int, si, 0, 3)
+#
+# /* Type computation macros. */
+# define TYPE_OF_INTEGER_PROMOTION(T) \
+ BOOST_PP_IF( \
+ BOOST_PP_LESS(TYPE_RANK(T), TYPE_RANK(TYPE_INT)), \
+ TYPE_INT, T \
+ ) \
+ /**/
+# define TYPE_OF_USUAL_ARITHMETIC_CONVERSION(L, R) \
+ TYPE_OF_INTEGER_PROMOTION( \
+ BOOST_PP_IF( \
+ BOOST_PP_LESS(TYPE_RANK(L), TYPE_RANK(R)), \
+ R, L \
+ ) \
+ ) \
+ /**/
+# define TYPE_OF_UNARY_OP(O, T) \
+ BOOST_PP_IF( \
+ OP_IS_LOGICAL(O), \
+ TYPE_INT, TYPE_OF_INTEGER_PROMOTION(T) \
+ ) \
+ /**/
+# define TYPE_OF_BINARY_OP(O, L, R) \
+ BOOST_PP_IF( \
+ OP_IS_LOGICAL(O), TYPE_INT, \
+ BOOST_PP_IF( \
+ OP_IS_SHIFT(O), \
+ TYPE_OF_INTEGER_PROMOTION(L), \
+ TYPE_OF_USUAL_ARITHMETIC_CONVERSION(L,R) \
+ ) \
+ ) \
+ /**/
+# define IS_VALID_UNARY_OP_AND_TYPE_COMBINATION(O, T) \
+ BOOST_PP_IF( \
+ TYPE_IS_FLOATING(T), \
+ OP_IS_FLOATING(O), 1 \
+ ) \
+ /**/
+# define IS_VALID_BINARY_OP_AND_TYPE_COMBINATION(O, L, R) \
+ BOOST_PP_IF( \
+ BOOST_PP_OR(TYPE_IS_FLOATING(L), TYPE_IS_FLOATING(R)), \
+ OP_IS_FLOATING(O), 1 \
+ ) \
+ /**/
+#
+# /* Generates code for all unary operators and integral types. */
+# define UNARY_ARRAY_OP(_, OT) \
+ BOOST_PP_IF( \
+ IS_VALID_UNARY_OP_AND_TYPE_COMBINATION OT, \
+ UNARY_ARRAY_OP_CODE, BOOST_PP_TUPLE_EAT(2) \
+ ) OT \
+ /**/
+# define UNARY_ARRAY_OP_CODE(O, T) \
+ void BOOST_PP_LIST_CAT(BOOST_PP_TUPLE_TO_LIST(4, (array_, OP_NAME(O), _, TYPE_ABBREVIATION(T)))) \
+ (const TYPE_NAME(T)* in, TYPE_NAME(TYPE_OF_UNARY_OP(O, T))* out, unsigned n) { \
+ do { \
+ *out++ = OP_SYMBOL(O) *in++; \
+ } while (--n); \
+ } \
+ /**/
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(UNARY_ARRAY_OP, 2, (APPLICATIVE_UNARY_OPS, BUILTIN_TYPES))
+
+# /* Generates code for all binary operators and integral type pairs. */
+# define BINARY_ARRAY_OP(_, OLR) \
+ BOOST_PP_IF( \
+ IS_VALID_BINARY_OP_AND_TYPE_COMBINATION OLR, \
+ BINARY_ARRAY_OP_CODE, BOOST_PP_TUPLE_EAT(3) \
+ ) OLR \
+ /**/
+# define BINARY_ARRAY_OP_CODE(O, L, R) \
+ void BOOST_PP_LIST_CAT( \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 6, (array_, OP_NAME(O), _, TYPE_ABBREVIATION(L), _, TYPE_ABBREVIATION(R)) \
+ ) \
+ )(const TYPE_NAME(L)* lhs_in, const TYPE_NAME(R)* rhs_in, TYPE_NAME(TYPE_OF_BINARY_OP(O, L, R))* out, unsigned n) { \
+ do { \
+ *out++ = *lhs_in OP_SYMBOL(O) *rhs_in; \
+ ++lhs_in; \
+ ++rhs_in; \
+ } while (--n); \
+ } \
+ /**/
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(BINARY_ARRAY_OP, 3, (APPLICATIVE_BINARY_OPS, BUILTIN_TYPES, BUILTIN_TYPES))
diff --git a/third_party/boostorg/preprocessor/doc/examples/catch_builtin.cpp b/third_party/boostorg/preprocessor/doc/examples/catch_builtin.cpp
new file mode 100644
index 0000000..27a27a0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples/catch_builtin.cpp
@@ -0,0 +1,51 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example demonstrates the usage of lists and BOOST_PP_LIST_FOR_EACH(). */
+#
+# include <iostream>
+# include <typeinfo>
+#
+# include <boost/preprocessor/list/for_each.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* List of built-in types. (Strictly speaking wchar_t should be on the list.) */
+#
+# define BUILTIN_TYPES \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 13, \
+ ( \
+ bool, \
+ char, signed char, unsigned char, \
+ unsigned short, short, \
+ int, unsigned, \
+ long, unsigned long, \
+ float, \
+ double, long double \
+ ) \
+ ) \
+ /**/
+#
+# define CATCH(R, _, T) \
+ catch (T t) { \
+ std::cerr << "Caught an " << typeid(t).name() << " = " << t; \
+ } \
+ /**/
+
+int main() {
+ try {
+ throw 10;
+ }
+ BOOST_PP_LIST_FOR_EACH(CATCH, _, BUILTIN_TYPES)
+ return 0;
+}
diff --git a/third_party/boostorg/preprocessor/doc/examples/delay.c b/third_party/boostorg/preprocessor/doc/examples/delay.c
new file mode 100644
index 0000000..9010d76
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples/delay.c
@@ -0,0 +1,95 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* The time complexity of DELAY(N) is O(2^N).
+# *
+# * Handy when recompiles are too fast to take a coffee break. :)
+# *
+# * Template metaprogramming can be used for implementing similar
+# * delays. Unfortunately template instantiation consumes memory,
+# * therefore compilers usually fail to fully compile long template
+# * based delays, because they run out of memory.
+# *
+# * On many compilers (e.g. g++, MSVC++), this macro takes only a
+# * small amount of memory to preprocess. On some compilers (e.g.
+# * MWCW), however, this macro seems to consume huge amounts of
+# * memory.
+# */
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# ifndef DELAY_MAX
+# define DELAY_MAX 14
+# endif
+#
+# define DELAY(N) BOOST_PP_TUPLE_ELEM(2, 0, (BOOST_PP_EMPTY, BOOST_PP_WHILE(DELAY_C, BOOST_PP_CAT(DELAY_F, N), BOOST_PP_DEC(N))))()
+#
+# define DELAY_C(D, N) N
+#
+# define DELAY_F0(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F1(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F2(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F3(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F4(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F5(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F6(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F7(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F8(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F9(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F10(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F11(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F12(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F13(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F14(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F15(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F16(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F17(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F18(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F19(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F20(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F21(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F22(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F23(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F24(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F25(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F26(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F27(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F28(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F29(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F30(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F31(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F32(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F33(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F34(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F35(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F36(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F37(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F38(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F39(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F40(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F41(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F42(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F43(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F44(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F45(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F46(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F47(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F48(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F49(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+# define DELAY_F50(D, N) BOOST_PP_IF(1, BOOST_PP_DEC(N), BOOST_PP_WHILE_ ## D(DELAY_C, DELAY_F ## N, BOOST_PP_DEC(N)))
+
+DELAY(DELAY_MAX)
diff --git a/third_party/boostorg/preprocessor/doc/examples/duffs_device.c b/third_party/boostorg/preprocessor/doc/examples/duffs_device.c
new file mode 100644
index 0000000..a457ec4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples/duffs_device.c
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example uses the preprocessor library to implement a generalized
+# * macro for implementing Duff's Device.
+# *
+# * This example was inspired by an original generalized macro for
+# * for implementing Duff's Device written by Joerg Walter.
+# */
+#
+# include <assert.h>
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* Expands to a Duff's Device. */
+# define DUFFS_DEVICE(UNROLLING_FACTOR, COUNTER_TYPE, N, STATEMENT) \
+ do { \
+ COUNTER_TYPE duffs_device_initial_cnt = (N); \
+ if (duffs_device_initial_cnt > 0) { \
+ COUNTER_TYPE duffs_device_running_cnt = (duffs_device_initial_cnt + (UNROLLING_FACTOR - 1)) / UNROLLING_FACTOR; \
+ switch (duffs_device_initial_cnt % UNROLLING_FACTOR) { \
+ do { \
+ BOOST_PP_REPEAT(UNROLLING_FACTOR, DUFFS_DEVICE_C, (UNROLLING_FACTOR, { STATEMENT })) \
+ } while (--duffs_device_running_cnt); \
+ } \
+ } \
+ } while (0) \
+ /**/
+#
+# define DUFFS_DEVICE_C(Z, I, UNROLLING_FACTOR_STATEMENT) \
+ case (I ? BOOST_PP_TUPLE_ELEM(2, 0, UNROLLING_FACTOR_STATEMENT) - I : 0): \
+ BOOST_PP_TUPLE_ELEM(2, 1, UNROLLING_FACTOR_STATEMENT); \
+ /**/
+#
+# ifndef UNROLLING_FACTOR
+# define UNROLLING_FACTOR 16
+# endif
+#
+# ifndef N
+# define N 1000
+# endif
+
+int main(void) {
+ int i = 0;
+ DUFFS_DEVICE(UNROLLING_FACTOR, int, 0, ++i;);
+ assert(i == 0);
+ DUFFS_DEVICE(UNROLLING_FACTOR, int, N, ++i;);
+ assert(i == N);
+ return 0;
+}
diff --git a/third_party/boostorg/preprocessor/doc/examples/is_integral.cpp b/third_party/boostorg/preprocessor/doc/examples/is_integral.cpp
new file mode 100644
index 0000000..d98be3f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples/is_integral.cpp
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example demonstrates the usage of preprocessor lists for generating C++ code. */
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/for_each_product.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* List of integral types. (Strictly speaking, wchar_t should be on the list.) */
+# define INTEGRAL_TYPES \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 9, (char, signed char, unsigned char, short, unsigned short, int, unsigned, long, unsigned long) \
+ ) \
+ /**/
+#
+# /* List of invokeable cv-qualifiers */
+# define CV_QUALIFIERS \
+ BOOST_PP_TUPLE_TO_LIST( \
+ 4, (BOOST_PP_EMPTY, const BOOST_PP_EMPTY, volatile BOOST_PP_EMPTY, const volatile BOOST_PP_EMPTY) \
+ ) \
+ /**/
+#
+# /* Template for testing whether a type is an integral type. */
+
+template<class T> struct is_integral {
+ enum { value = false };
+};
+
+# /* Macro for defining a specialization of is_integral<> template. */
+# define IS_INTEGRAL_SPECIALIZATION(R, L) \
+ template<> struct is_integral<BOOST_PP_TUPLE_ELEM(2, 0, L)() BOOST_PP_TUPLE_ELEM(2, 1, L)> { \
+ enum { value = true }; \
+ }; \
+ /**/
+
+BOOST_PP_LIST_FOR_EACH_PRODUCT(IS_INTEGRAL_SPECIALIZATION, 2, (CV_QUALIFIERS, INTEGRAL_TYPES))
diff --git a/third_party/boostorg/preprocessor/doc/examples/linear_fib.c b/third_party/boostorg/preprocessor/doc/examples/linear_fib.c
new file mode 100644
index 0000000..2778003
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/examples/linear_fib.c
@@ -0,0 +1,91 @@
+# /* Copyright (C) 2002
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# /* This example shows how BOOST_PP_WHILE() can be used for implementing macros. */
+#
+# include <stdio.h>
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* First consider the following C implementation of Fibonacci. */
+
+typedef struct linear_fib_state {
+ int a0, a1, n;
+} linear_fib_state;
+
+static int linear_fib_c(linear_fib_state p) {
+ return p.n;
+}
+
+static linear_fib_state linear_fib_f(linear_fib_state p) {
+ linear_fib_state r = { p.a1, p.a0 + p.a1, p.n - 1 };
+ return r;
+}
+
+static int linear_fib(int n) {
+ linear_fib_state p = { 0, 1, n };
+ while (linear_fib_c(p)) {
+ p = linear_fib_f(p);
+ }
+ return p.a0;
+}
+
+# /* Then consider the following preprocessor implementation of Fibonacci. */
+#
+# define LINEAR_FIB(n) LINEAR_FIB_D(1, n)
+# /* Since the macro is implemented using BOOST_PP_WHILE, the actual
+# * implementation takes a depth as a parameters so that it can be called
+# * inside a BOOST_PP_WHILE. The above easy-to-use version simply uses 1
+# * as the depth and cannot be called inside a BOOST_PP_WHILE.
+# */
+#
+# define LINEAR_FIB_D(d, n) \
+ BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(LINEAR_FIB_C, LINEAR_FIB_F, (0, 1, n)))
+# /* ^^^^ ^^^^^ ^^ ^^ ^^^^^^^
+# * #1 #2 #3 #3 #4
+# *
+# * 1) The state is a 3-element tuple. After the iteration is finished, the first
+# * element of the tuple is the result.
+# *
+# * 2) The WHILE primitive is "invoked" directly. BOOST_PP_WHILE(D, ...)
+# * can't be used because it would not be expanded by the preprocessor.
+# *
+# * 3) ???_C is the condition and ???_F is the iteration macro.
+# */
+#
+# define LINEAR_FIB_C(d, p) \
+ /* p.n */ BOOST_PP_TUPLE_ELEM(3, 2, p) \
+ /**/
+#
+# define LINEAR_FIB_F(d, p) \
+ ( \
+ /* p.a1 */ BOOST_PP_TUPLE_ELEM(3, 1, p), \
+ /* p.a0 + p.a1 */ BOOST_PP_ADD_D(d, BOOST_PP_TUPLE_ELEM(3, 0, p), BOOST_PP_TUPLE_ELEM(3, 1, p)), \
+ /* ^^ ^ \
+ * BOOST_PP_ADD() uses BOOST_PP_WHILE(). Therefore we \
+ * pass the recursion depth explicitly to BOOST_PP_ADD_D(). \
+ */ \
+ /* p.n - 1 */ BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(3, 2, p)) \
+ ) \
+ /**/
+
+int main() {
+ printf("linear_fib(10) = %d\n", linear_fib(10));
+ printf("LINEAR_FIB(10) = %d\n", LINEAR_FIB(10));
+ return 0;
+}
diff --git a/third_party/boostorg/preprocessor/doc/headers.html b/third_party/boostorg/preprocessor/doc/headers.html
new file mode 100644
index 0000000..58f33db
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers.html
@@ -0,0 +1,249 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>headers.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+ <style>
+ .ps { margin-left: 30px; }
+ </style>
+ </head>
+ <body>
+ <h4> Headers <small><a href="contents.html" target="index">[back]</a></small>
+ </h4>
+ <ul>
+ <li>../</li>
+ <li class="ps"> <a href="headers/preprocessor.html">preprocessor.hpp</a></li>
+ <li><a href="headers/arithmetic.html">arithmetic.hpp</a></li>
+ <li>arithmetic/</li>
+ <li class="ps"><a href="headers/arithmetic/add.html">add.hpp</a></li>
+ <li class="ps"><a href="headers/arithmetic/dec.html">dec.hpp</a></li>
+ <li class="ps"><a href="headers/arithmetic/div.html">div.hpp</a></li>
+ <li class="ps"><a href="headers/arithmetic/inc.html">inc.hpp</a></li>
+ <li class="ps"><a href="headers/arithmetic/mod.html">mod.hpp</a></li>
+ <li class="ps"><a href="headers/arithmetic/mul.html">mul.hpp</a></li>
+ <li class="ps"><a href="headers/arithmetic/sub.html">sub.hpp</a></li>
+ <li><a href="headers/array.html">array.hpp</a></li>
+ <li>array/</li>
+ <li class="ps"><a href="headers/array/data.html">data.hpp</a></li>
+ <li class="ps"><a href="headers/array/elem.html">elem.hpp</a></li>
+ <li class="ps"><a href="headers/array/enum.html">enum.hpp</a></li>
+ <li class="ps"><a href="headers/array/insert.html">insert.hpp</a></li>
+ <li class="ps"><a href="headers/array/pop_back.html">pop_back.hpp</a></li>
+ <li class="ps"><a href="headers/array/pop_front.html">pop_front.hpp</a></li>
+ <li class="ps"><a href="headers/array/push_back.html">push_back.hpp</a></li>
+ <li class="ps"><a href="headers/array/push_front.html">push_front.hpp</a></li>
+ <li class="ps"><a href="headers/array/remove.html">remove.hpp</a></li>
+ <li class="ps"><a href="headers/array/replace.html">replace.hpp</a></li>
+ <li class="ps"><a href="headers/array/reverse.html">reverse.hpp</a></li>
+ <li class="ps"><a href="headers/array/size.html">size.hpp</a></li>
+ <li class="ps"><a href="headers/array/to_list.html">to_list.hpp</a></li>
+ <li class="ps"><a href="headers/array/to_seq.html">to_seq.hpp</a></li>
+ <li class="ps"><a href="headers/array/to_tuple.html">to_tuple.hpp</a></li>
+ <li><a href="headers/assert_msg.html">assert_msg.hpp*</a></li>
+ <li><a href="headers/cat.html">cat.hpp</a></li>
+ <li><a href="headers/comma.html">comma.hpp*</a></li>
+ <li><a href="headers/comma_if.html">comma_if.hpp*</a></li>
+ <li><a href="headers/comparison.html">comparison.hpp</a></li>
+ <li>comparison/</li>
+ <li class="ps"><a href="headers/comparison/equal.html">equal.hpp</a></li>
+ <li class="ps"><a href="headers/comparison/greater.html">greater.hpp</a></li>
+ <li class="ps"><a href="headers/comparison/greater_equal.html">greater_equal.hpp</a></li>
+ <li class="ps"><a href="headers/comparison/less.html">less.hpp</a></li>
+ <li class="ps"><a href="headers/comparison/less_equal.html">less_equal.hpp</a></li>
+ <li class="ps"><a href="headers/comparison/not_equal.html">not_equal.hpp</a></li>
+ <li>config/</li>
+ <li class="ps"><a href="headers/config/limits.html">limits.hpp</a></li>
+ <li class="ps"><a href="headers/config/variadics.html">config.hpp</a></li>
+ <li><a href="headers/control.html">control.hpp</a></li>
+ <li>control/</li>
+ <li class="ps"><a href="headers/control/deduce_d.html">deduce_d.hpp</a></li>
+ <li class="ps"><a href="headers/control/expr_if.html">expr_if.hpp</a></li>
+ <li class="ps"><a href="headers/control/expr_iif.html">expr_iif.hpp</a></li>
+ <li class="ps"><a href="headers/control/if.html">if.hpp</a></li>
+ <li class="ps"><a href="headers/control/iif.html">iif.hpp</a></li>
+ <li class="ps"><a href="headers/control/while.html">while.hpp</a></li>
+ <li><a href="headers/debug.html">debug.hpp</a></li>
+ <li>debug/</li>
+ <li class="ps"><a href="headers/debug/assert.html">assert.hpp</a></li>
+ <li class="ps"><a href="headers/debug/line.html">line.hpp</a></li>
+ <li><a href="headers/dec.html">dec.hpp*</a></li>
+ <li><a href="headers/empty.html">empty.hpp*</a></li>
+ <li><a href="headers/enum.html">enum.hpp*</a></li>
+ <li><a href="headers/enum_params.html">enum_params.hpp*</a></li>
+ <li><a href="headers/epwad.html">enum_params_with_a_default.hpp*</a></li>
+ <li><a href="headers/epwd.html">enum_params_with_defaults.hpp*</a></li>
+ <li><a href="headers/enum_shifted.html">enum_shifted.hpp*</a></li>
+ <li><a href="headers/enum_shifted_params.html">enum_shifted_params.hpp*</a></li>
+ <li><a href="headers/expand.html">expand.hpp*</a></li>
+ <li><a href="headers/expr_if.html">expr_if.hpp*</a></li>
+ <li><a href="headers/facilities.html">facilities.hpp</a></li>
+ <li>facilities/</li>
+ <li class="ps"><a href="headers/facilities/apply.html">apply.hpp</a></li>
+ <li class="ps"><a href="headers/facilities/empty.html">empty.hpp</a></li>
+ <li class="ps"><a href="headers/facilities/expand.html">expand.hpp</a></li>
+ <li class="ps"><a href="headers/facilities/identity.html">identity.hpp</a></li>
+ <li class="ps"><a href="headers/facilities/intercept.html">intercept.hpp</a></li>
+ <li class="ps"><a href="headers/facilities/overload.html">overload.hpp</a>
+ <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="headers/for.html">for.hpp*</a></li>
+ <li><a href="headers/identity.html">identity.hpp*</a></li>
+ <li><a href="headers/if.html">if.hpp*</a></li>
+ <li><a href="headers/inc.html">inc.hpp*</a></li>
+ <li><a href="headers/iterate.html">iterate.hpp*</a></li>
+ <li><a href="headers/iteration.html">iteration.hpp</a></li>
+ <li>iteration/</li>
+ <li class="ps"><a href="headers/iteration/iterate.html">iterate.hpp</a></li>
+ <li class="ps"><a href="headers/iteration/local.html">local.hpp</a></li>
+ <li class="ps"><a href="headers/iteration/self.html">self.hpp</a></li>
+ <li><a href="headers/library.html">library.hpp</a></li>
+ <li><a href="headers/limits.html">limits.hpp*</a></li>
+ <li><a href="headers/list.html">list.hpp</a></li>
+ <li>list/</li>
+ <li class="ps"><a href="headers/list/adt.html">adt.hpp</a></li>
+ <li class="ps"><a href="headers/list/append.html">append.hpp</a></li>
+ <li class="ps"><a href="headers/list/at.html">at.hpp</a></li>
+ <li class="ps"><a href="headers/list/cat.html">cat.hpp</a></li>
+ <li class="ps"><a href="headers/list/enum.html">enum.hpp</a></li>
+ <li class="ps"><a href="headers/list/filter.html">filter.hpp</a></li>
+ <li class="ps"><a href="headers/list/first_n.html">first_n.hpp</a></li>
+ <li class="ps"><a href="headers/list/fold_left.html">fold_left.hpp</a></li>
+ <li class="ps"><a href="headers/list/fold_right.html">fold_right.hpp</a></li>
+ <li class="ps"><a href="headers/list/for_each.html">for_each.hpp</a></li>
+ <li class="ps"><a href="headers/list/for_each_i.html">for_each_i.hpp</a></li>
+ <li class="ps"><a href="headers/list/for_each_product.html">for_each_product.hpp</a></li>
+ <li class="ps"><a href="headers/list/rest_n.html">rest_n.hpp</a></li>
+ <li class="ps"><a href="headers/list/reverse.html">reverse.hpp</a></li>
+ <li class="ps"><a href="headers/list/size.html">size.hpp</a></li>
+ <li class="ps"><a href="headers/list/to_array.html">to_array.hpp</a></li>
+ <li class="ps"><a href="headers/list/to_seq.html">to_seq.hpp</a></li>
+ <li class="ps"><a href="headers/list/to_tuple.html">to_tuple.hpp</a></li>
+ <li class="ps"><a href="headers/list/transform.html">transform.hpp</a></li>
+ <li><a href="headers/logical.html">logical.hpp</a></li>
+ <li>logical/</li>
+ <li class="ps"><a href="headers/logical/and.html">and.hpp</a></li>
+ <li class="ps"><a href="headers/logical/bitand.html">bitand.hpp</a></li>
+ <li class="ps"><a href="headers/logical/bitnor.html">bitnor.hpp</a></li>
+ <li class="ps"><a href="headers/logical/bitor.html">bitor.hpp</a></li>
+ <li class="ps"><a href="headers/logical/bitxor.html">bitxor.hpp</a></li>
+ <li class="ps"><a href="headers/logical/bool.html">bool.hpp</a></li>
+ <li class="ps"><a href="headers/logical/compl.html">compl.hpp</a></li>
+ <li class="ps"><a href="headers/logical/nor.html">nor.hpp</a></li>
+ <li class="ps"><a href="headers/logical/not.html">not.hpp</a></li>
+ <li class="ps"><a href="headers/logical/or.html">or.hpp</a></li>
+ <li class="ps"><a href="headers/logical/xor.html">xor.hpp</a></li>
+ <li><a href="headers/max.html">max.hpp*</a></li>
+ <li><a href="headers/min.html">min.hpp*</a></li>
+ <li><a href="headers/punctuation.html">punctuation.hpp</a></li>
+ <li>punctuation/</li>
+ <li class="ps"><a href="headers/punctuation/comma.html">comma.hpp</a></li>
+ <li class="ps"><a href="headers/punctuation/comma_if.html">comma_if.hpp</a></li>
+ <li class="ps"><a href="headers/punctuation/is_begin_parens.html">is_begin_parens.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/punctuation/paren.html">paren.hpp</a></li>
+ <li class="ps"><a href="headers/punctuation/paren_if.html">paren_if.hpp</a></li>
+ <li class="ps"><a href="headers/punctuation/remove_parens.html">remove_parens.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="headers/repeat.html">repeat.hpp*</a></li>
+ <li><a href="headers/repeat_2nd.html">repeat_2nd.hpp*</a></li>
+ <li><a href="headers/repeat_3rd.html">repeat_3rd.hpp*</a></li>
+ <li><a href="headers/repeat_from_to.html">repeat_from_to.hpp*</a></li>
+ <li><a href="headers/repeat_from_to_2nd.html">repeat_from_to_2nd.hpp*</a></li>
+ <li><a href="headers/repeat_from_to_3rd.html">repeat_from_to_3rd.hpp*</a></li>
+ <li><a href="headers/repetition.html">repetition.hpp</a></li>
+ <li>repetition/</li>
+ <li class="ps"><a href="headers/repetition/deduce_r.html">deduce_r.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/deduce_z.html">deduce_z.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum.html">enum.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum_binary_params.html">enum_binary_params.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum_params.html">enum_params.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/epwad.html">enum_params_with_a_default.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/epwd.html">enum_params_with_defaults.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/esbp.html">enum_shifted_binary_params.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum_shifted_params.html">enum_shifted_params.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum_shifted.html">enum_shifted.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum_trailing.html">enum_trailing.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/etbp.html">enum_trailing_binary_params.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/enum_trailing_params.html">enum_trailing_params.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/for.html">for.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/repeat.html">repeat.hpp</a></li>
+ <li class="ps"><a href="headers/repetition/repeat_from_to.html">repeat_from_to.hpp</a></li>
+ <li><a href="headers/selection.html">selection.hpp</a></li>
+ <li>selection/</li>
+ <li class="ps"><a href="headers/selection/max.html">max.hpp</a></li>
+ <li class="ps"><a href="headers/selection/min.html">min.hpp</a></li>
+ <li><a href="headers/seq.html">seq.hpp</a></li>
+ <li>seq/</li>
+ <li class="ps"><a href="headers/seq/cat.html">cat.hpp</a></li>
+ <li class="ps"><a href="headers/seq/elem.html">elem.hpp</a></li>
+ <li class="ps"><a href="headers/seq/enum.html">enum.hpp</a></li>
+ <li class="ps"><a href="headers/seq/filter.html">filter.hpp</a></li>
+ <li class="ps"><a href="headers/seq/first_n.html">first_n.hpp</a></li>
+ <li class="ps"><a href="headers/seq/fold_left.html">fold_left.hpp</a></li>
+ <li class="ps"><a href="headers/seq/fold_right.html">fold_right.hpp</a></li>
+ <li class="ps"><a href="headers/seq/for_each.html">for_each.hpp</a></li>
+ <li class="ps"><a href="headers/seq/for_each_i.html">for_each_i.hpp</a></li>
+ <li class="ps"><a href="headers/seq/for_each_product.html">for_each_product.hpp</a></li>
+ <li class="ps"><a href="headers/seq/insert.html">insert.hpp</a></li>
+ <li class="ps"><a href="headers/seq/pop_back.html">pop_back.hpp</a></li>
+ <li class="ps"><a href="headers/seq/pop_front.html">pop_front.hpp</a></li>
+ <li class="ps"><a href="headers/seq/push_back.html">push_back.hpp</a></li>
+ <li class="ps"><a href="headers/seq/push_front.html">push_front.hpp</a></li>
+ <li class="ps"><a href="headers/seq/remove.html">remove.hpp</a></li>
+ <li class="ps"><a href="headers/seq/replace.html">replace.hpp</a></li>
+ <li class="ps"><a href="headers/seq/rest_n.html">rest_n.hpp</a></li>
+ <li class="ps"><a href="headers/seq/reverse.html">reverse.hpp</a></li>
+ <li class="ps"><a href="headers/seq/seq.html">seq.hpp</a></li>
+ <li class="ps"><a href="headers/seq/size.html">size.hpp</a></li>
+ <li class="ps"><a href="headers/seq/subseq.html">subseq.hpp</a></li>
+ <li class="ps"><a href="headers/seq/to_array.html">to_array.hpp</a></li>
+ <li class="ps"><a href="headers/seq/to_list.html">to_list.hpp</a></li>
+ <li class="ps"><a href="headers/seq/to_tuple.html">to_tuple.hpp</a></li>
+ <li class="ps"><a href="headers/seq/transform.html">transform.hpp</a></li>
+ <li class="ps"><a href="headers/seq/variadic_seq_to_seq.html">variadic_seq_to_seq.hpp</a></li>
+ <li><a href="headers/slot.html">slot.hpp</a></li>
+ <li>slot/</li>
+ <li class="ps"><a href="headers/slot/counter.html">counter.hpp</a></li>
+ <li class="ps"><a href="headers/slot/slot.html">slot.hpp</a></li>
+ <li><a href="headers/tuple.html">tuple.hpp</a></li>
+ <li>tuple/</li>
+ <li class="ps"><a href="headers/tuple/eat.html">eat.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/elem.html">elem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/enum.html">enum.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/insert.html">insert.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/pop_back.html">pop_back.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/pop_front.html">pop_front.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/push_back.html">push_back.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/push_front.html">push_front.hpp</a>
+ <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/rem.html">rem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/remove.html">remove.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/replace.html">replace.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/reverse.html">reverse.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/size.html">size.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/to_array.html">to_array.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/to_list.html">to_list.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/tuple/to_seq.html">to_seq.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="headers/stringize.html">stringize.hpp</a></li>
+ <li><a href="headers/variadic.html">variadic.hpp</a></li>
+ <li>variadic/</li>
+ <li class="ps"><a href="headers/variadic/elem.html">elem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/variadic/size.html">size.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/variadic/to_array.html">to_array.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/variadic/to_list.html">to_list.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/variadic/to_seq.html">to_seq.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li class="ps"><a href="headers/variadic/to_tuple.html">to_tuple.hpp</a> <a
+ href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="headers/while.html">while.hpp*</a></li>
+ <li><a href="headers/wstringize.html">wstringize.hpp</a></li>
+ </ul>
+ <!--
+© Copyright Housemarque Oy 2002© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)-->
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic.html
new file mode 100644
index 0000000..8e58a77
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic.html
@@ -0,0 +1,36 @@
+<html>
+<head>
+ <title>arithmetic.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic.hpp</b> includes the headers in the <i>arithmetic</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="arithmetic/add.html"><boost/preprocessor/arithmetic/add.hpp></a></li>
+ <li><a href="arithmetic/dec.html"><boost/preprocessor/arithmetic/dec.hpp></a></li>
+ <li><a href="arithmetic/div.html"><boost/preprocessor/arithmetic/div.hpp></a></li>
+ <li><a href="arithmetic/inc.html"><boost/preprocessor/arithmetic/inc.hpp></a></li>
+ <li><a href="arithmetic/mod.html"><boost/preprocessor/arithmetic/mod.hpp></a></li>
+ <li><a href="arithmetic/mul.html"><boost/preprocessor/arithmetic/mul.hpp></a></li>
+ <li><a href="arithmetic/sub.html"><boost/preprocessor/arithmetic/sub.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/add.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/add.html
new file mode 100644
index 0000000..fd0dbcf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/add.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/add.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/add.hpp</b> header defines macros for addition.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/add.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/add.html">BOOST_PP_ADD</a></li>
+ <li><a href="../../ref/add_d.html">BOOST_PP_ADD_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/dec.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/dec.html
new file mode 100644
index 0000000..1839c81
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/dec.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>arithmetic/dec.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/dec.hpp</b> header defines a decrementation macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/dec.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/dec.html">BOOST_PP_DEC</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/div.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/div.html
new file mode 100644
index 0000000..9484f32
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/div.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/div.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/div.hpp</b> header defines macros for division.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/div.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/div.html">BOOST_PP_DIV</a></li>
+ <li><a href="../../ref/div_d.html">BOOST_PP_DIV_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/inc.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/inc.html
new file mode 100644
index 0000000..1326a79
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/inc.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>arithmetic/inc.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/inc.hpp</b> header defines an incrementation macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/inc.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/inc.html">BOOST_PP_INC</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/mod.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/mod.html
new file mode 100644
index 0000000..5a07b1e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/mod.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/mod.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/mod.hpp</b> header defines macros for modulus.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/mod.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/mod.html">BOOST_PP_MOD</a></li>
+ <li><a href="../../ref/mod_d.html">BOOST_PP_MOD_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/mul.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/mul.html
new file mode 100644
index 0000000..52daf21
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/mul.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/mul.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/mul.hpp</b> header defines macros for multiplication.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/mul.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/mul.html">BOOST_PP_MUL</a></li>
+ <li><a href="../../ref/mul_d.html">BOOST_PP_MUL_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/arithmetic/sub.html b/third_party/boostorg/preprocessor/doc/headers/arithmetic/sub.html
new file mode 100644
index 0000000..9b803f8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/arithmetic/sub.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>arithmetic/sub.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>arithmetic/sub.hpp</b> header defines macros for subtraction.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/arithmetic/sub.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/sub.html">BOOST_PP_SUB</a></li>
+ <li><a href="../../ref/sub_d.html">BOOST_PP_SUB_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array.html b/third_party/boostorg/preprocessor/doc/headers/array.html
new file mode 100644
index 0000000..a6d51f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <title>array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array.hpp</b> includes the headers in the <i>array</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="array/data.html"><boost/preprocessor/array/data.hpp></a></li>
+ <li><a href="array/elem.html"><boost/preprocessor/array/elem.hpp></a></li>
+ <li><a href="array/enum.html"><boost/preprocessor/array/enum.hpp></a></li>
+ <li><a href="array/insert.html"><boost/preprocessor/array/insert.hpp></a></li>
+ <li><a href="array/pop_back.html"><boost/preprocessor/array/pop_back.hpp></a></li>
+ <li><a href="array/pop_front.html"><boost/preprocessor/array/pop_front.hpp></a></li>
+ <li><a href="array/push_back.html"><boost/preprocessor/array/push_back.hpp></a></li>
+ <li><a href="array/push_front.html"><boost/preprocessor/array/push_front.hpp></a></li>
+ <li><a href="array/remove.html"><boost/preprocessor/array/remove.hpp></a></li>
+ <li><a href="array/replace.html"><boost/preprocessor/array/replace.hpp></a></li>
+ <li><a href="array/reverse.html"><boost/preprocessor/array/reverse.hpp></a></li>
+ <li><a href="array/size.html"><boost/preprocessor/array/size.hpp></a></li>
+ <li><a href="array/to_list.html"><boost/preprocessor/array/to_list.hpp></a></li>
+ <li><a href="array/to_seq.html"><boost/preprocessor/array/to_seq.hpp></a></li>
+ <li><a href="array/to_tuple.html"><boost/preprocessor/array/to_tuple.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/data.html b/third_party/boostorg/preprocessor/doc/headers/array/data.html
new file mode 100644
index 0000000..fe84607
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/data.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/data.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/data.hpp</b> header defines a macro to extract the <i>tuple</i> data from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/data.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_data.html">BOOST_PP_ARRAY_DATA</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/elem.html b/third_party/boostorg/preprocessor/doc/headers/array/elem.html
new file mode 100644
index 0000000..1897c7a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/elem.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/elem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/elem.hpp</b> header defines a macro to extract elements from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/elem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_elem.html">BOOST_PP_ARRAY_ELEM</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/enum.html b/third_party/boostorg/preprocessor/doc/headers/array/enum.html
new file mode 100644
index 0000000..5756a1b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/enum.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>array/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/enum.hpp</b> header
+defines a macro to convert an <i>array</i> to its comma-separated elements. </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/enum.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li><a href="../../ref/array_enum.html">BOOST_PP_ARRAY_ENUM</a></li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/insert.html b/third_party/boostorg/preprocessor/doc/headers/array/insert.html
new file mode 100644
index 0000000..7b5b28e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/insert.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/insert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/insert.hpp</b> header defines macros to insert an element into an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/insert.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_insert.html">BOOST_PP_ARRAY_INSERT</a></li>
+ <li><a href="../../ref/array_insert_d.html">BOOST_PP_ARRAY_INSERT_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/pop_back.html b/third_party/boostorg/preprocessor/doc/headers/array/pop_back.html
new file mode 100644
index 0000000..dce7389
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/pop_back.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/pop_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/pop_back.hpp</b> header defines macros to pop an element from the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/pop_back.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_pop_back.html">BOOST_PP_ARRAY_POP_BACK</a></li>
+ <li><a href="../../ref/array_pop_back_z.html">BOOST_PP_ARRAY_POP_BACK_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/pop_front.html b/third_party/boostorg/preprocessor/doc/headers/array/pop_front.html
new file mode 100644
index 0000000..0b752d4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/pop_front.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/pop_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/pop_front.hpp</b> header defines macros to pop an element from the beginning of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/pop_front.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_pop_front.html">BOOST_PP_ARRAY_POP_FRONT</a></li>
+ <li><a href="../../ref/array_pop_front_z.html">BOOST_PP_ARRAY_POP_FRONT_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/push_back.html b/third_party/boostorg/preprocessor/doc/headers/array/push_back.html
new file mode 100644
index 0000000..6931fad
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/push_back.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/push_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/push_back.hpp</b> header defines a macro to append an element to the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/push_back.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_push_back.html">BOOST_PP_ARRAY_PUSH_BACK</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/push_front.html b/third_party/boostorg/preprocessor/doc/headers/array/push_front.html
new file mode 100644
index 0000000..be2c62f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/push_front.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/push_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/push_front.hpp</b> header defines a macro to append an element to the beginning of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/push_front.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_push_front.html">BOOST_PP_ARRAY_PUSH_FRONT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/remove.html b/third_party/boostorg/preprocessor/doc/headers/array/remove.html
new file mode 100644
index 0000000..518b2ee
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/remove.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/remove.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/remove.hpp</b> header defines macros to remove an element from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/remove.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_remove.html">BOOST_PP_ARRAY_REMOVE</a></li>
+ <li><a href="../../ref/array_remove_d.html">BOOST_PP_ARRAY_REMOVE_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/replace.html b/third_party/boostorg/preprocessor/doc/headers/array/replace.html
new file mode 100644
index 0000000..524a68e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/replace.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>array/replace.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/replace.hpp</b> header defines macros to replace an element in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/replace.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_replace.html">BOOST_PP_ARRAY_REPLACE</a></li>
+ <li><a href="../../ref/array_replace_d.html">BOOST_PP_ARRAY_REPLACE_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/reverse.html b/third_party/boostorg/preprocessor/doc/headers/array/reverse.html
new file mode 100644
index 0000000..ec4fae2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/reverse.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/reverse.hpp</b> header defines macros to reverse the elements in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/reverse.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_reverse.html">BOOST_PP_ARRAY_REVERSE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/size.html b/third_party/boostorg/preprocessor/doc/headers/array/size.html
new file mode 100644
index 0000000..3a4be54
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/size.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>array/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>array/size.hpp</b> header defines a macro that extracts the size of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/array/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/array_size.html">BOOST_PP_ARRAY_SIZE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/to_list.html b/third_party/boostorg/preprocessor/doc/headers/array/to_list.html
new file mode 100644
index 0000000..0c2d19a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/to_list.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>array/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/to_list.hpp</b> header
+defines a macro that converts an <i>array</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/to_list.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li><a href="../../ref/array_to_list.html">BOOST_PP_ARRAY_TO_LIST</a></li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/to_seq.html b/third_party/boostorg/preprocessor/doc/headers/array/to_seq.html
new file mode 100644
index 0000000..b3ee7ee
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/to_seq.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>array/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/to_seq.hpp</b> header
+defines a macro that converts an <i>array</i> to a <i>seq.</i> </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/to_seq.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li><a href="../../ref/array_to_seq.html">BOOST_PP_ARRAY_TO_SEQ</a></li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/array/to_tuple.html b/third_party/boostorg/preprocessor/doc/headers/array/to_tuple.html
new file mode 100644
index 0000000..e903a68
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/array/to_tuple.html
@@ -0,0 +1,24 @@
+<html>
+ <head>
+ <title>array/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>array/to_tuple.hpp</b> header
+defines a macro that converts an <i>array </i>to a <i>tuple</i>. </div>
+<h4>Usage</h4>
+<div class="code"> #include <b><boost/preprocessor/array/to_tuple.hpp></b>
+</div>
+<h4>Contents</h4>
+<ul>
+ <li><a href="../../ref/array_to_tuple.html">BOOST_PP_ARRAY_TO_TUPLE</a></li>
+</ul>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/assert_msg.html b/third_party/boostorg/preprocessor/doc/headers/assert_msg.html
new file mode 100644
index 0000000..8d62717
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/assert_msg.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>assert_msg.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>assert_msg.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/assert_msg.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="debug/assert.html"><boost/preprocessor/debug/assert.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/cat.html b/third_party/boostorg/preprocessor/doc/headers/cat.html
new file mode 100644
index 0000000..406d3d4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/cat.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>cat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>cat.hpp</b> header defines a concatenation macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/cat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../ref/cat.html">BOOST_PP_CAT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comma.html b/third_party/boostorg/preprocessor/doc/headers/comma.html
new file mode 100644
index 0000000..966c114
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comma.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comma.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comma.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comma.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="punctuation/comma.html"><boost/preprocessor/punctuation/comma.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comma_if.html b/third_party/boostorg/preprocessor/doc/headers/comma_if.html
new file mode 100644
index 0000000..6d6d5cf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comma_if.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comma_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comma_if.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comma_if.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="punctuation/comma_if.html"><boost/preprocessor/punctuation/comma_if.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison.html b/third_party/boostorg/preprocessor/doc/headers/comparison.html
new file mode 100644
index 0000000..2420510
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>comparison.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison.hpp</b> includes the headers in the <i>comparison</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="comparison/equal.html"><boost/preprocessor/comparison/equal.hpp></a></li>
+ <li><a href="comparison/greater.html"><boost/preprocessor/comparison/greater.hpp></a></li>
+ <li><a href="comparison/greater_equal.html"><boost/preprocessor/comparison/greater_equal.hpp></a></li>
+ <li><a href="comparison/less.html"><boost/preprocessor/comparison/less.hpp></a></li>
+ <li><a href="comparison/less_equal.html"><boost/preprocessor/comparison/less_equal.hpp></a></li>
+ <li><a href="comparison/not_equal.html"><boost/preprocessor/comparison/not_equal.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison/equal.html b/third_party/boostorg/preprocessor/doc/headers/comparison/equal.html
new file mode 100644
index 0000000..5d9cd92
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison/equal.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/equal.hpp</b> header defines macros that compare for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/equal.html">BOOST_PP_EQUAL</a></li>
+ <li><a href="../../ref/equal_d.html">BOOST_PP_EQUAL_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison/greater.html b/third_party/boostorg/preprocessor/doc/headers/comparison/greater.html
new file mode 100644
index 0000000..b7dad2b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison/greater.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/greater.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/greater.hpp</b> header defines macros that compare for greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/greater.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/greater.html">BOOST_PP_GREATER</a></li>
+ <li><a href="../../ref/greater_d.html">BOOST_PP_GREATER_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison/greater_equal.html b/third_party/boostorg/preprocessor/doc/headers/comparison/greater_equal.html
new file mode 100644
index 0000000..ad5ed80
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison/greater_equal.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/greater_equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/greater_equal.hpp</b> header defines macros that compare for equality or greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/greater_equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/greater_equal.html">BOOST_PP_GREATER_EQUAL</a></li>
+ <li><a href="../../ref/greater_equal_d.html">BOOST_PP_GREATER_EQUAL_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison/less.html b/third_party/boostorg/preprocessor/doc/headers/comparison/less.html
new file mode 100644
index 0000000..3233848
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison/less.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/less.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/less.hpp</b> header defines macros that compare for lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/less.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/less.html">BOOST_PP_LESS</a></li>
+ <li><a href="../../ref/less_d.html">BOOST_PP_LESS_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison/less_equal.html b/third_party/boostorg/preprocessor/doc/headers/comparison/less_equal.html
new file mode 100644
index 0000000..f1d846b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison/less_equal.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/less_equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/less_equal.hpp</b> header defines macros that compare for equality or lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/less_equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/less_equal.html">BOOST_PP_LESS_EQUAL</a></li>
+ <li><a href="../../ref/less_equal_d.html">BOOST_PP_LESS_EQUAL_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/comparison/not_equal.html b/third_party/boostorg/preprocessor/doc/headers/comparison/not_equal.html
new file mode 100644
index 0000000..b23f499
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/comparison/not_equal.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>comparison/not_equal.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>comparison/not_equal.hpp</b> header defines macros that compare for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/comparison/not_equal.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/not_equal.html">BOOST_PP_NOT_EQUAL</a></li>
+ <li><a href="../../ref/not_equal_d.html">BOOST_PP_NOT_EQUAL_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/config/limits.html b/third_party/boostorg/preprocessor/doc/headers/config/limits.html
new file mode 100644
index 0000000..11fde7e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/config/limits.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <title>config/limits.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>config/limits.hpp</b> header defines various library limits.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/config/limits.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li><a href="../../ref/limit_dim.html">BOOST_PP_LIMIT_DIM</a></li>
+ <li><a href="../../ref/limit_for.html">BOOST_PP_LIMIT_FOR</a></li>
+ <li><a href="../../ref/limit_iteration.html">BOOST_PP_LIMIT_ITERATION</a></li>
+ <li><a href="../../ref/limit_iteration_dim.html">BOOST_PP_LIMIT_ITERATION_DIM</a></li>
+ <li><a href="../../ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="../../ref/limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="../../ref/limit_seq.html">BOOST_PP_LIMIT_SEQ</a></li>
+ <li><a href="../../ref/limit_slot_count.html">BOOST_PP_LIMIT_SLOT_COUNT</a></li>
+ <li><a href="../../ref/limit_slot_sig.html">BOOST_PP_LIMIT_SLOT_SIG</a></li>
+ <li><a href="../../ref/limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ <li><a href="../../ref/limit_while.html">BOOST_PP_LIMIT_WHILE</a></li>
+ <li><a href="../../ref/limit_variadic.html">BOOST_PP_LIMIT_VARIADIC</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/config/variadics.html b/third_party/boostorg/preprocessor/doc/headers/config/variadics.html
new file mode 100644
index 0000000..334f053
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/config/variadics.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>config/config.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>config/config.hpp</b>
+header defines internal configuration macros as well as a macro for determining variadic macro support. The file
+is automatically included whenever any Boost PP macros are used. The end-user can manually
+include it in order to use the BOOST_PP_VARIADICS macro, but normally should never have to do so. </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/config/config.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li><a href="../../ref/variadics.html">BOOST_PP_VARIADICS</a></li></ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"><i>© Copyright Edward Diener 2011,2014</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control.html b/third_party/boostorg/preprocessor/doc/headers/control.html
new file mode 100644
index 0000000..d79582c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>control.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control.hpp</b> includes the headers in the <i>control</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="control/deduce_d.html"><boost/preprocessor/control/deduce_d.hpp></a></li>
+ <li><a href="control/expr_if.html"><boost/preprocessor/control/expr_if.hpp></a></li>
+ <li><a href="control/expr_iif.html"><boost/preprocessor/control/expr_iif.hpp></a></li>
+ <li><a href="control/if.html"><boost/preprocessor/control/if.hpp></a></li>
+ <li><a href="control/iif.html"><boost/preprocessor/control/iif.hpp></a></li>
+ <li><a href="control/while.html"><boost/preprocessor/control/while.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control/deduce_d.html b/third_party/boostorg/preprocessor/doc/headers/control/deduce_d.html
new file mode 100644
index 0000000..2988768
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control/deduce_d.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/deduce_d.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/deduce_d.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_WHILE</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/deduce_d.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/deduce_d.html">BOOST_PP_DEDUCE_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control/expr_if.html b/third_party/boostorg/preprocessor/doc/headers/control/expr_if.html
new file mode 100644
index 0000000..26cf712
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control/expr_if.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/expr_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/expr_if.hpp</b> header defines a macro that expands to an expression selectively.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/expr_if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/expr_if.html">BOOST_PP_EXPR_IF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control/expr_iif.html b/third_party/boostorg/preprocessor/doc/headers/control/expr_iif.html
new file mode 100644
index 0000000..18a7c1a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control/expr_iif.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/expr_iif.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/expr_iif.hpp</b> header defines a macro that expands to an expression selectively.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/expr_iif.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/expr_iif.html">BOOST_PP_EXPR_IIF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control/if.html b/third_party/boostorg/preprocessor/doc/headers/control/if.html
new file mode 100644
index 0000000..80f1ede
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control/if.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/if.hpp</b> header defines a macro that chooses between two alternatives.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/if.html">BOOST_PP_IF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control/iif.html b/third_party/boostorg/preprocessor/doc/headers/control/iif.html
new file mode 100644
index 0000000..35756bb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control/iif.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/iif.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/iif.hpp</b> header defines a macro that chooses between two alternatives.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/iif.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/iif.html">BOOST_PP_IIF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/control/while.html b/third_party/boostorg/preprocessor/doc/headers/control/while.html
new file mode 100644
index 0000000..6053cd7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/control/while.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>control/while.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>control/while.hpp</b> header defines a looping contruct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/control/while.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/while.html">BOOST_PP_WHILE</a></li>
+ <li><a href="../../ref/while_d.html">BOOST_PP_WHILE_<i>d</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/debug.html b/third_party/boostorg/preprocessor/doc/headers/debug.html
new file mode 100644
index 0000000..451c931
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/debug.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>debug.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>debug.hpp</b> includes the headers in the <i>debug</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/debug.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="debug/assert.html"><boost/preprocessor/debug/assert.hpp></a></li>
+ <li><a href="debug/line.html"><boost/preprocessor/debug/line.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/debug/assert.html b/third_party/boostorg/preprocessor/doc/headers/debug/assert.html
new file mode 100644
index 0000000..7da2122
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/debug/assert.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>debug/assert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>debug/assert.hpp</b> header defines macros for preprocessing-time assertions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/debug/assert.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/assert.html">BOOST_PP_ASSERT</a></li>
+ <li><a href="../../ref/assert_msg.html">BOOST_PP_ASSERT_MSG</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/debug/line.html b/third_party/boostorg/preprocessor/doc/headers/debug/line.html
new file mode 100644
index 0000000..8dc9969
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/debug/line.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>debug/line.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>debug/line.hpp</b> header defines macros for preprocessing-time assertions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/debug/line.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/line.html">BOOST_PP_LINE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/dec.html b/third_party/boostorg/preprocessor/doc/headers/dec.html
new file mode 100644
index 0000000..68cc019
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/dec.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>dec.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>dec.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/dec.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="arithmetic/dec.html"><boost/preprocessor/arithmetic/dec.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/empty.html b/third_party/boostorg/preprocessor/doc/headers/empty.html
new file mode 100644
index 0000000..b50b914
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/empty.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>empty.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>empty.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/empty.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="facilities/empty.html"><boost/preprocessor/facilities/empty.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/enum.html b/third_party/boostorg/preprocessor/doc/headers/enum.html
new file mode 100644
index 0000000..24e054d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/enum.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/enum.html"><boost/preprocessor/repetition/enum.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/enum_params.html b/third_party/boostorg/preprocessor/doc/headers/enum_params.html
new file mode 100644
index 0000000..c466b63
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/enum_params.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_params.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_params.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/enum_params.html"><boost/preprocessor/repetition/enum_params.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/enum_shifted.html b/third_party/boostorg/preprocessor/doc/headers/enum_shifted.html
new file mode 100644
index 0000000..c3ae8a4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/enum_shifted.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_shifted.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_shifted.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_shifted.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/enum_shifted.html"><boost/preprocessor/repetition/enum_shifted.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/enum_shifted_params.html b/third_party/boostorg/preprocessor/doc/headers/enum_shifted_params.html
new file mode 100644
index 0000000..b60db4f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/enum_shifted_params.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_shifted_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_shifted_params.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_shifted_params.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/enum_shifted_params.html"><boost/preprocessor/repetition/enum_shifted_params.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/epwad.html b/third_party/boostorg/preprocessor/doc/headers/epwad.html
new file mode 100644
index 0000000..ef94d36
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/epwad.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_params_with_a_default.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_params_with_a_default.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_params_with_a_default.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/epwad.html"><boost/preprocessor/repetition/enum_params_with_a_default.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/epwd.html b/third_party/boostorg/preprocessor/doc/headers/epwd.html
new file mode 100644
index 0000000..87889ea
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/epwd.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>enum_params_with_defaults.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>enum_params_with_defaults.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/enum_params_with_defaults.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/epwd.html"><boost/preprocessor/repetition/enum_params_with_defaults.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/expand.html b/third_party/boostorg/preprocessor/doc/headers/expand.html
new file mode 100644
index 0000000..42776d8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/expand.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>expand.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>expand.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/expand.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="facilities/expand.html"><boost/preprocessor/facilities/expand.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/expr_if.html b/third_party/boostorg/preprocessor/doc/headers/expr_if.html
new file mode 100644
index 0000000..0b13c52
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/expr_if.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>expr_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>expr_if.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/expr_if.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="control/expr_if.html"><boost/preprocessor/control/expr_if.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities.html b/third_party/boostorg/preprocessor/doc/headers/facilities.html
new file mode 100644
index 0000000..90eaa39
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>facilities.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities.hpp</b> includes the headers in the <i>facilities</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="facilities/apply.html"><boost/preprocessor/facilities/apply.hpp></a></li>
+ <li><a href="facilities/empty.html"><boost/preprocessor/facilities/empty.hpp></a></li>
+ <li><a href="facilities/expand.html"><boost/preprocessor/facilities/expand.hpp></a></li>
+ <li><a href="facilities/identity.html"><boost/preprocessor/facilities/identity.hpp></a></li>
+ <li><a href="facilities/intercept.html"><boost/preprocessor/facilities/intercept.hpp></a></li>
+ <li><a href="facilities/overload.html"><boost/preprocessor/facilities/overload.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities/apply.html b/third_party/boostorg/preprocessor/doc/headers/facilities/apply.html
new file mode 100644
index 0000000..6735dad
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities/apply.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/apply.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/apply.hpp</b> header defines facilities that abstract the difference between an argument and nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/apply.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/apply.html">BOOST_PP_APPLY</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities/empty.html b/third_party/boostorg/preprocessor/doc/headers/facilities/empty.html
new file mode 100644
index 0000000..7460e96
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities/empty.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/empty.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/empty.hpp</b> header defines a nullary macro that expands to nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/empty.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/empty.html">BOOST_PP_EMPTY</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities/expand.html b/third_party/boostorg/preprocessor/doc/headers/facilities/expand.html
new file mode 100644
index 0000000..9b8fe21
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities/expand.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/expand.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/expand.hpp</b> header defines a macro that causes double expansion.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/expand.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/expand.html">BOOST_PP_EXPAND</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities/identity.html b/third_party/boostorg/preprocessor/doc/headers/facilities/identity.html
new file mode 100644
index 0000000..af9034b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities/identity.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>facilities/identity.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/identity.hpp</b> header defines utility macros to use with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/identity.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/identity.html">BOOST_PP_IDENTITY</a></li>
+ <li><a href="../../ref/identity_n.html">BOOST_PP_IDENTITY_N</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </br><i>© Copyright Edward Diener 2015</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities/intercept.html b/third_party/boostorg/preprocessor/doc/headers/facilities/intercept.html
new file mode 100644
index 0000000..b258090
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities/intercept.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>facilities/intercept.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/intercept.hpp</b> header defines a utility macro to intercept a numeric concatenation.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/intercept.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/intercept.html">BOOST_PP_INTERCEPT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/facilities/overload.html b/third_party/boostorg/preprocessor/doc/headers/facilities/overload.html
new file mode 100644
index 0000000..0dc33c2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/facilities/overload.html
@@ -0,0 +1,28 @@
+<html>
+ <head>
+ <title>facilities/overload.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>facilities/overload.hpp</b> header defines variadic macros that overload non-variadic macros to accept different numbers of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/facilities/overload.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/overload.html">BOOST_PP_OVERLOAD</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/headers/for.html b/third_party/boostorg/preprocessor/doc/headers/for.html
new file mode 100644
index 0000000..f31eb40
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/for.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>for.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>for.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/for.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/for.html"><boost/preprocessor/repetition/for.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/identity.html b/third_party/boostorg/preprocessor/doc/headers/identity.html
new file mode 100644
index 0000000..79579df
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/identity.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>identity.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>identity.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/identity.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="facilities/identity.html"><boost/preprocessor/facilities/identity.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/if.html b/third_party/boostorg/preprocessor/doc/headers/if.html
new file mode 100644
index 0000000..1128991
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/if.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>if.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/if.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="control/if.html"><boost/preprocessor/control/if.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/inc.html b/third_party/boostorg/preprocessor/doc/headers/inc.html
new file mode 100644
index 0000000..97c029f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/inc.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>inc.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>inc.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/inc.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="arithmetic/inc.html"><boost/preprocessor/arithmetic/inc.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/iterate.html b/third_party/boostorg/preprocessor/doc/headers/iterate.html
new file mode 100644
index 0000000..e1cd09f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/iterate.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>iterate.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iterate.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iterate.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/iteration.html b/third_party/boostorg/preprocessor/doc/headers/iteration.html
new file mode 100644
index 0000000..50cd379
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/iteration.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>iteration.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration.hpp</b> includes the headers in the <i>iteration</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a></li>
+ <li><a href="iteration/local.html"><boost/preprocessor/iteration/local.hpp></a></li>
+ <li><a href="iteration/self.html"><boost/preprocessor/iteration/self.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/iteration/iterate.html b/third_party/boostorg/preprocessor/doc/headers/iteration/iterate.html
new file mode 100644
index 0000000..90138e9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/iteration/iterate.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <title>iteration/iterate.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration/iterate.hpp</b> header defines a macros to interface with the <i>file-iteration</i> mechanism.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration/iterate.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/frame_finish.html">BOOST_PP_FRAME_FINISH</a></li>
+ <li><a href="../../ref/frame_flags.html">BOOST_PP_FRAME_FLAGS</a></li>
+ <li><a href="../../ref/frame_iteration.html">BOOST_PP_FRAME_ITERATION</a></li>
+ <li><a href="../../ref/frame_start.html">BOOST_PP_FRAME_START</a></li>
+ <li><a href="../../ref/iterate.html">BOOST_PP_ITERATE</a></li>
+ <li><a href="../../ref/iteration.html">BOOST_PP_ITERATION</a></li>
+ <li><a href="../../ref/iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a></li>
+ <li><a href="../../ref/iteration_finish.html">BOOST_PP_ITERATION_FINISH</a></li>
+ <li><a href="../../ref/iteration_flags.html">BOOST_PP_ITERATION_FLAGS</a></li>
+ <li><a href="../../ref/iteration_start.html">BOOST_PP_ITERATION_START</a></li>
+ <li><a href="../../ref/relative_finish.html">BOOST_PP_RELATIVE_FINISH</a></li>
+ <li><a href="../../ref/relative_flags.html">BOOST_PP_RELATIVE_FLAGS</a></li>
+ <li><a href="../../ref/relative_iteration.html">BOOST_PP_RELATIVE_ITERATION</a></li>
+ <li><a href="../../ref/relative_start.html">BOOST_PP_RELATIVE_START</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/iteration/local.html b/third_party/boostorg/preprocessor/doc/headers/iteration/local.html
new file mode 100644
index 0000000..efcec99
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/iteration/local.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>iteration/local.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration/local.hpp</b> header defines a macro to interface with the <i>local-iteration</i> mechanism.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration/local.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/local_iterate.html">BOOST_PP_LOCAL_ITERATE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/iteration/self.html b/third_party/boostorg/preprocessor/doc/headers/iteration/self.html
new file mode 100644
index 0000000..7821009
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/iteration/self.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>iteration/self.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>iteration/self.hpp</b> header defines a macro to facilitate self-inclusion.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/iteration/self.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/include_self.html">BOOST_PP_INCLUDE_SELF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/library.html b/third_party/boostorg/preprocessor/doc/headers/library.html
new file mode 100644
index 0000000..2f2a819
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/library.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <title>library.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>library.hpp</b> includes the entire library.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/library.hpp></b>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/limits.html b/third_party/boostorg/preprocessor/doc/headers/limits.html
new file mode 100644
index 0000000..3a46c0a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/limits.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>limits.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>limits.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/limits.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="config/limits.html"><boost/preprocessor/config/limits.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list.html b/third_party/boostorg/preprocessor/doc/headers/list.html
new file mode 100644
index 0000000..cc4783a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <title>list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list.hpp</b> includes the headers in the <i>list</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="list/adt.html"><boost/preprocessor/list/adt.hpp></a></li>
+ <li><a href="list/append.html"><boost/preprocessor/list/append.hpp></a></li>
+ <li><a href="list/at.html"><boost/preprocessor/list/at.hpp></a></li>
+ <li><a href="list/cat.html"><boost/preprocessor/list/cat.hpp></a></li>
+ <li><a href="list/enum.html"><boost/preprocessor/list/enum.hpp></a></li>
+ <li><a href="list/filter.html"><boost/preprocessor/list/filter.hpp></a></li>
+ <li><a href="list/first_n.html"><boost/preprocessor/list/first_n.hpp></a></li>
+ <li><a href="list/fold_left.html"><boost/preprocessor/list/fold_left.hpp></a></li>
+ <li><a href="list/fold_right.html"><boost/preprocessor/list/fold_right.hpp></a></li>
+ <li><a href="list/for_each.html"><boost/preprocessor/list/for_each.hpp></a></li>
+ <li><a href="list/for_each_i.html"><boost/preprocessor/list/for_each_i.hpp></a></li>
+ <li><a href="list/for_each_product.html"><boost/preprocessor/list/for_each_product.hpp></a></li>
+ <li><a href="list/rest_n.html"><boost/preprocessor/list/rest_n.hpp></a></li>
+ <li><a href="list/reverse.html"><boost/preprocessor/list/reverse.hpp></a></li>
+ <li><a href="list/size.html"><boost/preprocessor/list/size.hpp></a></li>
+ <li><a href="list/to_array.html"><boost/preprocessor/list/to_array.hpp></a></li>
+ <li><a href="list/to_seq.html"><boost/preprocessor/list/to_seq.hpp></a></li>
+ <li><a href="list/to_tuple.html"><boost/preprocessor/list/to_tuple.hpp></a></li>
+ <li><a href="list/transform.html"><boost/preprocessor/list/transform.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/adt.html b/third_party/boostorg/preprocessor/doc/headers/list/adt.html
new file mode 100644
index 0000000..919e729
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/adt.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>list/adt.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/adt.hpp</b> header defines basic operations for manipulating <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/adt.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_cons.html">BOOST_PP_LIST_CONS</a></li>
+ <li><a href="../../ref/list_first.html">BOOST_PP_LIST_FIRST</a></li>
+ <li><a href="../../ref/list_is_cons.html">BOOST_PP_LIST_IS_CONS</a></li>
+ <li><a href="../../ref/list_is_nil.html">BOOST_PP_LIST_IS_NIL</a></li>
+ <li><a href="../../ref/list_nil.html">BOOST_PP_LIST_NIL</a></li>
+ <li><a href="../../ref/list_rest.html">BOOST_PP_LIST_REST</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/append.html b/third_party/boostorg/preprocessor/doc/headers/list/append.html
new file mode 100644
index 0000000..bbf40a4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/append.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/append.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/append.hpp</b> header defines macros for appending one <i>list</i> to another.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/append.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_append.html">BOOST_PP_LIST_APPEND</a></li>
+ <li><a href="../../ref/list_append_d.html">BOOST_PP_LIST_APPEND_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/at.html b/third_party/boostorg/preprocessor/doc/headers/list/at.html
new file mode 100644
index 0000000..cf20fdc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/at.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/at.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/at.hpp</b> header defines macros for extracting an element from a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/at.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_at.html">BOOST_PP_LIST_AT</a></li>
+ <li><a href="../../ref/list_at_d.html">BOOST_PP_LIST_AT_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/cat.html b/third_party/boostorg/preprocessor/doc/headers/list/cat.html
new file mode 100644
index 0000000..34c058a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/cat.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/cat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/cat.hpp</b> header defines macros for concatenating all elements in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/cat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_cat.html">BOOST_PP_LIST_CAT</a></li>
+ <li><a href="../../ref/list_cat_d.html">BOOST_PP_LIST_CAT_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/enum.html b/third_party/boostorg/preprocessor/doc/headers/list/enum.html
new file mode 100644
index 0000000..fa18f11
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/enum.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/enum.hpp</b> header defines macros to convert a <i>list</i> to a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/enum.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_enum.html">BOOST_PP_LIST_ENUM</a></li>
+ <li><a href="../../ref/list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/filter.html b/third_party/boostorg/preprocessor/doc/headers/list/filter.html
new file mode 100644
index 0000000..5a882ad
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/filter.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/filter.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/filter.hpp</b> header defines macros to filter a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/filter.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_filter.html">BOOST_PP_LIST_FILTER</a></li>
+ <li><a href="../../ref/list_filter_d.html">BOOST_PP_LIST_FILTER_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/first_n.html b/third_party/boostorg/preprocessor/doc/headers/list/first_n.html
new file mode 100644
index 0000000..bc6c0da
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/first_n.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/first_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/first_n.hpp</b> header defines macros for extracting a group of elements from the beginning of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/first_n.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_first_n.html">BOOST_PP_LIST_FIRST_N</a></li>
+ <li><a href="../../ref/list_first_n_d.html">BOOST_PP_LIST_FIRST_N_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/fold_left.html b/third_party/boostorg/preprocessor/doc/headers/list/fold_left.html
new file mode 100644
index 0000000..077f3eb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/fold_left.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>list/fold_left.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/fold_left.hpp</b> header defines folding (or accumulating) a <i>list</i> left-to-right.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/fold_left.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a></li>
+ <li><a href="../../ref/list_fold_left_2nd.html">BOOST_PP_LIST_FOLD_LEFT_2ND</a></li>
+ <li><a href="../../ref/list_fold_left_2nd_d.html">BOOST_PP_LIST_FOLD_LEFT_2ND_D</a></li>
+ <li><a href="../../ref/list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_<i>d</i></a></li>
+ <li><a href="../../ref/list_fold_left_d_old.html">BOOST_PP_LIST_FOLD_LEFT_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/fold_right.html b/third_party/boostorg/preprocessor/doc/headers/list/fold_right.html
new file mode 100644
index 0000000..827de4a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/fold_right.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>list/fold_right.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/fold_right.hpp</b> header defines folding (or accumulating) a <i>list</i> right-to-left.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/fold_right.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
+ <li><a href="../../ref/list_fold_right_2nd.html">BOOST_PP_LIST_FOLD_RIGHT_2ND</a></li>
+ <li><a href="../../ref/list_fold_right_2nd_d.html">BOOST_PP_LIST_FOLD_RIGHT_2ND_D</a></li>
+ <li><a href="../../ref/list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></a></li>
+ <li><a href="../../ref/list_fold_right_d_old.html">BOOST_PP_LIST_FOLD_RIGHT_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/for_each.html b/third_party/boostorg/preprocessor/doc/headers/list/for_each.html
new file mode 100644
index 0000000..ebfa15d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/for_each.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/for_each.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/for_each.hpp</b> header defines macros to repeat a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/for_each.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_for_each.html">BOOST_PP_LIST_FOR_EACH</a></li>
+ <li><a href="../../ref/list_for_each_r.html">BOOST_PP_LIST_FOR_EACH_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/for_each_i.html b/third_party/boostorg/preprocessor/doc/headers/list/for_each_i.html
new file mode 100644
index 0000000..d25c7c1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/for_each_i.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/for_each_i.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/for_each_i.hpp</b> header defines macros to repeat a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/for_each_i.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_for_each_i.html">BOOST_PP_LIST_FOR_EACH_I</a></li>
+ <li><a href="../../ref/list_for_each_i_r.html">BOOST_PP_LIST_FOR_EACH_I_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/for_each_product.html b/third_party/boostorg/preprocessor/doc/headers/list/for_each_product.html
new file mode 100644
index 0000000..1d77142
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/for_each_product.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/for_each_product.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/for_each_product.hpp</b> header defines macros to repeat a macro for each cartesian product of several <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/for_each_product.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_for_each_product.html">BOOST_PP_LIST_FOR_EACH_PRODUCT</a></li>
+ <li><a href="../../ref/list_for_each_product_r.html">BOOST_PP_LIST_FOR_EACH_PRODUCT_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/rest_n.html b/third_party/boostorg/preprocessor/doc/headers/list/rest_n.html
new file mode 100644
index 0000000..20cf6c8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/rest_n.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/rest_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/rest_n.hpp</b> header defines macros for extracting a group of elements from the end of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/rest_n.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_rest_n.html">BOOST_PP_LIST_REST_N</a></li>
+ <li><a href="../../ref/list_rest_n_d.html">BOOST_PP_LIST_REST_N_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/reverse.html b/third_party/boostorg/preprocessor/doc/headers/list/reverse.html
new file mode 100644
index 0000000..852ed13
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/reverse.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/reverse.hpp</b> header defines macros to reverse a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/reverse.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_reverse.html">BOOST_PP_LIST_REVERSE</a></li>
+ <li><a href="../../ref/list_reverse_d.html">BOOST_PP_LIST_REVERSE_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/size.html b/third_party/boostorg/preprocessor/doc/headers/list/size.html
new file mode 100644
index 0000000..9d9bfd6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/size.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/size.hpp</b> header defines macros to calculate the size of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_size.html">BOOST_PP_LIST_SIZE</a></li>
+ <li><a href="../../ref/list_size_d.html">BOOST_PP_LIST_SIZE_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/to_array.html b/third_party/boostorg/preprocessor/doc/headers/list/to_array.html
new file mode 100644
index 0000000..6910601
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/to_array.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <title>list/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/to_array.hpp</b> header defines a macro to convert a <i>list</i> to an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/to_array.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_to_array.html">BOOST_PP_LIST_TO_ARRAY</a></li>
+ <li><a href="../../ref/list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/to_seq.html b/third_party/boostorg/preprocessor/doc/headers/list/to_seq.html
new file mode 100644
index 0000000..c90de90
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/to_seq.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>list/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>list/to_seq.hpp</b> header defines a macro to convert a <i>list</i> to a <i>seq</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/to_seq.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_to_seq.html">BOOST_PP_LIST_TO_SEQ</a></li>
+ <li><a href="../../ref/list_to_seq.html">BOOST_PP_LIST_TO_SEQ_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/to_tuple.html b/third_party/boostorg/preprocessor/doc/headers/list/to_tuple.html
new file mode 100644
index 0000000..a8cb42d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/to_tuple.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/to_tuple.hpp</b> header defines macros to convert a <i>list</i> to a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/to_tuple.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a></li>
+ <li><a href="../../ref/list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/list/transform.html b/third_party/boostorg/preprocessor/doc/headers/list/transform.html
new file mode 100644
index 0000000..bcd93b7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/list/transform.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>list/transform.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>list/transform.hpp</b> header defines macros to transform a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/list/transform.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/list_transform.html">BOOST_PP_LIST_TRANSFORM</a></li>
+ <li><a href="../../ref/list_transform_d.html">BOOST_PP_LIST_TRANSFORM_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical.html b/third_party/boostorg/preprocessor/doc/headers/logical.html
new file mode 100644
index 0000000..041abfa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical.html
@@ -0,0 +1,40 @@
+<html>
+<head>
+ <title>logical.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical.hpp</b> includes the headers in the <i>logical</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="logical/and.html"><boost/preprocessor/logical/and.hpp></a></li>
+ <li><a href="logical/bitand.html"><boost/preprocessor/logical/bitand.hpp></a></li>
+ <li><a href="logical/bitnor.html"><boost/preprocessor/logical/bitnor.hpp></a></li>
+ <li><a href="logical/bitor.html"><boost/preprocessor/logical/bitor.hpp></a></li>
+ <li><a href="logical/bitxor.html"><boost/preprocessor/logical/bitxor.hpp></a></li>
+ <li><a href="logical/bool.html"><boost/preprocessor/logical/bool.hpp></a></li>
+ <li><a href="logical/compl.html"><boost/preprocessor/logical/compl.hpp></a></li>
+ <li><a href="logical/nor.html"><boost/preprocessor/logical/nor.hpp></a></li>
+ <li><a href="logical/not.html"><boost/preprocessor/logical/not.hpp></a></li>
+ <li><a href="logical/or.html"><boost/preprocessor/logical/or.hpp></a></li>
+ <li><a href="logical/xor.html"><boost/preprocessor/logical/xor.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/and.html b/third_party/boostorg/preprocessor/doc/headers/logical/and.html
new file mode 100644
index 0000000..cc1f37d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/and.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/and.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/and.hpp</b> header defines a macro that expands to the logical <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/and.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/and.html">BOOST_PP_AND</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/bitand.html b/third_party/boostorg/preprocessor/doc/headers/logical/bitand.html
new file mode 100644
index 0000000..305694c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/bitand.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitand.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitand.hpp</b> header defines a macro that expands to the bitwise <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitand.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/bitand.html">BOOST_PP_BITAND</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/bitnor.html b/third_party/boostorg/preprocessor/doc/headers/logical/bitnor.html
new file mode 100644
index 0000000..1b1b078
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/bitnor.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitnor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitnor.hpp</b> header defines a macro that expands to the bitwise <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitnor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/bitnor.html">BOOST_PP_BITNOR</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/bitor.html b/third_party/boostorg/preprocessor/doc/headers/logical/bitor.html
new file mode 100644
index 0000000..1c2aec8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/bitor.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitor.hpp</b> header defines a macro that expands to the bitwise <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/bitor.html">BOOST_PP_BITOR</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/bitxor.html b/third_party/boostorg/preprocessor/doc/headers/logical/bitxor.html
new file mode 100644
index 0000000..3bfa14d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/bitxor.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bitxor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bitxor.hpp</b> header defines a macro that expands to the bitwise <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bitxor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/bitxor.html">BOOST_PP_BITXOR</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/bool.html b/third_party/boostorg/preprocessor/doc/headers/logical/bool.html
new file mode 100644
index 0000000..9145606
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/bool.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/bool.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/bool.hpp</b> header defines a macro that performs a boolean conversion on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/bool.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/bool.html">BOOST_PP_BOOL</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/compl.html b/third_party/boostorg/preprocessor/doc/headers/logical/compl.html
new file mode 100644
index 0000000..1d7503e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/compl.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/compl.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/compl.hpp</b> header defines a macro that performs a bitwise inversion on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/compl.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/compl.html">BOOST_PP_COMPL</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/nor.html b/third_party/boostorg/preprocessor/doc/headers/logical/nor.html
new file mode 100644
index 0000000..d58eae3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/nor.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/nor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/nor.hpp</b> header defines a macro that expands to the logical <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/nor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/nor.html">BOOST_PP_NOR</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/not.html b/third_party/boostorg/preprocessor/doc/headers/logical/not.html
new file mode 100644
index 0000000..57347be
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/not.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/not.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/not.hpp</b> header defines a macro that performs a logical <i>NOT</i> on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/not.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/not.html">BOOST_PP_NOT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/or.html b/third_party/boostorg/preprocessor/doc/headers/logical/or.html
new file mode 100644
index 0000000..f588b8c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/or.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/or.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/or.hpp</b> header defines a macro that expands to the logical <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/or.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/or.html">BOOST_PP_OR</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/logical/xor.html b/third_party/boostorg/preprocessor/doc/headers/logical/xor.html
new file mode 100644
index 0000000..67c8962
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/logical/xor.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>logical/xor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>logical/xor.hpp</b> header defines a macro that expands to the logical <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/logical/xor.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/xor.html">BOOST_PP_XOR</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/max.html b/third_party/boostorg/preprocessor/doc/headers/max.html
new file mode 100644
index 0000000..95d8bb6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/max.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>max.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>max.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/max.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="selection/max.html"><boost/preprocessor/selection/max.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/min.html b/third_party/boostorg/preprocessor/doc/headers/min.html
new file mode 100644
index 0000000..44498a4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/min.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>min.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>min.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/min.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="selection/min.html"><boost/preprocessor/selection/min.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/preprocessor.html b/third_party/boostorg/preprocessor/doc/headers/preprocessor.html
new file mode 100644
index 0000000..889b8cc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/preprocessor.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <title>preprocessor.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>preprocessor.hpp</b> includes the entire library.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor.hpp></b>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation.html b/third_party/boostorg/preprocessor/doc/headers/punctuation.html
new file mode 100644
index 0000000..28b4632
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>punctuation.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation.hpp</b> includes the headers in the <i>punctuation</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="punctuation/comma.html"><boost/preprocessor/punctuation/comma.hpp></a></li>
+ <li><a href="punctuation/comma_if.html"><boost/preprocessor/punctuation/comma_if.hpp></a></li>
+ <li><a href="punctuation/paren.html"><boost/preprocessor/punctuation/paren.hpp></a></li>
+ <li><a href="punctuation/paren_if.html"><boost/preprocessor/punctuation/paren_if.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation/comma.html b/third_party/boostorg/preprocessor/doc/headers/punctuation/comma.html
new file mode 100644
index 0000000..1be2eba
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation/comma.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>punctuation/comma.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/comma.hpp</b> header defines a macro that expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/comma.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/comma.html">BOOST_PP_COMMA</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation/comma_if.html b/third_party/boostorg/preprocessor/doc/headers/punctuation/comma_if.html
new file mode 100644
index 0000000..8dc1edc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation/comma_if.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>punctuation/comma_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/comma_if.hpp</b> header defines a macro that conditionally expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/comma_if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/comma_if.html">BOOST_PP_COMMA_IF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation/is_begin_parens.html b/third_party/boostorg/preprocessor/doc/headers/punctuation/is_begin_parens.html
new file mode 100644
index 0000000..4897623
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation/is_begin_parens.html
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>punctuation/is_begin_parens.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>punctuation/is_begin_parens.hpp</b>
+ header defines a macro that determines if variadic data begins with a
+ parenthesis.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/punctuation/is_begin_parens.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/is_begin_parens.html">BOOST_PP_IS_BEGIN_PARENS</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation/paren.html b/third_party/boostorg/preprocessor/doc/headers/punctuation/paren.html
new file mode 100644
index 0000000..645ea99
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation/paren.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>punctuation/paren.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/paren.hpp</b> header defines macros that expand to left and right parentheses.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/paren.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/lparen.html">BOOST_PP_LPAREN</a></li>
+ <li><a href="../../ref/rparen.html">BOOST_PP_RPAREN</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation/paren_if.html b/third_party/boostorg/preprocessor/doc/headers/punctuation/paren_if.html
new file mode 100644
index 0000000..67c5300
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation/paren_if.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>punctuation/paren_if.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>punctuation/paren_if.hpp</b> header defines macros that conditionally expand to left and right parentheses.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/punctuation/paren_if.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/lparen_if.html">BOOST_PP_LPAREN_IF</a></li>
+ <li><a href="../../ref/rparen_if.html">BOOST_PP_RPAREN_IF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/punctuation/remove_parens.html b/third_party/boostorg/preprocessor/doc/headers/punctuation/remove_parens.html
new file mode 100644
index 0000000..f2b6e46
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/punctuation/remove_parens.html
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>punctuation/remove_parens.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>punctuation/remove_parens.hpp</b>
+ header defines a macro that removes the beginning parenthesis from its
+ input if it exists.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/punctuation/remove_parens.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/remove_parens.html">BOOST_PP_REMOVE_PARENS</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repeat.html b/third_party/boostorg/preprocessor/doc/headers/repeat.html
new file mode 100644
index 0000000..e057d9a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repeat.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repeat_2nd.html b/third_party/boostorg/preprocessor/doc/headers/repeat_2nd.html
new file mode 100644
index 0000000..e3bcadd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repeat_2nd.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_2nd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_2nd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_2nd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repeat_3rd.html b/third_party/boostorg/preprocessor/doc/headers/repeat_3rd.html
new file mode 100644
index 0000000..e172031
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repeat_3rd.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_3rd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_3rd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_3rd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repeat_from_to.html b/third_party/boostorg/preprocessor/doc/headers/repeat_from_to.html
new file mode 100644
index 0000000..3cc9d68
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repeat_from_to.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_from_to.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_from_to.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_from_to.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repeat_from_to_2nd.html b/third_party/boostorg/preprocessor/doc/headers/repeat_from_to_2nd.html
new file mode 100644
index 0000000..8bdf152
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repeat_from_to_2nd.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_from_to_2nd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_from_to_2nd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_from_to_2nd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repeat_from_to_3rd.html b/third_party/boostorg/preprocessor/doc/headers/repeat_from_to_3rd.html
new file mode 100644
index 0000000..5de4146f2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repeat_from_to_3rd.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repeat_from_to_3rd.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repeat_from_to_3rd.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repeat_from_to_3rd.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition.html b/third_party/boostorg/preprocessor/doc/headers/repetition.html
new file mode 100644
index 0000000..30675e3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <title>repetition.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition.hpp</b> includes the headers in the <i>repetition</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="repetition/deduce_r.html"><boost/preprocessor/repetition/deduce_r.hpp></a></li>
+ <li><a href="repetition/deduce_z.html"><boost/preprocessor/repetition/deduce_z.hpp></a></li>
+ <li><a href="repetition/enum.html"><boost/preprocessor/repetition/enum.hpp></a></li>
+ <li><a href="repetition/enum_binary_params.html"><boost/preprocessor/repetition/enum_binary_params.hpp></a></li>
+ <li><a href="repetition/enum_params.html"><boost/preprocessor/repetition/enum_params.hpp></a></li>
+ <li><a href="repetition/epwad.html"><boost/preprocessor/repetition/enum_params_with_a_default.hpp></a></li>
+ <li><a href="repetition/epwd.html"><boost/preprocessor/repetition/enum_params_with_defaults.hpp></a></li>
+ <li><a href="repetition/enum_shifted_params.html"><boost/preprocessor/repetition/enum_shifted_params.hpp></a></li>
+ <li><a href="repetition/enum_shifted.html"><boost/preprocessor/repetition/enum_shifted.hpp></a></li>
+ <li><a href="repetition/enum_trailing.html"><boost/preprocessor/repetition/enum_trailing.hpp></a></li>
+ <li><a href="repetition/etbp.html"><boost/preprocessor/repetition/enum_trailing_binary_params.hpp></a></li>
+ <li><a href="repetition/enum_trailing_params.html"><boost/preprocessor/repetition/enum_trailing_params.hpp></a></li>
+ <li><a href="repetition/for.html"><boost/preprocessor/repetition/for.hpp></a></li>
+ <li><a href="repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a></li>
+ <li><a href="repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/deduce_r.html b/third_party/boostorg/preprocessor/doc/headers/repetition/deduce_r.html
new file mode 100644
index 0000000..d8f3957
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/deduce_r.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/deduce_r.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/deduce_r.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_FOR</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/deduce_r.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/deduce_r.html">BOOST_PP_DEDUCE_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/deduce_z.html b/third_party/boostorg/preprocessor/doc/headers/repetition/deduce_z.html
new file mode 100644
index 0000000..9512af9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/deduce_z.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>control/deduce_z.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/deduce_z.hpp</b> header defines a macro to manually deduce the current state of the <b>BOOST_PP_REPEAT</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/deduce_z.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/deduce_z.html">BOOST_PP_DEDUCE_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum.html
new file mode 100644
index 0000000..83319a1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum.hpp</b> header defines a construct that produces a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum.html">BOOST_PP_ENUM</a></li>
+ <li><a href="../../ref/enum_z.html">BOOST_PP_ENUM_<i>z</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum_binary_params.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_binary_params.html
new file mode 100644
index 0000000..7a4b5ae
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_binary_params.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_binary_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_binary_params.hpp</b> header defines a construct that produces a comma-separated list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_binary_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
+ <li><a href="../../ref/enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum_params.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_params.html
new file mode 100644
index 0000000..e5f2fdf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_params.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_params.hpp</b> header defines a construct that produces a comma-separated list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_params.html">BOOST_PP_ENUM_PARAMS</a></li>
+ <li><a href="../../ref/enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum_shifted.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_shifted.html
new file mode 100644
index 0000000..d53c7e3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_shifted.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_shifted.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_shifted.hpp</b> header defines a construct that produces a comma-separated, shifted list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_shifted.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_shifted.html">BOOST_PP_ENUM_SHIFTED</a></li>
+ <li><a href="../../ref/enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_<i>z</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum_shifted_params.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_shifted_params.html
new file mode 100644
index 0000000..db2fd2c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_shifted_params.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_shifted_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_shifted_params.hpp</b> header defines a construct that produces a comma-separated list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_shifted_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_shifted_params.html">BOOST_PP_ENUM_SHIFTED_PARAMS</a></li>
+ <li><a href="../../ref/enum_shifted_params_z.html">BOOST_PP_ENUM_SHIFTED_PARAMS_<i>z</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum_trailing.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_trailing.html
new file mode 100644
index 0000000..4d0161d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_trailing.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_trailing.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_trailing.hpp</b> header defines a construct that produces a comma-separated list with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_trailing.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_trailing.html">BOOST_PP_ENUM_TRAILING</a></li>
+ <li><a href="../../ref/enum_trailing_z.html">BOOST_PP_ENUM_TRAILING_<i>z</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/enum_trailing_params.html b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_trailing_params.html
new file mode 100644
index 0000000..f1cb16e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/enum_trailing_params.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_trailing_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_trailing_params.hpp</b> header defines a construct that produces a comma-separated list of parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_trailing_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_trailing_params.html">BOOST_PP_ENUM_TRAILING_PARAMS</a></li>
+ <li><a href="../../ref/enum_trailing_params_z.html">BOOST_PP_ENUM_TRAILING_PARAMS_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/epwad.html b/third_party/boostorg/preprocessor/doc/headers/repetition/epwad.html
new file mode 100644
index 0000000..9ef3577
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/epwad.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>repetition/enum_params_with_a_default.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_params_with_a_default.hpp</b> header defines a construct that produces a comma-separated list of parameters with a default argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_params_with_a_default.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/epwd.html b/third_party/boostorg/preprocessor/doc/headers/repetition/epwd.html
new file mode 100644
index 0000000..b57c077
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/epwd.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>repetition/enum_params_with_defaults.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_params_with_defaults.hpp</b> header defines a construct that produces a comma-separated list of parameters with default arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_params_with_defaults.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/esbp.html b/third_party/boostorg/preprocessor/doc/headers/repetition/esbp.html
new file mode 100644
index 0000000..67501a6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/esbp.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_shifted_binary_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_shifted_binary_params.hpp</b> header defines a construct that produces a comma-separated list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_shifted_binary_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/esbp.html">BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</a></li>
+ <li><a href="../../ref/esbpz.html">BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/etbp.html b/third_party/boostorg/preprocessor/doc/headers/repetition/etbp.html
new file mode 100644
index 0000000..a78f1dc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/etbp.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/enum_trailing_binary_params.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/enum_trailing_binary_params.hpp</b> header defines a construct that produces a comma-separated list of binary parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/enum_trailing_binary_params.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/etbp.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</a></li>
+ <li><a href="../../ref/etbpz.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/for.html b/third_party/boostorg/preprocessor/doc/headers/repetition/for.html
new file mode 100644
index 0000000..672b875
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/for.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>repetition/for.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/for.hpp</b> header defines a generalized horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/for.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/for.html">BOOST_PP_FOR</a></li>
+ <li><a href="../../ref/for_r.html">BOOST_PP_FOR_<i>r</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/repeat.html b/third_party/boostorg/preprocessor/doc/headers/repetition/repeat.html
new file mode 100644
index 0000000..7382645
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/repeat.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>repetition/repeat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/repeat.hpp</b> header defines a fast horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/repeat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="../../ref/repeat_1st.html">BOOST_PP_REPEAT_1ST</a></li>
+ <li><a href="../../ref/repeat_2nd.html">BOOST_PP_REPEAT_2ND</a></li>
+ <li><a href="../../ref/repeat_3rd.html">BOOST_PP_REPEAT_3RD</a></li>
+ <li><a href="../../ref/repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/repetition/repeat_from_to.html b/third_party/boostorg/preprocessor/doc/headers/repetition/repeat_from_to.html
new file mode 100644
index 0000000..5890b82
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/repetition/repeat_from_to.html
@@ -0,0 +1,36 @@
+<html>
+<head>
+ <title>repetition/repeat_from_to.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>repetition/repeat_from_to.hpp</b> header defines a horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/repetition/repeat_from_to.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/repeat_from_to.html">BOOST_PP_REPEAT_FROM_TO</a></li>
+ <li><a href="../../ref/repeat_from_to_1st.html">BOOST_PP_REPEAT_FROM_TO_1ST</a></li>
+ <li><a href="../../ref/repeat_from_to_2nd.html">BOOST_PP_REPEAT_FROM_TO_2ND</a></li>
+ <li><a href="../../ref/repeat_from_to_3rd.html">BOOST_PP_REPEAT_FROM_TO_3RD</a></li>
+ <li><a href="../../ref/repeat_from_to_d.html">BOOST_PP_REPEAT_FROM_TO_D</a></li>
+ <li><a href="../../ref/repeat_from_to_d_z.html">BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></a></li>
+ <li><a href="../../ref/repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/selection.html b/third_party/boostorg/preprocessor/doc/headers/selection.html
new file mode 100644
index 0000000..0fd0eaf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/selection.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>selection.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>selection.hpp</b> includes the headers in the <i>selection</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/selection.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="selection/max.html"><boost/preprocessor/selection/max.hpp></a></li>
+ <li><a href="selection/min.html"><boost/preprocessor/selection/min.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/selection/max.html b/third_party/boostorg/preprocessor/doc/headers/selection/max.html
new file mode 100644
index 0000000..b1b33eb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/selection/max.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>selection/max.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>selection/max.hpp</b> header defines a macro that returns the greater of two elements.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/selection/max.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/max.html">BOOST_PP_MAX</a></li>
+ <li><a href="../../ref/max_d.html">BOOST_PP_MAX_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/selection/min.html b/third_party/boostorg/preprocessor/doc/headers/selection/min.html
new file mode 100644
index 0000000..37802fe
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/selection/min.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>selection/min.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>selection/min.hpp</b> header defines a macro that returns the lesser of two elements.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/selection/min.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/min.html">BOOST_PP_MIN</a></li>
+ <li><a href="../../ref/min_d.html">BOOST_PP_MIN_D</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq.html b/third_party/boostorg/preprocessor/doc/headers/seq.html
new file mode 100644
index 0000000..9e2ba8c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>seq.hpp</b> includes the headers in the <i>seq</i> folder.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq.hpp></b>
+ </div>
+ <h4>
+ Includes
+ </h4>
+ <ul>
+ <li>
+ <a href="seq/cat.html"><boost/preprocessor/seq/cat.hpp></a></li>
+ <li>
+ <a href="seq/elem.html"><boost/preprocessor/seq/elem.hpp></a></li>
+ <li>
+ <a href="seq/enum.html"><boost/preprocessor/seq/enum.hpp></a></li>
+ <li>
+ <a href="seq/filter.html"><boost/preprocessor/seq/filter.hpp></a></li>
+ <li>
+ <a href="seq/first_n.html"><boost/preprocessor/seq/first_n.hpp></a></li>
+ <li>
+ <a href="seq/fold_left.html"><boost/preprocessor/seq/fold_left.hpp></a></li>
+ <li>
+ <a href="seq/fold_right.html"><boost/preprocessor/seq/fold_right.hpp></a></li>
+ <li>
+ <a href="seq/for_each.html"><boost/preprocessor/seq/for_each.hpp></a></li>
+ <li>
+ <a href="seq/for_each_i.html"><boost/preprocessor/seq/for_each_i.hpp></a></li>
+ <li>
+ <a href="seq/for_each_product.html"><boost/preprocessor/seq/for_each_product.hpp></a></li>
+ <li>
+ <a href="seq/insert.html"><boost/preprocessor/seq/insert.hpp></a></li>
+ <li>
+ <a href="seq/pop_back.html"><boost/preprocessor/seq/pop_back.hpp></a></li>
+ <li>
+ <a href="seq/pop_front.html"><boost/preprocessor/seq/pop_front.hpp></a></li>
+ <li>
+ <a href="seq/push_back.html"><boost/preprocessor/seq/push_back.hpp></a></li>
+ <li>
+ <a href="seq/push_front.html"><boost/preprocessor/seq/push_front.hpp></a></li>
+ <li>
+ <a href="seq/remove.html"><boost/preprocessor/seq/remove.hpp></a></li>
+ <li>
+ <a href="seq/replace.html"><boost/preprocessor/seq/replace.hpp></a></li>
+ <li>
+ <a href="seq/rest_n.html"><boost/preprocessor/seq/rest_n.hpp></a></li>
+ <li>
+ <a href="seq/reverse.html"><boost/preprocessor/seq/reverse.hpp></a></li>
+ <li>
+ <a href="seq/seq.html"><boost/preprocessor/seq/seq.hpp></a></li>
+ <li>
+ <a href="seq/size.html"><boost/preprocessor/seq/size.hpp></a></li>
+ <li>
+ <a href="seq/subseq.html"><boost/preprocessor/seq/subseq.hpp></a></li>
+ <li>
+ <a href="seq/to_array.html"><boost/preprocessor/seq/to_array.hpp></a></li>
+ <li>
+ <a href="seq/to_list.html"><boost/preprocessor/seq/to_list.hpp></a></li>
+ <li>
+ <a href="seq/to_tuple.html"><boost/preprocessor/seq/to_tuple.hpp></a></li>
+ <li>
+ <a href="seq/transform.html"><boost/preprocessor/seq/transform.hpp></a></li>
+ <li>
+ <a href="seq/variadic_seq_to_seq.html"><boost/preprocessor/seq/variadic_seq_to_seq.hpp></a></li>
+ </ul>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+</div>
+<div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/cat.html b/third_party/boostorg/preprocessor/doc/headers/seq/cat.html
new file mode 100644
index 0000000..9b2ecd1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/cat.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/cat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/cat.hpp</b> header defines macros for concatenating all elements in
+ a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/cat.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_cat.html">BOOST_PP_SEQ_CAT</a></li>
+ <li>
+ <a href="../../ref/seq_cat_s.html">BOOST_PP_SEQ_CAT_S</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/elem.html b/third_party/boostorg/preprocessor/doc/headers/seq/elem.html
new file mode 100644
index 0000000..fcacbf7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/elem.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/elem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/elem.hpp</b> header defines a macro to extract an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/elem.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_elem.html">BOOST_PP_SEQ_ELEM</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/enum.html b/third_party/boostorg/preprocessor/doc/headers/seq/enum.html
new file mode 100644
index 0000000..bda1e08
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/enum.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/enum.hpp</b> header defines a macro to enumerate the elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/enum.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_enum.html">BOOST_PP_SEQ_ENUM</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/filter.html b/third_party/boostorg/preprocessor/doc/headers/seq/filter.html
new file mode 100644
index 0000000..7435e92
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/filter.html
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <title>seq/filter.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/filter.hpp</b> header defines macros to filter a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/filter.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_filter.html">BOOST_PP_SEQ_FILTER</a></li>
+ <li>
+ <a href="../../ref/seq_filter_s.html">BOOST_PP_SEQ_FILTER_S</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/first_n.html b/third_party/boostorg/preprocessor/doc/headers/seq/first_n.html
new file mode 100644
index 0000000..c3183af
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/first_n.html
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/first_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/first_n.hpp</b> header defines a macro that returns the first <i>N</i>
+ elements of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/first_n.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/fold_left.html b/third_party/boostorg/preprocessor/doc/headers/seq/fold_left.html
new file mode 100644
index 0000000..0172dda
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/fold_left.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/fold_left.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/fold_left.hpp</b> header defines macros for folding (or
+ accumulating) a <i>seq</i> left-to-right.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/fold_left.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_fold_left.html">BOOST_PP_SEQ_FOLD_LEFT</a></li>
+ <li>
+ <a href="../../ref/seq_fold_left_s.html">BOOST_PP_SEQ_FOLD_LEFT_<i>s</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/fold_right.html b/third_party/boostorg/preprocessor/doc/headers/seq/fold_right.html
new file mode 100644
index 0000000..5e841bb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/fold_right.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/fold_right.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/fold_right.hpp</b> header defines macros for folding (or
+ accumulating) a <i>seq</i> right-to-left.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/fold_right.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_fold_right.html">BOOST_PP_SEQ_FOLD_RIGHT</a></li>
+ <li>
+ <a href="../../ref/seq_fold_right_s.html">BOOST_PP_SEQ_FOLD_RIGHT_<i>s</i></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/for_each.html b/third_party/boostorg/preprocessor/doc/headers/seq/for_each.html
new file mode 100644
index 0000000..2e03493
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/for_each.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/for_each.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/for_each.hpp</b> header defines macros to repeat a macro for each
+ element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/for_each.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_for_each.html">BOOST_PP_SEQ_FOR_EACH</a></li>
+ <li>
+ <a href="../../ref/seq_for_each_r.html">BOOST_PP_SEQ_FOR_EACH_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/for_each_i.html b/third_party/boostorg/preprocessor/doc/headers/seq/for_each_i.html
new file mode 100644
index 0000000..5136182
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/for_each_i.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/for_each_i.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/for_each_i.hpp</b> header defines macros to repeat a macro for each
+ element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/for_each_i.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_for_each_i.html">BOOST_PP_SEQ_FOR_EACH_I</a></li>
+ <li>
+ <a href="../../ref/seq_for_each_i_r.html">BOOST_PP_SEQ_FOR_EACH_I_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/for_each_product.html b/third_party/boostorg/preprocessor/doc/headers/seq/for_each_product.html
new file mode 100644
index 0000000..88f9536
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/for_each_product.html
@@ -0,0 +1,38 @@
+<html>
+ <head>
+ <title>seq/for_each_product.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/for_each_product.hpp</b> header defines macros to repeat a macro for
+ each cartesian product of several <i>seqs</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/for_each_product.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_for_each_product.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT</a></li>
+ <li>
+ <a href="../../ref/seq_for_each_product_r.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/insert.html b/third_party/boostorg/preprocessor/doc/headers/seq/insert.html
new file mode 100644
index 0000000..bc13cfa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/insert.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/insert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/insert.hpp</b> header defines a macro to insert an element into a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/insert.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_insert.html">BOOST_PP_SEQ_INSERT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/pop_back.html b/third_party/boostorg/preprocessor/doc/headers/seq/pop_back.html
new file mode 100644
index 0000000..3e56e0d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/pop_back.html
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/pop_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/pop_back.hpp</b> header defines a macro to pop the last element off
+ a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/pop_back.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_pop_back.html">BOOST_PP_SEQ_POP_BACK</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/pop_front.html b/third_party/boostorg/preprocessor/doc/headers/seq/pop_front.html
new file mode 100644
index 0000000..b9a47fc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/pop_front.html
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/pop_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/pop_front.hpp</b> header defines a macro to pop the first element
+ off a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/pop_front.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_pop_front.html">BOOST_PP_SEQ_POP_FRONT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/push_back.html b/third_party/boostorg/preprocessor/doc/headers/seq/push_back.html
new file mode 100644
index 0000000..9366b54
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/push_back.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/push_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/push_back.hpp</b> header defines a macro to append an element to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/push_back.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/push_front.html b/third_party/boostorg/preprocessor/doc/headers/seq/push_front.html
new file mode 100644
index 0000000..8e56078
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/push_front.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/push_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/push_front.hpp</b> header defines a macro to prepend an element to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/push_front.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/remove.html b/third_party/boostorg/preprocessor/doc/headers/seq/remove.html
new file mode 100644
index 0000000..024057a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/remove.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/remove.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/remove.hpp</b> header defines a macro to remove an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/remove.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_remove.html">BOOST_PP_SEQ_REMOVE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/replace.html b/third_party/boostorg/preprocessor/doc/headers/seq/replace.html
new file mode 100644
index 0000000..b945045
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/replace.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/replace.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/replace.hpp</b> header defines a macro to replace an element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/replace.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_replace.html">BOOST_PP_SEQ_REPLACE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/rest_n.html b/third_party/boostorg/preprocessor/doc/headers/seq/rest_n.html
new file mode 100644
index 0000000..e42601a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/rest_n.html
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/rest_n.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/rest_n.hpp</b> header defines a macro for extracting a group of
+ elements from the end of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/rest_n.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_rest_n.html">BOOST_PP_SEQ_REST_N</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/reverse.html b/third_party/boostorg/preprocessor/doc/headers/seq/reverse.html
new file mode 100644
index 0000000..1e86b2c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/reverse.html
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <title>seq/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/reverse.hpp</b> header defines macros to reverse a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/reverse.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_reverse.html">BOOST_PP_SEQ_REVERSE</a></li>
+ <li>
+ <a href="../../ref/seq_reverse_s.html">BOOST_PP_SEQ_REVERSE_S</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/seq.html b/third_party/boostorg/preprocessor/doc/headers/seq/seq.html
new file mode 100644
index 0000000..7e72ae2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/seq.html
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <title>seq/seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/seq.hpp</b> header defines basic primitives for manipulating <i>seqs</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_head.html">BOOST_PP_SEQ_HEAD</a></li>
+ <li>
+ <a href="../../ref/seq_nil.html">BOOST_PP_SEQ_NIL</a></li>
+ <li>
+ <a href="../../ref/seq_tail.html">BOOST_PP_SEQ_TAIL</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/size.html b/third_party/boostorg/preprocessor/doc/headers/seq/size.html
new file mode 100644
index 0000000..f882ed7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/size.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/size.hpp</b> header defines a macro to calculate the size of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/size.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_size.html">BOOST_PP_SEQ_SIZE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/subseq.html b/third_party/boostorg/preprocessor/doc/headers/seq/subseq.html
new file mode 100644
index 0000000..283d8f9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/subseq.html
@@ -0,0 +1,35 @@
+<html>
+ <head>
+ <title>seq/subseq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/subseq.hpp</b> header defines a macro that extracts a subseq from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/subseq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_subseq.html">BOOST_PP_SEQ_SUBSEQ</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/to_array.html b/third_party/boostorg/preprocessor/doc/headers/seq/to_array.html
new file mode 100644
index 0000000..dfd1d0e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/to_array.html
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/to_array.hpp</b> header defines a macro that converts a <i>seq</i> to
+ an <i>array</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/to_array.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_to_array.html">BOOST_PP_SEQ_TO_ARRAY</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/to_list.html b/third_party/boostorg/preprocessor/doc/headers/seq/to_list.html
new file mode 100644
index 0000000..bf70d57
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/to_list.html
@@ -0,0 +1,30 @@
+<html><head>
+ <title>seq/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>seq/to_list.hpp</b> header defines a macro that converts a <i>seq</i> to
+ a <i>list</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/to_list.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_to_list.html">BOOST_PP_SEQ_TO_LIST</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/to_tuple.html b/third_party/boostorg/preprocessor/doc/headers/seq/to_tuple.html
new file mode 100644
index 0000000..eefb183
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/to_tuple.html
@@ -0,0 +1,36 @@
+<html>
+ <head>
+ <title>seq/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/to_tuple.hpp</b> header defines a macro that converts a <i>seq</i> to
+ an <i>tuple</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/to_tuple.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_to_tuple.html">BOOST_PP_SEQ_TO_TUPLE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/transform.html b/third_party/boostorg/preprocessor/doc/headers/seq/transform.html
new file mode 100644
index 0000000..e3ba5b1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/transform.html
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <title>seq/transform.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/transform.hpp</b> header defines macros to transform a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/transform.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/seq_transform.html">BOOST_PP_SEQ_TRANSFORM</a></li>
+ <li>
+ <a href="../../ref/seq_transform_s.html">BOOST_PP_SEQ_TRANSFORM_S</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/seq/variadic_seq_to_seq.html b/third_party/boostorg/preprocessor/doc/headers/seq/variadic_seq_to_seq.html
new file mode 100644
index 0000000..3c3457e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/seq/variadic_seq_to_seq.html
@@ -0,0 +1,34 @@
+<html>
+ <head>
+ <title>seq/variadic_seq_to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>seq/variadic_seq_to_seq.hpp</b> header defines a macro that converts a <i>variadic seq</i> into a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/seq/variadic_seq_to_seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/variadic_seq_to_seq.html">BOOST_PP_VARIADIC_SEQ_TO_SEQ</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright Paul Mensonides 2012</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/slot.html b/third_party/boostorg/preprocessor/doc/headers/slot.html
new file mode 100644
index 0000000..5de2bc1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/slot.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>slot.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>slot.hpp</b> includes the headers in the <i>slot</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/slot.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="slot/slot.html"><boost/preprocessor/slot/slot.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/slot/counter.html b/third_party/boostorg/preprocessor/doc/headers/slot/counter.html
new file mode 100644
index 0000000..35e80df
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/slot/counter.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>slot/counter.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>slot/counter.hpp</b> header defines macros used to generate numbers that are unique within a translation unit.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/slot/counter.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/counter.html">BOOST_PP_COUNTER</a></li>
+ <li><a href="../../ref/update_counter.html">BOOST_PP_UPDATE_COUNTER</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/slot/slot.html b/third_party/boostorg/preprocessor/doc/headers/slot/slot.html
new file mode 100644
index 0000000..b93e359
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/slot/slot.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>slot/slot.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>slot/slot.hpp</b> header defines macros to manipulate <i>slots</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/slot/slot.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/assign_slot.html">BOOST_PP_ASSIGN_SLOT</a></li>
+ <li><a href="../../ref/slot.html">BOOST_PP_SLOT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/stringize.html b/third_party/boostorg/preprocessor/doc/headers/stringize.html
new file mode 100644
index 0000000..7b6b3d4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/stringize.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>stringize.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>stringize.hpp</b> header defines a stringizing macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/stringize.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../ref/stringize.html">BOOST_PP_STRINGIZE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple.html b/third_party/boostorg/preprocessor/doc/headers/tuple.html
new file mode 100644
index 0000000..96da3cb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple.html
@@ -0,0 +1,59 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple.hpp</b> includes the headers
+ in the <i>tuple</i> folder. </div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple.hpp></b> </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="tuple/eat.html"><boost/preprocessor/tuple/eat.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/elem.html"><boost/preprocessor/tuple/elem.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/enum.html"><boost/preprocessor/tuple/enum.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/insert.html"><boost/preprocessor/tuple/insert.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/pop_back.html"><boost/preprocessor/tuple/pop_back.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/pop_front.html"><boost/preprocessor/tuple/pop_front.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/push_back.html"><boost/preprocessor/tuple/push_back.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/push_front.html"><boost/preprocessor/tuple/push_front.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/rem.html"><boost/preprocessor/tuple/rem.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/remove.html"><boost/preprocessor/tuple/remove.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/replace.html"><boost/preprocessor/tuple/replace.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="tuple/reverse.html"><boost/preprocessor/tuple/reverse.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/size.html"><boost/preprocessor/tuple/size.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/to_array.html"><boost/preprocessor/tuple/to_array.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/to_list.html"><boost/preprocessor/tuple/to_list.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="tuple/to_seq.html"><boost/preprocessor/tuple/to_seq.hpp></a>
+ <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/eat.html b/third_party/boostorg/preprocessor/doc/headers/tuple/eat.html
new file mode 100644
index 0000000..d74af35
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/eat.html
@@ -0,0 +1,25 @@
+<html><head><title>tuple/eat.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/eat.hpp</b> header defines a macro eats a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/eat.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_eat.html">BOOST_PP_TUPLE_EAT</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/elem.html b/third_party/boostorg/preprocessor/doc/headers/tuple/elem.html
new file mode 100644
index 0000000..ab35f10
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/elem.html
@@ -0,0 +1,25 @@
+<html><head><title>tuple/elem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/elem.hpp</b> header defines a macro to extract elements from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/elem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/enum.html b/third_party/boostorg/preprocessor/doc/headers/tuple/enum.html
new file mode 100644
index 0000000..5f9a11d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/enum.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>tuple/enum.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/enum.hpp</b> header defines a macro to convert a <i>tuple</i> to its comma-separated elements.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/enum.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/insert.html b/third_party/boostorg/preprocessor/doc/headers/tuple/insert.html
new file mode 100644
index 0000000..2af84b4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/insert.html
@@ -0,0 +1,27 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/insert.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/insert.hpp</b> header defines
+ macros to insert an element into an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/insert.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_insert.html">BOOST_PP_TUPLE_INSERT</a> <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="../../ref/tuple_insert_d.html">BOOST_PP_TUPLE_INSERT_D</a> <a
+ href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/pop_back.html b/third_party/boostorg/preprocessor/doc/headers/tuple/pop_back.html
new file mode 100644
index 0000000..e6edefc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/pop_back.html
@@ -0,0 +1,28 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/pop_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/pop_back.hpp</b> header
+ defines macros to pop an element from the end of an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/pop_back.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_pop_back.html">BOOST_PP_TUPLE_POP_BACK</a> <a
+ href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="../../ref/tuple_pop_back_z.html">BOOST_PP_TUPLE_POP_BACK_Z</a>
+ <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/pop_front.html b/third_party/boostorg/preprocessor/doc/headers/tuple/pop_front.html
new file mode 100644
index 0000000..633acdb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/pop_front.html
@@ -0,0 +1,28 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/pop_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/pop_front.hpp</b> header
+ defines macros to pop an element from the beginning of an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/pop_front.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_pop_front.html">BOOST_PP_TUPLE_POP_FRONT</a>
+ <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="../../ref/tuple_pop_front_z.html">BOOST_PP_TUPLE_POP_FRONT_Z</a>
+ <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/push_back.html b/third_party/boostorg/preprocessor/doc/headers/tuple/push_back.html
new file mode 100644
index 0000000..9cedd21
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/push_back.html
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/push_back.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/push_back.hpp</b> header
+ defines a macro to append an element to the end of an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/push_back.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_push_back.html">BOOST_PP_TUPLE_PUSH_BACK</a>
+ <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/push_front.html b/third_party/boostorg/preprocessor/doc/headers/tuple/push_front.html
new file mode 100644
index 0000000..7d5510b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/push_front.html
@@ -0,0 +1,26 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/push_front.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/push_front.hpp</b> header
+ defines a macro to append an element to the beginning of an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/push_front.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_push_front.html">BOOST_PP_TUPLE_PUSH_FRONT</a>
+ <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/rem.html b/third_party/boostorg/preprocessor/doc/headers/tuple/rem.html
new file mode 100644
index 0000000..c90fa29
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/rem.html
@@ -0,0 +1,27 @@
+<html><head><title>tuple/rem.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/rem.hpp</b> header defines a macro that removes the parentheses from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/rem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_rem.html">BOOST_PP_TUPLE_REM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ <li><a href="../../ref/tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/remove.html b/third_party/boostorg/preprocessor/doc/headers/tuple/remove.html
new file mode 100644
index 0000000..651113c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/remove.html
@@ -0,0 +1,27 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/remove.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/remove.hpp</b> header defines
+ macros to remove an element from an <i>array</i>. </div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/remove.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_remove.html">BOOST_PP_TUPLE_REMOVE</a> <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="../../ref/tuple_remove_d.html">BOOST_PP_TUPLE_REMOVE_D</a> <a
+ href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/replace.html b/third_party/boostorg/preprocessor/doc/headers/tuple/replace.html
new file mode 100644
index 0000000..03ca25d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/replace.html
@@ -0,0 +1,28 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>tuple/replace.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>tuple/replace.hpp</b> header
+ defines macros to replace an element in an <i>array</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> #include <b><boost/preprocessor/tuple/replace.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_replace.html">BOOST_PP_TUPLE_REPLACE</a> <a
+ href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="../../ref/tuple_replace_d.html">BOOST_PP_TUPLE_REPLACE_D</a>
+ <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/reverse.html b/third_party/boostorg/preprocessor/doc/headers/tuple/reverse.html
new file mode 100644
index 0000000..785e393
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/reverse.html
@@ -0,0 +1,25 @@
+<html><head><title>tuple/reverse.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/reverse.hpp</b> header defines a macro that reverses a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/reverse.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/size.html b/third_party/boostorg/preprocessor/doc/headers/tuple/size.html
new file mode 100644
index 0000000..264a9d7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/size.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>tuple/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/size.hpp</b> header defines a variadic macro that gives the number of elements in the <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_size.html">BOOST_PP_TUPLE_SIZE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/to_array.html b/third_party/boostorg/preprocessor/doc/headers/tuple/to_array.html
new file mode 100644
index 0000000..c7530b5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/to_array.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>tuple/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/to_array.hpp</b> header defines a macro that converts a <i>tuple</i> to an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/to_array.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/to_list.html b/third_party/boostorg/preprocessor/doc/headers/tuple/to_list.html
new file mode 100644
index 0000000..2d42284
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/to_list.html
@@ -0,0 +1,25 @@
+<html><head><title>tuple/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/to_list.hpp</b> header defines a macro that converts a <i>tuple</i> to a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/to_list.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><sup><br>
+ </sup></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/tuple/to_seq.html b/third_party/boostorg/preprocessor/doc/headers/tuple/to_seq.html
new file mode 100644
index 0000000..b3420e3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/tuple/to_seq.html
@@ -0,0 +1,31 @@
+<html><head><title>tuple/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>tuple/to_seq.hpp</b> header defines a macro that converts a <i>tuple</i>
+ to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/tuple/to_seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic.html b/third_party/boostorg/preprocessor/doc/headers/variadic.html
new file mode 100644
index 0000000..0acc99c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>variadic.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>variadic.hpp</b> includes the headers in the <i>variadic</i> folder.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="variadic/elem.html"><boost/preprocessor/variadic/elem.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="variadic/size.html"><boost/preprocessor/variadic/size.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="variadic/to_array.html"><boost/preprocessor/variadic/to_array.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="variadic/to_list.html"><boost/preprocessor/variadic/to_list.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="variadic/to_seq.html"><boost/preprocessor/variadic/to_seq.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ <li><a href="variadic/to_tuple.html"><boost/preprocessor/variadic/to_tuple.hpp></a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic/elem.html b/third_party/boostorg/preprocessor/doc/headers/variadic/elem.html
new file mode 100644
index 0000000..f37fe22
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic/elem.html
@@ -0,0 +1,29 @@
+<html>
+ <head>
+ <title>variadic/elem.hpp
+ </title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/elem.hpp</b> header defines a variadic macro to extract an element from <i>variadic data</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/elem.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic/size.html b/third_party/boostorg/preprocessor/doc/headers/variadic/size.html
new file mode 100644
index 0000000..dec4e93
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic/size.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>variadic/size.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/size.hpp</b> header defines a variadic macro that gives the number of comma-separated elements in the <i>variadic data</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/size.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/variadic_size.html">BOOST_PP_VARIADIC_SIZE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+ </li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body></html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic/to_array.html b/third_party/boostorg/preprocessor/doc/headers/variadic/to_array.html
new file mode 100644
index 0000000..26525ef
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic/to_array.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>variadic/to_array.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_array.hpp</b> header defines a variadic macro that converts <i>variadic data</i> to an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_array.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic/to_list.html b/third_party/boostorg/preprocessor/doc/headers/variadic/to_list.html
new file mode 100644
index 0000000..1a6bc85
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic/to_list.html
@@ -0,0 +1,25 @@
+<html><head>
+ <title>variadic/to_list.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_list.hpp</b> header defines a variadic macro that converts <i>variadic data </i>to a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_list.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../../ref/variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body></html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic/to_seq.html b/third_party/boostorg/preprocessor/doc/headers/variadic/to_seq.html
new file mode 100644
index 0000000..64022dd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic/to_seq.html
@@ -0,0 +1,30 @@
+<html><head>
+ <title>variadic/to_seq.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_seq.hpp</b> header defines a variadic macro that converts <i>variadic data </i>to a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_seq.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/variadic_to_seq.html">BOOST_PP_VARIADIC_TO_SEQ</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/variadic/to_tuple.html b/third_party/boostorg/preprocessor/doc/headers/variadic/to_tuple.html
new file mode 100644
index 0000000..ee55807
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/variadic/to_tuple.html
@@ -0,0 +1,31 @@
+<html><head>
+ <title>variadic/to_tuple.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
+ <div style="margin-left: 0px;">
+ The <b>variadic/to_tuple.hpp</b> header defines a variadic macro that converts <i>variadic data</i>
+ to a <i>tuple</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #include <b><boost/preprocessor/variadic/to_tuple.hpp></b>
+ </div>
+ <h4>
+ Contents
+ </h4>
+ <ul>
+ <li>
+ <a href="../../ref/variadic_to_tuple.html">BOOST_PP_VARIADIC_TO_TUPLE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
+</li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i></i><i>© Copyright Edward Diener 2011,2013</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body></html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/while.html b/third_party/boostorg/preprocessor/doc/headers/while.html
new file mode 100644
index 0000000..8f0d59b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/while.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>while.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>while.hpp</b> is a jumper header for backwards compatibility.
+ This header is deprecated.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/while.hpp></b>
+ </div>
+ <h4>Includes</h4>
+ <ul>
+ <li><a href="control/while.html"><boost/preprocessor/control/while.hpp></a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/headers/wstringize.html b/third_party/boostorg/preprocessor/doc/headers/wstringize.html
new file mode 100644
index 0000000..1b7d6d0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/headers/wstringize.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>wstringize.hpp</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>wstringize.hpp</b> header defines a wide stringizing macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b><boost/preprocessor/wstringize.hpp></b>
+ </div>
+ <h4>Contents</h4>
+ <ul>
+ <li><a href="../ref/wstringize.html">BOOST_PP_WSTRINGIZE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/index.html b/third_party/boostorg/preprocessor/doc/index.html
new file mode 100644
index 0000000..4aedc19
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/index.html
@@ -0,0 +1,23 @@
+<html>
+ <head>
+ <title>Boost.Preprocessor</title>
+ </head>
+ <frameset rows="65,*" frameborder="0">
+ <frame name="top" src="top.html" scrolling="no" noresize>
+ <frameset cols="350,*" frameborder="0" border="3">
+ <frame name="index" src="contents.html" scrolling="auto">
+ <frame name="desc" src="title.html" scrolling="auto">
+ </frameset>
+ <noframes>
+ ..</noframes>
+ </frameset>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/miscellanea.html b/third_party/boostorg/preprocessor/doc/miscellanea.html
new file mode 100644
index 0000000..87a5526
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/miscellanea.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>miscellanea.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Miscellanea <small><a href="contents.html" target="index">[back]</a></small></h4>
+<ul>
+ <li><a href="syntax.html">syntax highlighting</a></li>
+ <li><a href="acknowledgements.html">acknowledgements</a></li>
+ <li><a href="bibliography.html">bibliography</a></li>
+</ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref.html b/third_party/boostorg/preprocessor/doc/ref.html
new file mode 100644
index 0000000..102325a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref.html
@@ -0,0 +1,319 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>ref.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+ </head>
+ <body>
+ <h4> Reference <small><a href="contents.html" target="index">[back]</a></small>
+ </h4>
+ <ul>
+ <!-- A -->
+ <li><a href="ref/add.html">ADD</a></li>
+ <li><a href="ref/add_d.html">ADD_D</a></li>
+ <li><a href="ref/and.html">AND</a></li>
+ <li><a href="ref/apply.html">APPLY</a></li>
+ <li><a href="ref/array_data.html">ARRAY_DATA</a></li>
+ <li><a href="ref/array_elem.html">ARRAY_ELEM</a></li>
+ <li><a href="ref/array_enum.html">ARRAY_ENUM</a></li>
+ <li><a href="ref/array_insert.html">ARRAY_INSERT</a></li>
+ <li><a href="ref/array_insert_d.html">ARRAY_INSERT_D</a></li>
+ <li><a href="ref/array_pop_back.html">ARRAY_POP_BACK</a></li>
+ <li><a href="ref/array_pop_back_z.html">ARRAY_POP_BACK_Z</a></li>
+ <li><a href="ref/array_pop_front.html">ARRAY_POP_FRONT</a></li>
+ <li><a href="ref/array_pop_front_z.html">ARRAY_POP_FRONT_Z</a></li>
+ <li><a href="ref/array_push_back.html">ARRAY_PUSH_BACK</a></li>
+ <li><a href="ref/array_push_front.html">ARRAY_PUSH_FRONT</a></li>
+ <li><a href="ref/array_remove.html">ARRAY_REMOVE</a></li>
+ <li><a href="ref/array_remove_d.html">ARRAY_REMOVE_D</a></li>
+ <li><a href="ref/array_replace.html">ARRAY_REPLACE</a></li>
+ <li><a href="ref/array_replace_d.html">ARRAY_REPLACE_D</a></li>
+ <li><a href="ref/array_reverse.html">ARRAY_REVERSE</a></li>
+ <li><a href="ref/array_size.html">ARRAY_SIZE</a></li>
+ <li><a href="ref/array_to_list.html">ARRAY_TO_LIST</a></li>
+ <li><a href="ref/array_to_seq.html">ARRAY_TO_SEQ</a></li>
+ <li><a href="ref/array_to_tuple.html">ARRAY_TO_TUPLE</a></li>
+ <li><a href="ref/assert.html">ASSERT</a></li>
+ <li><a href="ref/assert_msg.html">ASSERT_MSG</a></li>
+ <li><a href="ref/assign_slot.html">ASSIGN_SLOT</a></li>
+ <!-- B -->
+ <li><a href="ref/bitand.html">BITAND</a></li>
+ <li><a href="ref/bitnor.html">BITNOR</a></li>
+ <li><a href="ref/bitor.html">BITOR</a></li>
+ <li><a href="ref/bitxor.html">BITXOR</a></li>
+ <li><a href="ref/bool.html">BOOL</a></li>
+ <!-- C -->
+ <li><a href="ref/cat.html">CAT</a></li>
+ <li><a href="ref/comma.html">COMMA</a></li>
+ <li><a href="ref/comma_if.html">COMMA_IF</a></li>
+ <li><a href="ref/compl.html">COMPL</a></li>
+ <li><a href="ref/config_extended_line_info.html">CONFIG_EXTENDED_LINE_INFO</a></li>
+ <li><a href="ref/counter.html">COUNTER</a></li>
+ <!-- D -->
+ <li><a href="ref/dec.html">DEC</a></li>
+ <li><a href="ref/deduce_d.html">DEDUCE_D</a></li>
+ <li><a href="ref/deduce_r.html">DEDUCE_R</a></li>
+ <li><a href="ref/deduce_z.html">DEDUCE_Z</a></li>
+ <li><a href="ref/div.html">DIV</a></li>
+ <li><a href="ref/div_d.html">DIV_D</a></li>
+ <!-- E -->
+ <li><a href="ref/empty.html">EMPTY</a></li>
+ <li><a href="ref/enum.html">ENUM</a></li>
+ <li><a href="ref/enum_binary_params.html">ENUM_BINARY_PARAMS</a></li>
+ <li><a href="ref/enum_binary_params_z.html">ENUM_BINARY_PARAMS_Z</a></li>
+ <li><a href="ref/enum_params.html">ENUM_PARAMS</a></li>
+ <li><a href="ref/enum_params_with_a_default.html">ENUM_PARAMS_WITH_A_DEFAULT*</a></li>
+ <li><a href="ref/enum_params_with_defaults.html">ENUM_PARAMS_WITH_DEFAULTS*</a></li>
+ <li><a href="ref/enum_params_z.html">ENUM_PARAMS_Z</a></li>
+ <li><a href="ref/enum_shifted.html">ENUM_SHIFTED</a></li>
+ <li><a href="ref/esbp.html">ENUM_SHIFTED_BINARY_PARAMS</a></li>
+ <li><a href="ref/esbpz.html">ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
+ <li><a href="ref/enum_shifted_params.html">ENUM_SHIFTED_PARAMS</a></li>
+ <li><a href="ref/enum_shifted_params_z.html">ENUM_SHIFTED_PARAMS_Z</a></li>
+ <li><a href="ref/enum_shifted_z.html">ENUM_SHIFTED_<i>z</i></a></li>
+ <li><a href="ref/enum_trailing.html">ENUM_TRAILING</a></li>
+ <li><a href="ref/etbp.html">ENUM_TRAILING_BINARY_PARAMS</a></li>
+ <li><a href="ref/etbpz.html">ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
+ <li><a href="ref/enum_trailing_params.html">ENUM_TRAILING_PARAMS</a></li>
+ <li><a href="ref/enum_trailing_params_z.html">ENUM_TRAILING_PARAMS_Z</a></li>
+ <li><a href="ref/enum_trailing_z.html">ENUM_TRAILING_<i>z</i></a></li>
+ <li><a href="ref/enum_z.html">ENUM_<i>z</i></a></li>
+ <li><a href="ref/equal.html">EQUAL</a></li>
+ <li><a href="ref/equal_d.html">EQUAL_D*</a></li>
+ <li><a href="ref/expand.html">EXPAND</a></li>
+ <li><a href="ref/expr_if.html">EXPR_IF</a></li>
+ <li><a href="ref/expr_iif.html">EXPR_IIF</a></li>
+ <!-- F -->
+ <li><a href="ref/filename_x.html">FILENAME_<i>x</i></a></li>
+ <li><a href="ref/for.html">FOR</a></li>
+ <li><a href="ref/for_r.html">FOR_<i>r</i></a></li>
+ <li><a href="ref/frame_finish.html">FRAME_FINISH</a></li>
+ <li><a href="ref/frame_flags.html">FRAME_FLAGS</a></li>
+ <li><a href="ref/frame_iteration.html">FRAME_ITERATION</a></li>
+ <li><a href="ref/frame_start.html">FRAME_START</a></li>
+ <!-- G -->
+ <li><a href="ref/greater.html">GREATER</a></li>
+ <li><a href="ref/greater_d.html">GREATER_D</a></li>
+ <li><a href="ref/greater_equal.html">GREATER_EQUAL</a></li>
+ <li><a href="ref/greater_equal_d.html">GREATER_EQUAL_D</a></li>
+ <!-- I -->
+ <li><a href="ref/identity.html">IDENTITY</a></li>
+ <li><a href="ref/identity_n.html">IDENTITY_N</a></li>
+ <li><a href="ref/if.html">IF</a></li>
+ <li><a href="ref/iif.html">IIF</a></li>
+ <li><a href="ref/inc.html">INC</a></li>
+ <li><a href="ref/include_self.html">INCLUDE_SELF</a></li>
+ <li><a href="ref/indirect_self.html">INDIRECT_SELF</a></li>
+ <li><a href="ref/intercept.html">INTERCEPT</a></li>
+ <li><a href="ref/is_begin_parens.html">IS_BEGIN_PARENS</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/is_iterating.html">IS_ITERATING</a></li>
+ <li><a href="ref/is_selfish.html">IS_SELFISH</a></li>
+ <li><a href="ref/iterate.html">ITERATE</a></li>
+ <li><a href="ref/iteration.html">ITERATION</a></li>
+ <li><a href="ref/iteration_depth.html">ITERATION_DEPTH</a></li>
+ <li><a href="ref/iteration_finish.html">ITERATION_FINISH</a></li>
+ <li><a href="ref/iteration_flags.html">ITERATION_FLAGS</a></li>
+ <li><a href="ref/iteration_limits.html">ITERATION_LIMITS</a></li>
+ <li><a href="ref/iteration_params_x.html">ITERATION_PARAMS_<i>x</i></a></li>
+ <li><a href="ref/iteration_start.html">ITERATION_START</a></li>
+ <!-- L -->
+ <li><a href="ref/less.html">LESS</a></li>
+ <li><a href="ref/less_d.html">LESS_D</a></li>
+ <li><a href="ref/less_equal.html">LESS_EQUAL</a></li>
+ <li><a href="ref/less_equal_d.html">LESS_EQUAL_D</a></li>
+ <li><a href="ref/limit_dim.html">LIMIT_DIM</a></li>
+ <li><a href="ref/limit_for.html">LIMIT_FOR</a></li>
+ <li><a href="ref/limit_iteration.html">LIMIT_ITERATION</a></li>
+ <li><a href="ref/limit_iteration_dim.html">LIMIT_ITERATION_DIM</a></li>
+ <li><a href="ref/limit_mag.html">LIMIT_MAG</a></li>
+ <li><a href="ref/limit_repeat.html">LIMIT_REPEAT</a></li>
+ <li><a href="ref/limit_seq.html">LIMIT_SEQ</a></li>
+ <li><a href="ref/limit_slot_count.html">LIMIT_SLOT_COUNT</a></li>
+ <li><a href="ref/limit_slot_sig.html">LIMIT_SLOT_SIG</a></li>
+ <li><a href="ref/limit_tuple.html">LIMIT_TUPLE</a></li>
+ <li><a href="ref/limit_variadic.html">LIMIT_VARIADIC</a></li>
+ <li><a href="ref/limit_while.html">LIMIT_WHILE</a></li>
+ <li><a href="ref/line.html">LINE</a></li>
+ <li><a href="ref/list_append.html">LIST_APPEND</a></li>
+ <li><a href="ref/list_append_d.html">LIST_APPEND_D</a></li>
+ <li><a href="ref/list_at.html">LIST_AT</a></li>
+ <li><a href="ref/list_at_d.html">LIST_AT_D</a></li>
+ <li><a href="ref/list_cat.html">LIST_CAT</a></li>
+ <li><a href="ref/list_cat_d.html">LIST_CAT_D</a></li>
+ <li><a href="ref/list_cons.html">LIST_CONS*</a></li>
+ <li><a href="ref/list_enum.html">LIST_ENUM</a></li>
+ <li><a href="ref/list_enum_r.html">LIST_ENUM_R</a></li>
+ <li><a href="ref/list_filter.html">LIST_FILTER</a></li>
+ <li><a href="ref/list_filter_d.html">LIST_FILTER_D</a></li>
+ <li><a href="ref/list_first.html">LIST_FIRST</a></li>
+ <li><a href="ref/list_first_n.html">LIST_FIRST_N</a></li>
+ <li><a href="ref/list_first_n_d.html">LIST_FIRST_N_D</a></li>
+ <li><a href="ref/list_fold_left.html">LIST_FOLD_LEFT</a></li>
+ <li><a href="ref/list_fold_left_2nd.html">LIST_FOLD_LEFT_2ND*</a></li>
+ <li><a href="ref/list_fold_left_2nd_d.html">LIST_FOLD_LEFT_2ND_D*</a></li>
+ <li><a href="ref/list_fold_left_d.html">LIST_FOLD_LEFT_<i>d</i></a></li>
+ <li><a href="ref/list_fold_left_d_old.html">LIST_FOLD_LEFT_D*</a></li>
+ <li><a href="ref/list_fold_right.html">LIST_FOLD_RIGHT</a></li>
+ <li><a href="ref/list_fold_right_2nd.html">LIST_FOLD_RIGHT_2ND*</a></li>
+ <li><a href="ref/list_fold_right_2nd_d.html">LIST_FOLD_RIGHT_2ND_D*</a></li>
+ <li><a href="ref/list_fold_right_d.html">LIST_FOLD_RIGHT_<i>d</i></a></li>
+ <li><a href="ref/list_fold_right_d_old.html">LIST_FOLD_RIGHT_D*</a></li>
+ <li><a href="ref/list_for_each.html">LIST_FOR_EACH</a></li>
+ <li><a href="ref/list_for_each_i.html">LIST_FOR_EACH_I</a></li>
+ <li><a href="ref/list_for_each_i_r.html">LIST_FOR_EACH_I_R</a></li>
+ <li><a href="ref/list_for_each_product.html">LIST_FOR_EACH_PRODUCT</a></li>
+ <li><a href="ref/list_for_each_product_r.html">LIST_FOR_EACH_PRODUCT_R</a></li>
+ <li><a href="ref/list_for_each_r.html">LIST_FOR_EACH_R</a></li>
+ <li><a href="ref/list_is_cons.html">LIST_IS_CONS</a></li>
+ <li><a href="ref/list_is_nil.html">LIST_IS_NIL</a></li>
+ <li><a href="ref/list_nil.html">LIST_NIL*</a></li>
+ <li><a href="ref/list_rest.html">LIST_REST</a></li>
+ <li><a href="ref/list_rest_n.html">LIST_REST_N</a></li>
+ <li><a href="ref/list_rest_n_d.html">LIST_REST_N_D</a></li>
+ <li><a href="ref/list_reverse.html">LIST_REVERSE</a></li>
+ <li><a href="ref/list_reverse_d.html">LIST_REVERSE_D</a></li>
+ <li><a href="ref/list_size.html">LIST_SIZE</a></li>
+ <li><a href="ref/list_size_d.html">LIST_SIZE_D</a></li>
+ <li><a href="ref/list_to_array.html">LIST_TO_ARRAY</a></li>
+ <li><a href="ref/list_to_array_d.html">LIST_TO_ARRAY_D</a></li>
+ <li><a href="ref/list_to_seq.html">LIST_TO_SEQ</a></li>
+ <li><a href="ref/list_to_seq_r.html">LIST_TO_SEQ_R</a></li>
+ <li><a href="ref/list_to_tuple.html">LIST_TO_TUPLE</a></li>
+ <li><a href="ref/list_to_tuple_r.html">LIST_TO_TUPLE_R</a></li>
+ <li><a href="ref/list_transform.html">LIST_TRANSFORM</a></li>
+ <li><a href="ref/list_transform_d.html">LIST_TRANSFORM_D</a></li>
+ <li><a href="ref/local_iterate.html">LOCAL_ITERATE</a></li>
+ <li><a href="ref/local_limits.html">LOCAL_LIMITS</a></li>
+ <li><a href="ref/local_macro.html">LOCAL_MACRO</a></li>
+ <li><a href="ref/lparen.html">LPAREN</a></li>
+ <li><a href="ref/lparen_if.html">LPAREN_IF</a></li>
+ <!-- M -->
+ <li><a href="ref/max.html">MAX</a></li>
+ <li><a href="ref/max_d.html">MAX_D</a></li>
+ <li><a href="ref/min.html">MIN</a></li>
+ <li><a href="ref/min_d.html">MIN_D</a></li>
+ <li><a href="ref/mod.html">MOD</a></li>
+ <li><a href="ref/mod_d.html">MOD_D</a></li>
+ <li><a href="ref/mul.html">MUL</a></li>
+ <li><a href="ref/mul_d.html">MUL_D</a></li>
+ <!-- N -->
+ <li><a href="ref/nil.html">NIL</a></li>
+ <li><a href="ref/nor.html">NOR</a></li>
+ <li><a href="ref/not.html">NOT</a></li>
+ <li><a href="ref/not_equal.html">NOT_EQUAL</a></li>
+ <li><a href="ref/not_equal_d.html">NOT_EQUAL_D*</a></li>
+ <!-- O -->
+ <li><a href="ref/or.html">OR</a></li>
+ <li><a href="ref/overload.html">OVERLOAD</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <!-- R -->
+ <li><a href="ref/relative_finish.html">RELATIVE_FINISH</a></li>
+ <li><a href="ref/relative_flags.html">RELATIVE_FLAGS</a></li>
+ <li><a href="ref/relative_iteration.html">RELATIVE_ITERATION</a></li>
+ <li><a href="ref/relative_start.html">RELATIVE_START</a></li>
+ <li><a href="ref/remove_parens.html">REMOVE_PARENS</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/repeat.html">REPEAT</a></li>
+ <li><a href="ref/repeat_1st.html">REPEAT_1ST*</a></li>
+ <li><a href="ref/repeat_2nd.html">REPEAT_2ND*</a></li>
+ <li><a href="ref/repeat_3rd.html">REPEAT_3RD*</a></li>
+ <li><a href="ref/repeat_from_to.html">REPEAT_FROM_TO</a></li>
+ <li><a href="ref/repeat_from_to_1st.html">REPEAT_FROM_TO_1ST*</a></li>
+ <li><a href="ref/repeat_from_to_2nd.html">REPEAT_FROM_TO_2ND*</a></li>
+ <li><a href="ref/repeat_from_to_3rd.html">REPEAT_FROM_TO_3RD*</a></li>
+ <li><a href="ref/repeat_from_to_d.html">REPEAT_FROM_TO_D</a></li>
+ <li><a href="ref/repeat_from_to_d_z.html">REPEAT_FROM_TO_D_<i>z</i></a></li>
+ <li><a href="ref/repeat_from_to_z.html">REPEAT_FROM_TO_<i>z</i></a></li>
+ <li><a href="ref/repeat_z.html">REPEAT_<i>z</i></a></li>
+ <li><a href="ref/rparen.html">RPAREN</a></li>
+ <li><a href="ref/rparen_if.html">RPAREN_IF</a></li>
+ <!-- S -->
+ <li><a href="ref/seq_cat.html">SEQ_CAT</a></li>
+ <li><a href="ref/seq_cat_s.html">SEQ_CAT_S</a></li>
+ <li><a href="ref/seq_elem.html">SEQ_ELEM</a></li>
+ <li><a href="ref/seq_enum.html">SEQ_ENUM</a></li>
+ <li><a href="ref/seq_filter.html">SEQ_FILTER</a></li>
+ <li><a href="ref/seq_filter_s.html">SEQ_FILTER_S</a></li>
+ <li><a href="ref/seq_first_n.html">SEQ_FIRST_N</a></li>
+ <li><a href="ref/seq_fold_left.html">SEQ_FOLD_LEFT</a></li>
+ <li><a href="ref/seq_fold_left_s.html">SEQ_FOLD_LEFT_<i>s</i></a></li>
+ <li><a href="ref/seq_fold_right.html">SEQ_FOLD_RIGHT</a></li>
+ <li><a href="ref/seq_fold_right_s.html">SEQ_FOLD_RIGHT_<i>s</i></a></li>
+ <li><a href="ref/seq_for_each.html">SEQ_FOR_EACH</a></li>
+ <li><a href="ref/seq_for_each_i.html">SEQ_FOR_EACH_I</a></li>
+ <li><a href="ref/seq_for_each_i_r.html">SEQ_FOR_EACH_I_R</a></li>
+ <li><a href="ref/seq_for_each_product.html">SEQ_FOR_EACH_PRODUCT</a></li>
+ <li><a href="ref/seq_for_each_product_r.html">SEQ_FOR_EACH_PRODUCT_R</a></li>
+ <li><a href="ref/seq_for_each_r.html">SEQ_FOR_EACH_R</a></li>
+ <li><a href="ref/seq_head.html">SEQ_HEAD</a></li>
+ <li><a href="ref/seq_insert.html">SEQ_INSERT</a></li>
+ <li><a href="ref/seq_nil.html">SEQ_NIL</a></li>
+ <li><a href="ref/seq_pop_back.html">SEQ_POP_BACK</a></li>
+ <li><a href="ref/seq_pop_front.html">SEQ_POP_FRONT</a></li>
+ <li><a href="ref/seq_push_back.html">SEQ_PUSH_BACK</a></li>
+ <li><a href="ref/seq_push_front.html">SEQ_PUSH_FRONT</a></li>
+ <li><a href="ref/seq_remove.html">SEQ_REMOVE</a></li>
+ <li><a href="ref/seq_replace.html">SEQ_REPLACE</a></li>
+ <li><a href="ref/seq_rest_n.html">SEQ_REST_N</a></li>
+ <li><a href="ref/seq_reverse.html">SEQ_REVERSE</a></li>
+ <li><a href="ref/seq_reverse_s.html">SEQ_REVERSE_S</a></li>
+ <li><a href="ref/seq_size.html">SEQ_SIZE</a></li>
+ <li><a href="ref/seq_subseq.html">SEQ_SUBSEQ</a></li>
+ <li><a href="ref/seq_tail.html">SEQ_TAIL</a></li>
+ <li><a href="ref/seq_to_array.html">SEQ_TO_ARRAY</a></li>
+ <li><a href="ref/seq_to_list.html">SEQ_TO_LIST</a></li>
+ <li><a href="ref/seq_to_tuple.html">SEQ_TO_TUPLE</a></li>
+ <li><a href="ref/seq_transform.html">SEQ_TRANSFORM</a></li>
+ <li><a href="ref/seq_transform_s.html">SEQ_TRANSFORM_S</a></li>
+ <li><a href="ref/slot.html">SLOT</a></li>
+ <li><a href="ref/stringize.html">STRINGIZE</a></li>
+ <li><a href="ref/sub.html">SUB</a></li>
+ <li><a href="ref/sub_d.html">SUB_D</a></li>
+ <!-- T -->
+ <li><a href="ref/tuple_eat.html">TUPLE_EAT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_elem.html">TUPLE_ELEM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_enum.html">TUPLE_ENUM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><span style="color: gray;"></span><a href="ref/tuple_insert.html">TUPLE_INSERT</a>
+ <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_insert_d.html">TUPLE_INSERT_D</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_pop_back.html">TUPLE_POP_BACK</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_pop_back_z.html">TUPLE_POP_BACK_Z</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_pop_front.html">TUPLE_POP_FRONT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_pop_front_z.html">TUPLE_POP_FRONT_Z</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_push_back.html">TUPLE_PUSH_BACK</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_push_front.html">TUPLE_PUSH_FRONT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_rem.html">TUPLE_REM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_rem_ctor.html">TUPLE_REM_CTOR</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_remove.html">TUPLE_REMOVE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_remove_d.html">TUPLE_REMOVE_D</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_replace.html">TUPLE_REPLACE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_replace_d.html">TUPLE_REPLACE_D</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_reverse.html">TUPLE_REVERSE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_size.html">TUPLE_SIZE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_to_array.html">TUPLE_TO_ARRAY</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_to_list.html">TUPLE_TO_LIST</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/tuple_to_seq.html">TUPLE_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <!-- U -->
+ <li><a href="ref/update_counter.html">UPDATE_COUNTER</a></li>
+ <!-- V -->
+ <li><a href="ref/value.html">VALUE</a></li>
+ <li><a href="ref/variadics.html">VARIADICS</a></li>
+ <li><a href="ref/variadic_elem.html">VARIADIC_ELEM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/variadic_seq_to_seq.html">VARIADIC_SEQ_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/variadic_size.html">VARIADIC_SIZE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/variadic_to_array.html">VARIADIC_TO_ARRAY</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/variadic_to_list.html">VARIADIC_TO_LIST</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/variadic_to_seq.html">VARIADIC_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <li><a href="ref/variadic_to_tuple.html">VARIADIC_TO_TUPLE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
+ <!-- W -->
+ <li><a href="ref/while.html">WHILE</a></li>
+ <li><a href="ref/while_d.html">WHILE_<i>d</i></a></li>
+ <li><a href="ref/wstringize.html">WSTRINGIZE</a></li>
+ <!-- X -->
+ <li><a href="ref/xor.html">XOR</a></li>
+ </ul>
+ <!--
+© Copyright Housemarque Oy 2002© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)-->
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/add.html b/third_party/boostorg/preprocessor/doc/ref/add.html
new file mode 100644
index 0000000..569f07e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/add.html
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_ADD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ADD</b> macro expands to the sum of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ADD</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The first addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_ADD_D</b> in such a situation.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="add_d.html">BOOST_PP_ADD_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/add.html"><boost/preprocessor/arithmetic/add.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <a href="../headers/arithmetic/add.html"><boost/preprocessor/arithmetic/add.hpp></a>
+
+<a href="add.html">BOOST_PP_ADD</a>(4, 3) // expands to 7
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/add_d.html b/third_party/boostorg/preprocessor/doc/ref/add_d.html
new file mode 100644
index 0000000..26c46a0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/add_d.html
@@ -0,0 +1,90 @@
+<html>
+<head>
+ <title>BOOST_PP_ADD_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ADD_D</b> macro expands to the sum of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ADD_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The first addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second addend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="add.html">BOOST_PP_ADD</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/add.html"><boost/preprocessor/arithmetic/add.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data)
+
+#define OP(d, data) \
+ ( \
+ <a href="dec.html">BOOST_PP_DEC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data) \
+ ), \
+ <a href="add_d.html">BOOST_PP_ADD_D</a>( \
+ d, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data), \
+ 2 \
+ ) \
+ ) \
+ /**/
+
+// increment 'x' by 2 'n' times
+#define STRIDE(x, n) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, x)))
+
+STRIDE(10, 2) // expands to 14
+STRIDE(51, 6) // expands to 63
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/and.html b/third_party/boostorg/preprocessor/doc/ref/and.html
new file mode 100644
index 0000000..84a555e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/and.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_AND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_AND</b> macro expands to the logical <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_AND</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If both <i>p</i> and <i>q</i> are non-zero, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>AND</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITAND</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="bitand.html">BOOST_PP_BITAND</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/and.html"><boost/preprocessor/logical/and.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/and.html">boost/preprocessor/logical/and.hpp</a>>
+
+<a href="and.html">BOOST_PP_AND</a>(4, 3) // expands to 1
+<a href="and.html">BOOST_PP_AND</a>(5, 0) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/apply.html b/third_party/boostorg/preprocessor/doc/ref/apply.html
new file mode 100644
index 0000000..6ea531b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/apply.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_APPLY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_APPLY</b> macro abstracts the difference between an argument and nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_APPLY</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The abstracted argument.
+ This argument must be either <b>BOOST_PP_NIL</b> or a <i>tuple</i> with one element--such as <i>(arg)</i> or <i>((a, b))</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <b>BOOST_PP_NIL</b>, this macro expands to nothing.
+ If <i>x</i> is a one element <i>tuple</i>, it expands to the contents of that <i>tuple</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="nil.html">BOOST_PP_NIL</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/facilities/apply.html"><boost/preprocessor/facilities/apply.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/facilities/apply.html">boost/preprocessor/facilities/apply.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define CV(i) \
+ <a href="apply.html">BOOST_PP_APPLY</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>( \
+ 4, i, \
+ (<a href="nil.html">BOOST_PP_NIL</a>, (const), (volatile), (const volatile)) \
+ ) \
+ ) \
+ /**/
+
+CV(0) // expands to nothing
+CV(1) // expands to const
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_data.html b/third_party/boostorg/preprocessor/doc/ref/array_data.html
new file mode 100644
index 0000000..559a642
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_data.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_DATA</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_DATA</b> macro extracts the <i>tuple</i> data from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_DATA</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> to be converted to a <i>tuple</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the data portion of an <i>array</i> which is a <i>tuple</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/data.html"><boost/preprocessor/array/data.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/data.html">boost/preprocessor/array/data.hpp</a>>
+
+#define ARRAY (3, (x, y, z))
+
+<a href="array_data.html">BOOST_PP_ARRAY_DATA</a>(ARRAY) // expands to (x, y, z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_elem.html b/third_party/boostorg/preprocessor/doc/ref/array_elem.html
new file mode 100644
index 0000000..38e5a28
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_elem.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_ELEM</b> macro extracts an element from a <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_ELEM</b>(<i>i</i>, <i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The zero-based index into the <i>array</i> of the element to be extracted.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> from which an element is to be extracted.
+ This <i>array</i> must contain at least <i>i</i> + <i>1</i> elements.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/elem.html"><boost/preprocessor/array/elem.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/elem.html">boost/preprocessor/array/elem.hpp</a>>
+
+#define ARRAY (4, (a, b, c, d))
+
+<a href="array_elem.html">BOOST_PP_ARRAY_ELEM</a>(0, ARRAY) // expands to a
+<a href="array_elem.html">BOOST_PP_ARRAY_ELEM</a>(3, ARRAY) // expands to d
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_enum.html b/third_party/boostorg/preprocessor/doc/ref/array_enum.html
new file mode 100644
index 0000000..674d788
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_enum.html
@@ -0,0 +1,37 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_ENUM</b> macro converts an <i>array</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>.<br>
+ </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_ARRAY_ENUM</b>(<i>array</i>) </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> whose elements are to be converted. </dd>
+</dl>
+<h4> Remarks </h4>
+<div> This macro expands to a comma-separated list of the elements in <i>array</i>.
+For example, <b>BOOST_PP_ARRAY_ENUM</b>((3,(<i>x,</i><i>y,</i><i>z</i>)))
+expands to...
+<div> <i>x</i>, <i>y</i>, <i>z</i> </div>
+</div>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/array/enum.html"><boost/preprocessor/array/enum.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/array/enum.html">boost/preprocessor/array/enum.hpp</a>><br><br>#define ARRAY (5,(B,O,O,S,T))<br><br><a href="array_enum.html">BOOST_PP_ARRAY_ENUM</a>(ARRAY) // expands to B, O, O, S, T<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_insert.html b/third_party/boostorg/preprocessor/doc/ref/array_insert.html
new file mode 100644
index 0000000..4f605d0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_insert.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_INSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_INSERT</b> macro inserts an element into an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_INSERT</b>(<i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> into which an element is to be inserted.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> where an element is to be inserted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>).
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to insert.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <div>
+ If the operation attempts to create an <i>array</i> that is larger than <b>BOOST_PP_LIMIT_TUPLE</b>,
+ the result is undefined.
+ </div>
+ <div>
+ This macro uses <b>BOOST_PP_WHILE</b> interally.
+ Therefore, to use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_ARRAY_INSERT_D</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_insert_d.html">BOOST_PP_ARRAY_INSERT_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/insert.html"><boost/preprocessor/array/insert.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/insert.html">boost/preprocessor/array/insert.hpp</a>>
+
+#define ARRAY (3, (a, b, d))
+
+<a href="array_insert.html">BOOST_PP_ARRAY_INSERT</a>(ARRAY, 2, c) // expands to (4, (a, b, c, d))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_insert_d.html b/third_party/boostorg/preprocessor/doc/ref/array_insert_d.html
new file mode 100644
index 0000000..10fb6d8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_insert_d.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_INSERT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_INSERT_D</b> macro inserts an element into an <i>array</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_INSERT_D</b>(<i>d</i>, <i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> into which an element is to be inserted.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> where an element is to be inserted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>).
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to insert.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <div>
+ If the operation attempts to create an <i>array</i> that is larger than <b>BOOST_PP_LIMIT_TUPLE</b>,
+ the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_insert.html">BOOST_PP_ARRAY_INSERT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/insert.html"><boost/preprocessor/array/insert.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_pop_back.html b/third_party/boostorg/preprocessor/doc/ref/array_pop_back.html
new file mode 100644
index 0000000..3dfcbaf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_pop_back.html
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_BACK</b> macro pops an element from the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_BACK</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the last element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <div>
+ This macro uses <b>BOOST_PP_REPEAT</b> internally.
+ Therefore, to use the <i>z</i> parameter passed from other macros that use
+ <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ARRAY_POP_BACK_Z</b>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_pop_back_z.html">BOOST_PP_ARRAY_POP_BACK_Z</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/pop_back.html"><boost/preprocessor/array/pop_back.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/pop_back.html">boost/preprocessor/array/pop_back.hpp</a>>
+
+#define ARRAY (3, (a, b, c))
+
+<a href="array_pop_back.html">BOOST_PP_ARRAY_POP_BACK</a>(ARRAY) // expands to (2, (a, b))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_pop_back_z.html b/third_party/boostorg/preprocessor/doc/ref/array_pop_back_z.html
new file mode 100644
index 0000000..a1a33bf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_pop_back_z.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_BACK_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_BACK_Z</b> macro pops an element from the end of an <i>array</i>.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_BACK_Z</b>(<i>z</i>, <i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the last element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_pop_back.html">BOOST_PP_ARRAY_POP_BACK</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/pop_back.html"><boost/preprocessor/array/pop_back.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_pop_front.html b/third_party/boostorg/preprocessor/doc/ref/array_pop_front.html
new file mode 100644
index 0000000..0c3718d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_pop_front.html
@@ -0,0 +1,51 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_ARRAY_POP_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_POP_FRONT</b> macro
+ pops an element from the beginning of an <i>array</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_ARRAY_POP_FRONT</b>(<i>array</i>) </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> to pop an element from. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro returns <i>array</i> after removing the first
+ element. If <i>array</i> has no elements, the result of applying
+ this macro is undefined. </div>
+ <div> This macro uses <b>BOOST_PP_REPEAT</b> internally. Therefore,
+ to use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>,
+ see <b>BOOST_PP_ARRAY_POP_FRONT_Z</b> </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_pop_front_z.html">BOOST_PP_ARRAY_POP_FRONT_Z</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/array/pop_front.html"><boost/preprocessor/array/pop_front.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/array/pop_front.html">boost/preprocessor/array/pop_front.hpp</a>>
+
+#define ARRAY (3, (a, b, c))
+
+<a href="array_pop_front.html">BOOST_PP_ARRAY_POP_FRONT</a>(ARRAY) // expands to (2, (b, c))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_pop_front_z.html b/third_party/boostorg/preprocessor/doc/ref/array_pop_front_z.html
new file mode 100644
index 0000000..d654640
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_pop_front_z.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_POP_FRONT_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_POP_FRONT_Z</b> macro pops an element from the beginning of an <i>array</i>.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_POP_FRONT_Z</b>(<i>z</i>, <i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns <i>array</i> after removing the first element.
+ If <i>array</i> has no elements, the result of applying this macro is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_pop_front.html">BOOST_PP_ARRAY_POP_FRONT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/pop_front.html"><boost/preprocessor/array/pop_front.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_push_back.html b/third_party/boostorg/preprocessor/doc/ref/array_push_back.html
new file mode 100644
index 0000000..0183ed3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_push_back.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_PUSH_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_PUSH_BACK</b> macro appends an element to the end of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_PUSH_BACK</b>(<i>array</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to append an element to.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to append.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/push_back.html"><boost/preprocessor/array/push_back.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/push_back.html">boost/preprocessor/array/push_back.hpp</a>>
+
+#define ARRAY (3, (a, b, c))
+
+<a href="array_push_back.html">BOOST_PP_ARRAY_PUSH_BACK</a>(ARRAY, d) // expands to (4, (a, b, c, d))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_push_front.html b/third_party/boostorg/preprocessor/doc/ref/array_push_front.html
new file mode 100644
index 0000000..8f65000
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_push_front.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_PUSH_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_PUSH_FRONT</b> macro appends an element to the beginning of an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_PUSH_FRONT</b>(<i>array</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> to append an element to.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to append.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/push_front.html"><boost/preprocessor/array/push_front.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/push_front.html">boost/preprocessor/array/push_front.hpp</a>>
+
+#define ARRAY (3, (b, c, d))
+
+<a href="array_push_front.html">BOOST_PP_ARRAY_PUSH_FRONT</a>(ARRAY, a) // expands to (4, (a, b, c, d))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_remove.html b/third_party/boostorg/preprocessor/doc/ref/array_remove.html
new file mode 100644
index 0000000..0bd96fb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_remove.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REMOVE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REMOVE</b> macro removes an element from an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REMOVE</b>(<i>array</i>, <i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> from which an element is to be removed.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be removed.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro uses <b>BOOST_PP_WHILE</b> interally.
+ Therefore, to use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_ARRAY_REMOVE_D</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_remove_d.html">BOOST_PP_ARRAY_REMOVE_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/remove.html"><boost/preprocessor/array/remove.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/remove.html">boost/preprocessor/array/remove.hpp</a>>
+
+#define ARRAY (3, (a, b, d))
+
+<a href="array_remove.html">BOOST_PP_ARRAY_REMOVE</a>(ARRAY, 2) // expands to (2, (a, b))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_remove_d.html b/third_party/boostorg/preprocessor/doc/ref/array_remove_d.html
new file mode 100644
index 0000000..0e9a811
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_remove_d.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REMOVE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REMOVE_D</b> macro removes an element from an <i>array</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REMOVE_D</b>(<i>d</i>, <i>array</i>, <i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> from which an element is to be removed.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be removed.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_remove.html">BOOST_PP_ARRAY_REMOVE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/remove.html"><boost/preprocessor/array/remove.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_replace.html b/third_party/boostorg/preprocessor/doc/ref/array_replace.html
new file mode 100644
index 0000000..330077b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_replace.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REPLACE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REPLACE</b> macro replaces an element in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REPLACE</b>(<i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> to replace an element in.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be replaced.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The replacement element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro uses <b>BOOST_PP_WHILE</b> interally.
+ Therefore, to use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_ARRAY_REPLACE_D</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_replace_d.html">BOOST_PP_ARRAY_REPLACE_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/replace.html"><boost/preprocessor/array/replace.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/replace.html">boost/preprocessor/array/replace.hpp</a>>
+
+#define ARRAY (3, (a, x, c))
+
+<a href="array_replace.html">BOOST_PP_ARRAY_REPLACE</a>(ARRAY, 1, b) // expands to (3, (a, b, c))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_replace_d.html b/third_party/boostorg/preprocessor/doc/ref/array_replace_d.html
new file mode 100644
index 0000000..e638cce
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_replace_d.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REPLACE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REPLACE_D</b> macro replaces an element in an <i>array</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REPLACE_D</b>(<i>d</i>, <i>array</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> to replace an element in.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>array</i> of the element to be replaced.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The replacement element.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="array_replace.html">BOOST_PP_ARRAY_REPLACE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/replace.html"><boost/preprocessor/array/replace.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_reverse.html b/third_party/boostorg/preprocessor/doc/ref/array_reverse.html
new file mode 100644
index 0000000..5a26eeb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_reverse.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_REVERSE</b> macro reverses the elements in an <i>array</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_REVERSE</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ The <i>array</i> whose elements are to be reversed.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/reverse.html"><boost/preprocessor/array/reverse.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/reverse.html">boost/preprocessor/array/reverse.hpp</a>>
+
+#define ARRAY (3, (a, b, c))
+
+<a href="array_reverse.html">BOOST_PP_ARRAY_REVERSE</a>(ARRAY) // expands to (3, (c, b, a))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_size.html b/third_party/boostorg/preprocessor/doc/ref/array_size.html
new file mode 100644
index 0000000..e4d4390
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_size.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <title>BOOST_PP_ARRAY_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ARRAY_SIZE</b> macro expands to the size of the <i>array</i> passed to it.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ARRAY_SIZE</b>(<i>array</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd>
+ An <i>array</i> whose size is to be extracted.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/array/size.html"><boost/preprocessor/array/size.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/size.html">boost/preprocessor/array/size.hpp</a>>
+
+#define ARRAY (3, (x, y, z))
+
+<a href="array_size.html">BOOST_PP_ARRAY_SIZE</a>(ARRAY) // expands to 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_to_list.html b/third_party/boostorg/preprocessor/doc/ref/array_to_list.html
new file mode 100644
index 0000000..2fdd247
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_to_list.html
@@ -0,0 +1,41 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_ARRAY_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_LIST</b> macro
+ converts an <i>array</i> to a <i>list</i>. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_ARRAY_TO_LIST</b>(<i>array</i>) </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> to be converted.</dd>
+ </dl>
+ <ul>
+ </ul>
+ <h4>Remarks</h4>
+ <p> If the <i>array</i> to be converted is empty, as
+ represented by '( 0, () )', the resulting <i>list</i> is empty, as
+ represented by 'BOOST_PP_NIL'.</p>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/array/to_list.html"><boost/preprocessor/array/to_list.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/array/to_list.html">boost/preprocessor/array/to_list.hpp</a>><br><br><a
+href="array_to_list.html">BOOST_PP_ARRAY_TO_LIST</a>((3, (x, y, z)))<br> // expands to (x, (y, (z, <a
+href="nil.html">BOOST_PP_NIL</a>)))</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ s
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_to_seq.html b/third_party/boostorg/preprocessor/doc/ref/array_to_seq.html
new file mode 100644
index 0000000..bf3518e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_to_seq.html
@@ -0,0 +1,37 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_ARRAY_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_SEQ</b> macro
+ converts an <i>array</i> to a <i>seq</i>. </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_ARRAY_TO_SEQ</b>(<i>array</i>) </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> to be converted.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <p> If the <i>array</i> to be converted is empty, as
+ represented by '( 0, () )', the resulting <i>seq</i> is undefined since a
+ <i>seq</i> cannot be empty.</p>
+ <h4>Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/array/to_seq.html"><boost/preprocessor/array/to_seq.hpp></a>
+ </div>
+ <h4> Sample Code </h4>
+ <div>
+ <pre>#include <<a href="../headers/array/to_seq.html">boost/preprocessor/array/to_seq.hpp</a>><br><br><a
+href="array_to_seq.html">BOOST_PP_ARRAY_TO_SEQ</a>((3, (a, b, c))) // expands to (a)(b)(c)</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/array_to_tuple.html b/third_party/boostorg/preprocessor/doc/ref/array_to_tuple.html
new file mode 100644
index 0000000..8f9c958
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/array_to_tuple.html
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_ARRAY_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_TUPLE</b> macro
+ converts an <i>array</i> to an <i>tuple</i>. </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_ARRAY_TO_TUPLE</b>(<i>array</i>) </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>array</dt>
+ <dd> The <i>array</i> to be converted.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <p> If the <i>array</i> to be converted is empty, as
+ represented by '( 0, () )', the resulting <i>tuple</i> is undefined
+ since a <i>tuple</i> cannot be empty.</p>
+ <h4>Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/array/to_tuple.html"><boost/preprocessor/array/to_tuple.hpp></a>
+ </div>
+ <h4> Sample Code </h4>
+ <div>
+ <pre>#include <<a href="../headers/array/to_tuple.html">boost/preprocessor/array/to_tuple.hpp</a>><br><br>#define ARRAY (3,(a, b, c))<br><br><a
+
+href="array_to_tuple.html">BOOST_PP_ARRAY_TO_TUPLE</a>(ARRAY) // expands to (a, b, c)</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/assert.html b/third_party/boostorg/preprocessor/doc/ref/assert.html
new file mode 100644
index 0000000..6bdbd32
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/assert.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <title>BOOST_PP_ASSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ASSERT</b> macro conditionally causes a preprocessing error.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ASSERT</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ A condition that determines whether an assertion occurs.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro causes a preprocessing error.
+ Otherwise, it expands to nothing.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/debug/assert.html"><boost/preprocessor/debug/assert.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/debug/assert.html">boost/preprocessor/debug/assert.hpp</a>>
+#include <<a href="../headers/logical/bitnor.html">boost/preprocessor/logical/bitnor.hpp</a>>
+#include <<a href="../headers/logical/compl.html">boost/preprocessor/logical/compl.hpp</a>>
+
+// The is BOOST_PP_IS_NULLARY macro is not part of
+// the public interface of the library because it
+// doesn't work on Borland preprocessors. It is
+// only used here to illustrate assertions. In
+// effect, it detects whether an argument is empty
+// parenthesis or some text.
+
+#include <boost/preprocessor/detail/is_nullary.hpp>
+
+#define IS_EDISON_DESIGN_GROUP() \
+ <a href="compl.html">BOOST_PP_COMPL</a>( \
+ BOOST_PP_IS_NULLARY( \
+ <a href="cat.html">BOOST_PP_CAT</a>(IS_EDG_CHECK, __EDG_VERSION) \
+ ) \
+ ) \
+ /**/
+#define IS_EDG_CHECK__EDG_VERSION ()
+
+#define IS_METROWERKS() \
+ <a href="compl.html">BOOST_PP_COMPL</a>( \
+ BOOST_PP_IS_NULLARY( \
+ <a href="cat.html">BOOST_PP_CAT</a>(IS_MWERKS_CHECK, __MWERKS__) \
+ ) \
+ ) \
+ /**/
+#define IS_MWERKS_CHECK__MWERKS__ ()
+
+#define IS_MICROSOFT() \
+ <a href="bitnor.html">BOOST_PP_BITNOR</a>( \
+ IS_MICROSOFT_ROOT(), \
+ IS_EDISON_DESIGN_GROUP() \
+ ) \
+ /**/
+#define IS_MICROSOFT_ROOT() \
+ BOOST_PP_IS_NULLARY( \
+ <a href="cat.html">BOOST_PP_CAT</a>(IS_MSVC_CHECK, _MSC_VER) \
+ ) \
+ /**/
+#define IS_MSVC_CHECK_MS_VER ()
+
+// this macro doesn't work on EDG...
+// (this is just an example)
+
+#define MACRO(n) \
+ <a href="cat.html">BOOST_PP_CAT</a>( \
+ MACRO_, \
+ IS_EDISON_DESIGN_GROUP() \
+ )(n) \
+ /**/
+
+#define MACRO_1(n) \
+ <a href="assert.html">BOOST_PP_ASSERT</a>(0) \
+ "Edison Design Group is not supported" \
+ /**/
+
+#define MACRO_0(n) normal mode: n
+
+MACRO(10)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/assert_msg.html b/third_party/boostorg/preprocessor/doc/ref/assert_msg.html
new file mode 100644
index 0000000..55ac14a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/assert_msg.html
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_ASSERT_MSG</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ASSERT_MSG</b> macro conditionally inserts debugging text.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ASSERT_MSG</b>(<i>cond</i>, <i>msg</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ A condition that determines whether an assertion occurs.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>msg</dt>
+ <dd>
+ A message to display if <i>cond</i> evaluates to <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to <i>msg</i>.
+ Otherwise, it expands to nothing.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/debug/assert.html"><boost/preprocessor/debug/assert.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/equal.html">boost/preprocessor/comparison/equal.hpp</a>>
+#include <<a href="../headers/debug/assert.html">boost/preprocessor/debug/assert.hpp</a>>
+
+// lines are supposed to be counted
+// in translation phase 1
+
+#line 9
+<a href="assert_msg.html">BOOST_PP_ASSERT_MSG</a>( \
+ BOOST_PP_EQUAL(__LINE__, 9), \
+ "incorrect line numbering detected" \
+)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/assign_slot.html b/third_party/boostorg/preprocessor/doc/ref/assign_slot.html
new file mode 100644
index 0000000..bfc20f0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/assign_slot.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_ASSIGN_SLOT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ASSIGN_SLOT</b> macro fully evaluates a numeric macro or expression.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_ASSIGN_SLOT</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The <i>slot</i> index that is to be assigned.
+ This value must be in the range of <i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Prior to use, the <i>named external argument</i> <b>BOOST_PP_VALUE</b> must be defined.
+ Also, it must expand to a numeric value that is in the range of <i>0</i> to <i>2</i>^<i>32</i> - <i>1</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_slot_count.html">BOOST_PP_LIMIT_SLOT_COUNT</a></li>
+ <li><a href="value.html">BOOST_PP_VALUE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/slot/slot.html"><boost/preprocessor/slot/slot.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/slot/slot.html">boost/preprocessor/slot/slot.hpp</a>>
+
+#define X() 4
+
+#define <a href="value.html">BOOST_PP_VALUE</a> 1 + 2 + 3 + X()
+#include <a href="assign_slot.html">BOOST_PP_ASSIGN_SLOT</a>(1)
+
+#undef X
+
+<a href="slot.html">BOOST_PP_SLOT</a>(1) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/bitand.html b/third_party/boostorg/preprocessor/doc/ref/bitand.html
new file mode 100644
index 0000000..18d991e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/bitand.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_BITAND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITAND</b> macro expands to the bitwise <i>AND</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITAND</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If both <i>x</i> and <i>y</i> are <i>1</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>AND</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_AND</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="and.html">BOOST_PP_AND</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/bitand.html"><boost/preprocessor/logical/bitand.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/bitand.html">boost/preprocessor/logical/bitand.hpp</a>>
+
+<a href="bitand.html">BOOST_PP_BITAND</a>(0, 0) // expands to 0
+<a href="bitand.html">BOOST_PP_BITAND</a>(0, 1) // expands to 0
+<a href="bitand.html">BOOST_PP_BITAND</a>(1, 0) // expands to 0
+<a href="bitand.html">BOOST_PP_BITAND</a>(1, 1) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/bitnor.html b/third_party/boostorg/preprocessor/doc/ref/bitnor.html
new file mode 100644
index 0000000..717a7c8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/bitnor.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_BITNOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITNOR</b> macro expands to the bitwise <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITNOR</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If neither <i>x</i> nor <i>y</i> is <i>1</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>NOR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_NOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="nor.html">BOOST_PP_NOR</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/bitnor.html"><boost/preprocessor/logical/bitnor.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/bitnor.html">boost/preprocessor/logical/bitnor.hpp</a>>
+
+<a href="bitnor.html">BOOST_PP_BITNOR</a>(0, 0) // expands to 1
+<a href="bitnor.html">BOOST_PP_BITNOR</a>(0, 1) // expands to 0
+<a href="bitnor.html">BOOST_PP_BITNOR</a>(1, 0) // expands to 0
+<a href="bitnor.html">BOOST_PP_BITNOR</a>(1, 1) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/bitor.html b/third_party/boostorg/preprocessor/doc/ref/bitor.html
new file mode 100644
index 0000000..4efb55f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/bitor.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_BITOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITOR</b> macro expands to the bitwise <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITOR</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>x</i> or <i>y</i> is <i>1</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>OR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_OR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="or.html">BOOST_PP_OR</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/bitor.html"><boost/preprocessor/logical/bitor.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/bitor.html">boost/preprocessor/logical/bitor.hpp</a>>
+
+<a href="bitor.html">BOOST_PP_BITOR</a>(0, 0) // expands to 0
+<a href="bitor.html">BOOST_PP_BITOR</a>(0, 1) // expands to 1
+<a href="bitor.html">BOOST_PP_BITOR</a>(1, 0) // expands to 1
+<a href="bitor.html">BOOST_PP_BITOR</a>(1, 1) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/bitxor.html b/third_party/boostorg/preprocessor/doc/ref/bitxor.html
new file mode 100644
index 0000000..89da2dc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/bitxor.html
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_BITXOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BITXOR</b> macro expands to the bitwise <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BITXOR</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the operation.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>x</i> or <i>y</i> is <i>1</i> exclusively, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on either operand before performing the bitwise <i>OR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_XOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="xor.html">BOOST_PP_XOR</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/bitxor.html"><boost/preprocessor/logical/bitxor.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/bitxor.html">boost/preprocessor/logical/bitxor.hpp</a>>
+
+<a href="bitxor.html">BOOST_PP_BITXOR</a>(0, 0) // expands to 0
+<a href="bitxor.html">BOOST_PP_BITXOR</a>(0, 1) // expands to 1
+<a href="bitxor.html">BOOST_PP_BITXOR</a>(1, 0) // expands to 1
+<a href="bitxor.html">BOOST_PP_BITXOR</a>(1, 1) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/bool.html b/third_party/boostorg/preprocessor/doc/ref/bool.html
new file mode 100644
index 0000000..3470fde
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/bool.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>BOOST_PP_BOOL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_BOOL</b> macro performs a boolean conversion on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_BOOL</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be converted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <i>0</i>, this macro expands to <i>0</i>.
+ Otherwise it expands to <i>1</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/bool.html"><boost/preprocessor/logical/bool.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/bool.html">boost/preprocessor/logical/bool.hpp</a>>
+
+<a href="bool.html">BOOST_PP_BOOL</a>(6) // expands to 1
+<a href="bool.html">BOOST_PP_BOOL</a>(0) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/cat.html b/third_party/boostorg/preprocessor/doc/ref/cat.html
new file mode 100644
index 0000000..95d81d6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/cat.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_CAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_CAT</b> macro concatenates its arguments after they have been expanded.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_CAT</b>(<i>a</i>, <i>b</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>a</dt>
+ <dd>
+ The left operand of the concatenation.
+ </dd>
+ <dt>b</dt>
+ <dd>
+ The right operand of the concatenation.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor token-pasting operator (<b>##</b>) prevents arguments from expanding.
+ This macro allows its arguments to expand before concatenation.
+ </div>
+ <div>
+ Concatenation must not result in an invocation of a macro that uses <b>BOOST_PP_CAT</b>.
+ If that happens, <b>BOOST_PP_CAT</b> will not expand the second time.
+ </div>
+<!-- <h4>See Also</h4> -->
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/cat.html"><boost/preprocessor/cat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+
+<a href="cat.html">BOOST_PP_CAT</a>(x, <a href="cat.html">BOOST_PP_CAT</a>(y, z)) // expands to xyz
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/comma.html b/third_party/boostorg/preprocessor/doc/ref/comma.html
new file mode 100644
index 0000000..f3b1ee6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/comma.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <title>BOOST_PP_COMMA</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COMMA</b> macro expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COMMA</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor interprets commas as argument separators in macro invocations.
+ Because of this, commas require special handling.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/punctuation/comma.html"><boost/preprocessor/punctuation/comma.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>>
+#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>>
+#include <<a href="../headers/punctuation/comma.html">boost/preprocessor/punctuation/comma.hpp</a>>
+
+<a href="if.html">BOOST_PP_IF</a>(1, <a href="comma.html">BOOST_PP_COMMA</a>, <a href="empty.html">BOOST_PP_EMPTY</a>)() // expands to ,
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/comma_if.html b/third_party/boostorg/preprocessor/doc/ref/comma_if.html
new file mode 100644
index 0000000..9304ad6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/comma_if.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_COMMA_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COMMA_IF</b> macro conditionally expands to a comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COMMA_IF</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if a the macro expands to a comma or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.
+ Otherwise, it expands to a comma.
+ </div>
+ <div>
+ The preprocessor interprets commas as argument separators in macro invocations.
+ Because of this, commas require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/punctuation/comma_if.html"><boost/preprocessor/punctuation/comma_if.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/punctuation/comma_if.html">boost/preprocessor/punctuation/comma_if.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define MACRO(z, n, text) <a href="comma_if.html">BOOST_PP_COMMA_IF</a>(n) text
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(3, MACRO, class) // expands to class, class, class
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/compl.html b/third_party/boostorg/preprocessor/doc/ref/compl.html
new file mode 100644
index 0000000..693725c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/compl.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_COMPL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COMPL</b> macro performs a bitwise inversion (bitwise <i>NOT</i> or one's complement) on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COMPL</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be converted.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <i>0</i>, this macro expands to <i>1</i>.
+ If <i>x</i> is <i>1</i>, this it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on its operand before performing the inversion <i>OR</i> operation.
+ If that conversion is necessary, use <b>BOOST_PP_NOT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="not.html">BOOST_PP_NOT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/compl.html"><boost/preprocessor/logical/compl.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/compl.html">boost/preprocessor/logical/compl.hpp</a>>
+
+<a href="compl.html">BOOST_PP_COMPL</a>(1) // expands to 0
+<a href="compl.html">BOOST_PP_COMPL</a>(0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/config_extended_line_info.html b/third_party/boostorg/preprocessor/doc/ref/config_extended_line_info.html
new file mode 100644
index 0000000..16e19ab
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/config_extended_line_info.html
@@ -0,0 +1,54 @@
+<html>
+ <head>
+ <title>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> is a user-defined macro that
+ determines whether <b>BOOST_PP_LINE</b> outputs extended <i>file-iteration</i> state
+ information.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ #define <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> <i>n</i>
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The value that determines if <b>BOOST_PP_LINE</b> outputs extended <i>file-iteration</i>
+ information. This value must be <i>0</i> or <i>1</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ If <i>n</i> is <i>1</i>, <b>BOOST_PP_LINE</b> will output extended data.
+ By default, this macro is set to <i>0</i>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="line.html">BOOST_PP_LINE</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/counter.html b/third_party/boostorg/preprocessor/doc/ref/counter.html
new file mode 100644
index 0000000..ffdf107
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/counter.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_COUNTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_COUNTER</b> macro expands to the current counter value.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_COUNTER</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to an integer literal.
+ Its initial value is <code>0</code>.
+ Between usages of <b>BOOST_PP_UPDATE_COUNTER</b>, the value of <b>BOOST_PP_COUNTER</b> is constant.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="update_counter.html">BOOST_PP_UPDATE_COUNTER</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/slot/counter.html"><boost/preprocessor/slot/counter.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/array/insert.html">boost/preprocessor/slot/counter.hpp</a>>
+
+<a href="counter.html">BOOST_PP_COUNTER</a> // 0
+
+#include <a href="update_counter.html">BOOST_PP_UPDATE_COUNTER</a>()
+
+<a href="counter.html">BOOST_PP_COUNTER</a> // 1
+
+#include <a href="update_counter.html">BOOST_PP_UPDATE_COUNTER</a>()
+
+<a href="counter.html">BOOST_PP_COUNTER</a> // 2
+
+#include <a href="update_counter.html">BOOST_PP_UPDATE_COUNTER</a>()
+
+<a href="counter.html">BOOST_PP_COUNTER</a> // 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/dec.html b/third_party/boostorg/preprocessor/doc/ref/dec.html
new file mode 100644
index 0000000..8b2281b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/dec.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>BOOST_PP_DEC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEC</b> macro expands to one less than its argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEC</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be decremented.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <i>0</i>, the result is saturated to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="inc.html">BOOST_PP_INC</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/dec.html"><boost/preprocessor/arithmetic/dec.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+
+<a href="dec.html">BOOST_PP_DEC</a>(<a href="dec.html">BOOST_PP_DEC</a>(6)) // expands to 4
+<a href="dec.html">BOOST_PP_DEC</a>(0) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/deduce_d.html b/third_party/boostorg/preprocessor/doc/ref/deduce_d.html
new file mode 100644
index 0000000..5675e9d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/deduce_d.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_DEDUCE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEDUCE_D</b> macro manually deduces the state of the <b>BOOST_PP_WHILE</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEDUCE_D</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.
+ <i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.
+ It is not intended to be used directly with the invocation of macros with a <b>_D</b> suffix such as:
+ <div>
+ <b>BOOST_PP_ADD_D</b>(<b>BOOST_PP_DEDUCE_D</b>(), <i>x</i>, <i>y</i>)
+ </div>
+ If it is used in this context, the <b>_D</b> macro will fail.
+ The <b>_D</b> macros directly concatenate to the <i>d</i> parameter that is passed to them,
+ which would prevent <b>BOOST_PP_DEDUCE_D</b>() from expanding.
+ Furthermore, it is pointless to use this macro in a situation such as this
+ because it would already be too late to gain any efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="while.html">BOOST_PP_WHILE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/control/deduce_d.html"><boost/preprocessor/control/deduce_d.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/arithmetic/sub.html">boost/preprocessor/arithmetic/sub.hpp</a>>
+#include <<a href="../headers/control/deduce_d.html">boost/preprocessor/control/deduce_d.hpp</a>>
+#include <<a href="../headers/punctuation/comma_if.html">boost/preprocessor/punctuation/comma_if.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define RANGE(first, last) \
+ <a href="repeat.html">BOOST_PP_REPEAT</a>( \
+ <a href="inc.html">BOOST_PP_INC</a>( \
+ <a href="sub.html">BOOST_PP_SUB</a>(last, first) \
+ ), \
+ RANGE_M, \
+ (first, <a href="deduce_d.html">BOOST_PP_DEDUCE_D</a>()) \
+ ) \
+ /**/
+
+#define RANGE_M(z, n, data) \
+ RANGE_M_2( \
+ n, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data) \
+ ) \
+ /**/
+
+#define RANGE_M_2(n, first, d) \
+ <a href="comma_if.html">BOOST_PP_COMMA_IF</a>(n) <a href="add_d.html">BOOST_PP_ADD_D</a>(d, n, first) \
+ /**/
+
+RANGE(5, 10) // expands to 5, 6, 7, 8, 9, 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/deduce_r.html b/third_party/boostorg/preprocessor/doc/ref/deduce_r.html
new file mode 100644
index 0000000..84eb106
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/deduce_r.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+ <title>BOOST_PP_DEDUCE_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEDUCE_R</b> macro manually deduces the state of the <b>BOOST_PP_FOR</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEDUCE_R</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.
+ <i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.
+ It is not intended to be used directly with the invocation of macros with a <b>_R</b> suffix such as:
+ <div>
+ <b>BOOST_PP_LIST_ENUM_R</b>(<b>BOOST_PP_DEDUCE_R</b>(), (a, (b, (c, <b>BOOST_PP_NIL</b>))))
+ </div>
+ If it is used in this context, the <b>_R</b> macro will fail.
+ The <b>_R</b> macros directly concatenate to the <i>r</i> parameter that is passed to them,
+ which would prevent <b>BOOST_PP_DEDUCE_R</b>() from expanding.
+ Furthermore, it is pointless to use this macro in a situation such as this
+ because it would already be too late to gain any efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="for.html">BOOST_PP_FOR</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/deduce_r.html"><boost/preprocessor/repetition/deduce_r.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/deduce_z.html b/third_party/boostorg/preprocessor/doc/ref/deduce_z.html
new file mode 100644
index 0000000..b9110e5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/deduce_z.html
@@ -0,0 +1,48 @@
+<html>
+<head>
+ <title>BOOST_PP_DEDUCE_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DEDUCE_Z</b> macro manually deduces the state of the <b>BOOST_PP_REPEAT</b> construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DEDUCE_Z</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is intended to avoid the use of <i>automatic-recursion</i> at deep expansion depths.
+ <i>Automatic-recursion</i> at such depths can be inefficient on some preprocessors.
+ It is not intended to be used directly with the invocation of macros with a <b>_Z</b> suffix such as:
+ <div>
+ <b>BOOST_PP_ENUM_PARAMS_Z</b>(<b>BOOST_PP_DEDUCE_Z</b>(), (a, (b, (c, <b>BOOST_PP_NIL</b>))))
+ </div>
+ If it is used in this context, the <b>_Z</b> macro will fail.
+ The <b>_Z</b> macros directly concatenate to the <i>r</i> parameter that is passed to them,
+ which would prevent <b>BOOST_PP_DEDUCE_Z</b>() from expanding.
+ Furthermore, it is pointless to use this macro in a situation such as this
+ because it would already be too late to gain any efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/deduce_z.html"><boost/preprocessor/repetition/deduce_z.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/div.html b/third_party/boostorg/preprocessor/doc/ref/div.html
new file mode 100644
index 0000000..f207ce8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/div.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_DIV</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DIV</b> macro expands to the quotient of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DIV</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_DIV_D</b> in such a situation.
+ </div>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="div_d.html">BOOST_PP_DIV_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/div.html"><boost/preprocessor/arithmetic/div.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/div.html">boost/preprocessor/arithmetic/div.hpp</a>>
+
+<a href="div.html">BOOST_PP_DIV</a>(11, 5) // expands to 2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/div_d.html b/third_party/boostorg/preprocessor/doc/ref/div_d.html
new file mode 100644
index 0000000..85035b6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/div_d.html
@@ -0,0 +1,85 @@
+<html>
+<head>
+ <title>BOOST_PP_DIV_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_DIV_D</b> macro expands to the quotient of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_DIV_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="div.html">BOOST_PP_DIV</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/div.html"><boost/preprocessor/arithmetic/div.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/arithmetic/div.html">boost/preprocessor/arithmetic/div.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data)
+
+#define OP(d, data) \
+ ( \
+ <a href="dec.html">BOOST_PP_DEC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data) \
+ ), \
+ <a href="div_d.html">BOOST_PP_DIV_D</a>( \
+ d, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data), \
+ 2 \
+ ) \
+ ) \
+ /**/
+
+// halve 'x' 'n' times
+#define HALVE(x, n) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, x)))
+
+HALVE(8, 2) // expands to 2
+HALVE(16, 1) // expands to 8
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/empty.html b/third_party/boostorg/preprocessor/doc/ref/empty.html
new file mode 100644
index 0000000..0fc9537
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/empty.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <title>BOOST_PP_EMPTY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EMPTY</b> macro is a nullary utility macro that expands to nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EMPTY</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is helps avoid inefficient macro-expansion.
+ It is primarily useful as arguments to <b>BOOST_PP_IF</b> or <b>BOOST_PP_IIF</b>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/facilities/empty.html"><boost/preprocessor/facilities/empty.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>>
+#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>>
+
+#define X() result
+#define MACRO(c) <a href="if.html">BOOST_PP_IF</a>(c, X, <a href="empty.html">BOOST_PP_EMPTY</a>)()
+
+MACRO(0) // expands to nothing
+MACRO(1) // expands to result
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum.html b/third_party/boostorg/preprocessor/doc/ref/enum.html
new file mode 100644
index 0000000..e9fe446
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum.html
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM</b> macro generates a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_z.html">BOOST_PP_ENUM_<i>z</i></a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum.html"><boost/preprocessor/repetition/enum.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum.html">boost/preprocessor/repetition/enum.hpp</a>>
+
+#define TEXT(z, n, text) text
+
+<a href="enum.html">BOOST_PP_ENUM</a>(4, TEXT, class) // expands to class, class, class, class
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_binary_params.html b/third_party/boostorg/preprocessor/doc/ref/enum_binary_params.html
new file mode 100644
index 0000000..6a14cbd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_binary_params.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_BINARY_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_BINARY_PARAMS</b> macro generates a comma-separated list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b>.
+ </div>
+ <div>
+ This macro is a replacement for both <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> and <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a></li>
+ <li><a href="enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a></li>
+ <li><a href="enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_binary_params.html"><boost/preprocessor/repetition/enum_binary_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum_binary_params.html">boost/preprocessor/repetition/enum_binary_params.hpp</a>>
+
+<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, T, p) // expands to T0 p0, T1 p1, T2 p2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_binary_params_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_binary_params_z.html
new file mode 100644
index 0000000..0dc3e8b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_binary_params_z.html
@@ -0,0 +1,93 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_BINARY_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b> macro generates a comma-separated list of binary parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ This macro is a replacement for both <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> and <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
+ <li><a href="enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a></li>
+ <li><a href="enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_binary_params.html"><boost/preprocessor/repetition/enum_binary_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/repetition/enum_binary_params.html">boost/preprocessor/repetition/enum_binary_params.hpp</a>>
+#include <<a href="../headers/repetition/enum_params.html">boost/preprocessor/repetition/enum_params.hpp</a>>
+
+#define FUNCTION(z, n, _) \
+ template<<a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), class T)> \
+ void f(<a href="enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), T, p)) { \
+ /* ... */ \
+ } \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(2, FUNCTION, nil)
+/*
+ expands to...
+
+ template<class T0> void f(T0 p0) { }
+ template<class T0, class T1> void f(T0 p0, T1 p1) { }
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_params.html b/third_party/boostorg/preprocessor/doc/ref/enum_params.html
new file mode 100644
index 0000000..82b2f09
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_params.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS</b> macro generates a comma-separated list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS</b>(<i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_params.html"><boost/preprocessor/repetition/enum_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum_params.html">boost/preprocessor/repetition/enum_params.hpp</a>>
+
+<a href="enum_params.html">BOOST_PP_ENUM_PARAMS</a>(3, class T) // expands to class T0, class T1, class T2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_params_with_a_default.html b/third_party/boostorg/preprocessor/doc/ref/enum_params_with_a_default.html
new file mode 100644
index 0000000..a70ce0e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_params_with_a_default.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> macro generates a comma-separated list of parameters with a default argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b>(<i>count</i>, <i>param</i>, <i>def</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>def</dt>
+ <dd>
+ The default value that trails each parameter.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i> = <i>def</i>, <i>param</i> ## <i>1</i> = <i>def</i>, ... <i>param</i> ## <i>count</i> - <i>1</i> = <i>def</i>
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_ENUM_BINARY_PARAMS</b> with <b>BOOST_PP_INTERCEPT</b> instead:
+ <div>
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>param</i>, = <i>def</i> <b>BOOST_PP_INTERCEPT</b>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
+ <li><a href="intercept.html">BOOST_PP_INTERCEPT</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/epwad.html"><boost/preprocessor/repetition/enum_params_with_a_default.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/epwad.html">boost/preprocessor/repetition/enum_params_with_a_default.hpp</a>>
+
+<a href="enum_params_with_a_default.html">BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT</a>(3, class T, int)
+ // expands to T0 = int, T1 = int, T2 = int
+
+<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, class T, = int <a href="intercept.html">BOOST_PP_INTERCEPT</a>)
+ // expands to T0 = int, T1 = int, T2 = int
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_params_with_defaults.html b/third_party/boostorg/preprocessor/doc/ref/enum_params_with_defaults.html
new file mode 100644
index 0000000..d58255c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_params_with_defaults.html
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> macro generates a comma-separated list of parameters with default arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b>(<i>count</i>, <i>param</i>, <i>def</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>def</dt>
+ <dd>
+ The default value that trails each parameter.
+ <b>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate default arguments.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i> = <i>def</i> ## <i>0</i>, <i>param</i> ## <i>1</i> = <i>def</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i> = <i>def</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_ENUM_BINARY_PARAMS</b> instead:
+ <div>
+ <b>BOOST_PP_ENUM_BINARY_PARAMS</b>(<i>count</i>, <i>param</i>, = <i>def</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/epwd.html"><boost/preprocessor/repetition/enum_params_with_defaults.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/epwd.html">boost/preprocessor/repetition/enum_params_with_defaults.hpp</a>>
+
+<a href="enum_params_with_defaults.html">BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS</a>(3, class T, U)
+ // expands to class T0 = U0, class T1 = U1, class T2 = U2
+
+<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, class T, = U)
+ // expands to class T0 = U0, class T1 = U1, class T2 = U2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_params_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_params_z.html
new file mode 100644
index 0000000..1322906
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_params_z.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_PARAMS_Z</b> macro generates a comma-separated list of parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_params.html">BOOST_PP_ENUM_PARAMS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_params.html"><boost/preprocessor/repetition/enum_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div id="sample"><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/repetition/enum_params.html">boost/preprocessor/repetition/enum_params.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define MACRO(z, n, _) \
+ template< \
+ <a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), class T) \
+ > class X ## n { \
+ /* ... */ \
+ }; \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(2, MACRO, nil)
+/*
+ expands to...
+ template<class T0> class X0 { };
+ template<class T0, class T1> class X1 { };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_shifted.html b/third_party/boostorg/preprocessor/doc/ref/enum_shifted.html
new file mode 100644
index 0000000..eb95157
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_shifted.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED</b> macro generates a comma-separated, shifted list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM_SHIFTED</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_SHIFTED_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_<i>z</i></a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_shifted.html"><boost/preprocessor/repetition/enum_shifted.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum.html">boost/preprocessor/repetition/enum.hpp</a>>
+#include <<a href="../headers/repetition/enum_shifted.html">boost/preprocessor/repetition/enum_shifted.hpp</a>>
+
+#define TYPE(z, n, type) type
+
+<a href="enum.html">BOOST_PP_ENUM</a>(5, TYPE, int) // expands to int, int, int, int, int
+<a href="enum_shifted.html">BOOST_PP_ENUM_SHIFTED</a>(5, TYPE, int) // expands to int, int, int, int
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_shifted_params.html b/third_party/boostorg/preprocessor/doc/ref/enum_shifted_params.html
new file mode 100644
index 0000000..a5f79c2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_shifted_params.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b> macro generates a comma-separated, shifted list of parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b>(<i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS</b> concatenates numbers ranging from <i>1</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ This macro facilitates a typical usage of the library.
+ Shifted parameter lists are common in template metaprograms.
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="enum_shifted_params_z.html">BOOST_PP_SHIFTED_ENUM_PARAMS_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_shifted_params.html"><boost/preprocessor/repetition/enum_shifted_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum_shifted_params.html">boost/preprocessor/repetition/enum_shifted_params.hpp</a>>
+
+<a href="enum_shifted_params.html">BOOST_PP_ENUM_SHIFTED_PARAMS</a>(3, class T) // expands to class T1, class T2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_shifted_params_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_shifted_params_z.html
new file mode 100644
index 0000000..9794e54
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_shifted_params_z.html
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b> macro generates a comma-separated, shifted list of parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_PARAMS_Z</b> concatenates numbers ranging from <i>1</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="enum_shifted_params.html">BOOST_PP_ENUM_SHIFTED_PARAMS</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_shifted_params.html"><boost/preprocessor/repetition/enum_shifted_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum_params.html">boost/preprocessor/repetition/enum_params.hpp</a>>
+#include <<a href="../headers/repetition/enum_shifted_params.html">boost/preprocessor/repetition/enum_shifted_params.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+int add(void) {
+ return 0;
+}
+
+#define ADD_F(z, n, _) \
+ int add_f(<a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), int p)) { \
+ return p0 + add_f(<a href="enum_shifted_params_z.html">BOOST_PP_ENUM_SHIFTED_PARAMS_Z</a>(z, <a href="inc.html">BOOST_PP_INC</a>(n), p)); \
+ } \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(5, ADD_F, nil)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_shifted_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_shifted_z.html
new file mode 100644
index 0000000..05b7c5d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_shifted_z.html
@@ -0,0 +1,93 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM_SHIFTED</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM_SHIFTED</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_SHIFTED_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>).
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="enum_shifted.html">BOOST_PP_ENUM_SHIFTED</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_shifted.html"><boost/preprocessor/repetition/enum_shifted.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/repetition/enum_shifted.html">boost/preprocessor/repetition/enum_shifted.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define TEXT(z, n, text) text
+
+#define MACRO(z, n, data) \
+ ( \
+ <a href="enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_</a> ## z( \
+ BOOST_PP_INC(n), \
+ TEXT, data \
+ ) \
+ ) \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(3, MACRO, class) // expands to () (class) (class, class)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_trailing.html b/third_party/boostorg/preprocessor/doc/ref/enum_trailing.html
new file mode 100644
index 0000000..7b26bf3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_trailing.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING</b> macro generates a comma-separated list with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_ENUM_TRAILING_<i>z</i></b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_trailing_z.html">BOOST_PP_ENUM_TRAILING_<i>z</i></a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_trailing.html"><boost/preprocessor/repetition/enum_trailing.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum_trailing.html">boost/preprocessor/repetition/enum_trailing.hpp</a>>
+
+#define TEXT(z, n, text) text
+
+template<class <a href="enum_trailing.html">BOOST_PP_ENUM_TRAILING</a>(3, TEXT, class)>
+class X { };
+/*
+ expands to...
+
+template<class, class, class, class>
+class X { };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_trailing_params.html b/third_party/boostorg/preprocessor/doc/ref/enum_trailing_params.html
new file mode 100644
index 0000000..f5a96b8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_trailing_params.html
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_PARAMS</b> macro generates a comma-separated list of parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS</b>(<i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_trailing_params_z.html">BOOST_PP_ENUM_TRAILING_PARAMS_Z</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_trailing_params.html"><boost/preprocessor/repetition/enum_trailing_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum_trailing_params.html">boost/preprocessor/repetition/enum_trailing_params.hpp</a>>
+
+class X <a href="enum_trailing_params.html">BOOST_PP_ENUM_TRAILING_PARAMS</a>(2, class T)
+ // expands to class X, class T0, class T1, class T2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_trailing_params_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_trailing_params_z.html
new file mode 100644
index 0000000..0ba24cc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_trailing_params_z.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b> macro generates a comma-separated list of parameters with a leading comma.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>param</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>param</dt>
+ <dd>
+ The text of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>param</i> ## <i>0</i>, <i>param</i> ## <i>1</i>, ... <i>param</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="enum_trailing_params.html">BOOST_PP_ENUM_TRAILING_PARAMS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_trailing_params.html"><boost/preprocessor/repetition/enum_trailing_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div id="sample"><pre>
+#include <<a href="../headers/repetition/enum_trailing_params.html">boost/preprocessor/repetition/enum_trailing_params.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define MACRO(z, n, _) \
+ template< \
+ class <a href="enum_trailing_params_z.html">BOOST_PP_ENUM_TRAILING_PARAMS_Z</a>(z, n, class T) \
+ > class X ## n { \
+ /* ... */ \
+ }; \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(2, MACRO, nil)
+/*
+ expands to...
+ template<class> class X0 { };
+ template<class, class T0> class X1 { };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_trailing_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_trailing_z.html
new file mode 100644
index 0000000..9de1e05
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_trailing_z.html
@@ -0,0 +1,96 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM_TRAILING</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ , <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_TRAILING_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="enum_trailing.html">BOOST_PP_ENUM_TRAILING</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum_trailing.html"><boost/preprocessor/repetition/enum_trailing.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/enum.html">boost/preprocessor/repetition/enum.hpp</a>>
+#include <<a href="../headers/repetition/enum_trailing.html">boost/preprocessor/repetition/enum_trailing.hpp</a>>
+
+#define TEXT(z, n, text) text
+
+#define TTP(z, n, _) \
+ template< \
+ class <a href="enum_z.html">BOOST_PP_ENUM_TRAILING_</a> ## z(n, TEXT, class) \
+ > \
+ class T ## n \
+ /**/
+
+<a href="enum.html">BOOST_PP_ENUM</a>(3, TTP, nil)
+ /*
+ expands to...
+ template<class> class T0,
+ template<class, class> class T1,
+ template<class, class, class> class T2
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/enum_z.html b/third_party/boostorg/preprocessor/doc/ref/enum_z.html
new file mode 100644
index 0000000..894435f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/enum_z.html
@@ -0,0 +1,96 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_ENUM</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_ENUM</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>), <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>), ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_ENUM_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="enum.html">BOOST_PP_ENUM</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/enum.html"><boost/preprocessor/repetition/enum.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/repetition/enum.html">boost/preprocessor/repetition/enum.hpp</a>>
+
+#define TEXT(z, n, text) text
+
+#define TTP(z, n, _) \
+ template< \
+ <a href="enum_z.html">BOOST_PP_ENUM_</a> ## z(<a href="inc.html">BOOST_PP_INC</a>(n), TEXT, class) \
+ > \
+ class T ## n \
+ /**/
+
+<a href="enum.html">BOOST_PP_ENUM</a>(3, TTP, nil)
+ /*
+ expands to...
+ template<class> class T0,
+ template<class, class> class T1,
+ template<class, class, class> class T2
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/equal.html b/third_party/boostorg/preprocessor/doc/ref/equal.html
new file mode 100644
index 0000000..f32a8c3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/equal.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EQUAL</b> macro compares two values for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction because this macro no longer uses <b>BOOST_PP_WHILE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="equal_d.html">BOOST_PP_EQUAL_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/equal.html"><boost/preprocessor/comparison/equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/equal.html">boost/preprocessor/comparison/equal.hpp</a>>
+
+<a href="equal.html">BOOST_PP_EQUAL</a>(4, 3) // expands to 0
+<a href="equal.html">BOOST_PP_EQUAL</a>(5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/equal_d.html b/third_party/boostorg/preprocessor/doc/ref/equal_d.html
new file mode 100644
index 0000000..3a686af
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/equal_d.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EQUAL_D</b> macro compares two values for equality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ This argument is ignored.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_EQUAL</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="equal.html">BOOST_PP_EQUAL</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/equal.html"><boost/preprocessor/comparison/equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/equal.html">boost/preprocessor/comparison/equal.hpp</a>>
+
+<a href="equal_d.html">BOOST_PP_EQUAL_D</a>(1, 4, 3) // expands to 0
+<a href="equal_d.html">BOOST_PP_EQUAL_D</a>(1, 5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/esbp.html b/third_party/boostorg/preprocessor/doc/ref/esbp.html
new file mode 100644
index 0000000..900d3f2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/esbp.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_BINARY_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> macro generates a comma-separated, shifted list of binary parameters.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, <i>p1</i> ## <i>2</i> <i>p2</i> ## <i>2</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="esbpz.html">BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/esbp.html"><boost/preprocessor/repetition/enum_shifted_binary_params.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/esbpz.html b/third_party/boostorg/preprocessor/doc/ref/esbpz.html
new file mode 100644
index 0000000..6834f29
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/esbpz.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</b> macro generates a comma-separated list, shifted of binary parameters.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, <i>p1</i> ## <i>2</i> <i>p2</i> ## <i>2</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="esbp.html">BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/esbp.html"><boost/preprocessor/repetition/enum_shifted_binary_params.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/etbp.html b/third_party/boostorg/preprocessor/doc/ref/etbp.html
new file mode 100644
index 0000000..b16bb51
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/etbp.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> macro generates a comma-separated list of binary parameters with a leading comma.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b>(<i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <div>
+ To use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="etbpz.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/etbp.html"><boost/preprocessor/repetition/enum_trailing_binary_params.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/facilities/intercept.html">boost/preprocessor/facilities/intercept.hpp</a>>
+#include <<a href="../headers/repetition/etbp.html">boost/preprocessor/repetition/enum_trailing_binary_params.hpp</a>>
+
+template<class X <a href="etbp.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</a>(4, class A, = X <a href="intercept.html">BOOST_PP_INTERCEPT</a>)>
+struct sample {
+ // ...
+};
+
+/* expands to...
+
+template<class X, class A0 = X, class A1 = X, class A2 = X, class A3 = X>
+struct sample {
+ // ...
+}
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/etbpz.html b/third_party/boostorg/preprocessor/doc/ref/etbpz.html
new file mode 100644
index 0000000..1c98648
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/etbpz.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b> macro generates a comma-separated list of binary parameters with a leading comma.
+ It reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b>(<i>z</i>, <i>count</i>, <i>p1</i>, <i>p2</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of parameters to generate.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>p1</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ <dt>p2</dt>
+ <dd>
+ The text of the first part of the parameter.
+ <b>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</b> concatenates numbers ranging from <i>0</i> to <i>count</i> - <i>1</i>
+ to generate parameters.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the comma-separated sequence:
+ <div>
+ , <i>p1</i> ## <i>0</i> <i>p2</i> ## <i>0</i>, <i>p1</i> ## <i>1</i> <i>p2</i> ## <i>1</i>, ... <i>p1</i> ## <i>count</i> - <i>1</i> <i>p2</i> ## <i>count</i> - <i>1</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="etbp.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/etbp.html"><boost/preprocessor/repetition/enum_trailing_binary_params.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/expand.html b/third_party/boostorg/preprocessor/doc/ref/expand.html
new file mode 100644
index 0000000..4a1d78b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/expand.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_EXPAND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EXPAND</b> macro performs a double macro-expansion on its argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EXPAND</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The argument to be expanded twice.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is useful when a delay is necessary to produce the correct semantics of a macro invocation.
+ For example, when a macro expands to an argument list to another macro.
+ This macro will expand the the argument list on the first pass, and then rescan to expand any more macros.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/facilities/expand.html"><boost/preprocessor/facilities/expand.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>>
+#include <<a href="../headers/facilities/expand.html">boost/preprocessor/facilities/expand.hpp</a>>
+
+#define MACRO(a, b, c) (a)(b)(c)
+#define ARGS() (1, 2, 3)
+
+<a href="expand.html">BOOST_PP_EXPAND</a>(MACRO ARGS()) // expands to (1)(2)(3)
+
+#define SAMPLE(n) \
+ <a href="expand.html">BOOST_PP_EXPAND</a>( \
+ MACRO \
+ <a href="if.html">BOOST_PP_IF</a>( \
+ n, \
+ (x, y, z), \
+ (a, b, c) \
+ ) \
+ ) \
+ /**/
+
+SAMPLE(0) // expands to (a)(b)(c)
+SAMPLE(1) // expands to (x)(y)(z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/expr_if.html b/third_party/boostorg/preprocessor/doc/ref/expr_if.html
new file mode 100644
index 0000000..23835a2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/expr_if.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_EXPR_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EXPR_IF</b> macro expands to its second argument if its first argument is non-zero or expands to nothing otherwise.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EXPR_IF</b>(<i>cond</i>, <i>expr</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>expr</dt>
+ <dd>
+ The result of the expansion if <i>cond</i> is non-zero.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro performs a boolean conversion on its first argument.
+ If that conversion is unnecessary, use <b>BOOST_PP_EXPR_IIF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="expr_iif.html">BOOST_PP_EXPR_IIF</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/control/expr_if.html"><boost/preprocessor/control/expr_if.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/expr_if.html">boost/preprocessor/control/expr_if.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define CV(n) \
+ <a href="expr_if.html">BOOST_PP_EXPR_IF</a>( \
+ n, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>( \
+ 4, n, \
+ (..., const, volatile, const volatile) \
+ ) \
+ ) \
+ /**/
+
+CV(0) // expands to nothing
+CV(1) // expands to const
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/expr_iif.html b/third_party/boostorg/preprocessor/doc/ref/expr_iif.html
new file mode 100644
index 0000000..b3cca48
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/expr_iif.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_EXPR_IIF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_EXPR_IIF</b> macro expands to its second argument if its first argument is <i>1</i> and expands to nothing if its first argument is <i>0</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_EXPR_IIF</b>(<i>bit</i>, <i>expr</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>bit</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ This value must expand to <i>0</i> or </i>1</i>.
+ </dd>
+ <dt>expr</dt>
+ <dd>
+ The result of the expansion if <i>bit</i> is <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on its first argument.
+ If that conversion is necessary, use <b>BOOST_PP_EXPR_IF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="expr_if.html">BOOST_PP_EXPR_IF</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/control/expr_iif.html"><boost/preprocessor/control/expr_iif.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/and.html">boost/preprocessor/logical/and.hpp</a>>
+#include <<a href="../headers/control/expr_iif.html">boost/preprocessor/control/expr_iif.hpp</a>>
+
+#define INSERT_AND(p, q, text) \
+ <a href="expr_iif.html">BOOST_PP_EXPR_IIF</a>( \
+ <a href="and.html">BOOST_PP_AND</a>(p, q), \
+ text \
+ ) \
+ /**/
+
+INSERT_AND(2, 3, abc) // expands to abc
+INSERT_AND(0, 7, xyz) // expands to nothing
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/filename_x.html b/third_party/boostorg/preprocessor/doc/ref/filename_x.html
new file mode 100644
index 0000000..a902d80
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/filename_x.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <title>BOOST_PP_FILENAME_x</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FILENAME_<i>x</i></b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_ITERATE</b>.
+ It denotes the file to be iterated over.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_FILENAME_<i>x</i></b> <i>filename</i>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The iteration depth of the next <i>file-iteration</i>.
+ This value <i>must</i> be the current iteration depth + <i>1</i>.
+ </dd>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to used as the target of a <i>file-iteration</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is part of the secondary method of passing arguments to <b>BOOST_PP_ITERATE</b>.
+ The other part is <b>BOOST_PP_ITERATION_LIMITS</b>.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="iterate.html">BOOST_PP_ITERATE</a></li>
+ <li><a href="iteration_limits.html">BOOST_PP_ITERATION_LIMITS</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/for.html b/third_party/boostorg/preprocessor/doc/ref/for.html
new file mode 100644
index 0000000..271ce8c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/for.html
@@ -0,0 +1,105 @@
+<html>
+<head>
+ <title>BOOST_PP_FOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FOR</b> macro represents a generalized horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FOR</b>(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>state</dt>
+ <dd>
+ The initial state.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A binary predicate of the form <i>pred</i>(<i>r</i>, <i>state</i>).
+ This macro must expand to an integer in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ <b>BOOST_PP_FOR</b> repeatedly expands <i>macro</i> while this predicate returns non-zero.
+ This macro is called with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A binary operation of the form <i>op</i>(<i>r</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A binary macro of the form <i>macro</i>(<i>r</i>, <i>state</i>).
+ This macro is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is is repeated by <b>BOOST_PP_FOR</b> until <i>pred</i> returns <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>state</i>) <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, <i>state</i>)) ... <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, ... <i>op</i>(<i>r</i>, <i>state</i>) ... ))
+ </div>
+ </div>
+ <div>
+ The <i>r</i> value that is passed to <i>pred</i>, <i>op</i>, and <i>macro</i> represents the next available <b>BOOST_PP_FOR</b> repetition.
+ Other macros that have <b>_R</b> suffix variants internally use <b>BOOST_PP_FOR</b>--for example, <b>BOOST_PP_LIST_FOR_EACH</b> and <b>BOOST_PP_LIST_FOR_EACH_R</b>.
+ Using these <b>_R</b> versions is not strictly necessary, but passing the <i>r</i> value (that is passed to <i>pred</i>, <i>op</i>, and <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>r</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_FOR_<i>r</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_FOR</b>.
+ This limitation no longer exists, as the library can automatically detect the next available <b>BOOST_PP_FOR</b> repetition.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="for_r.html">BOOST_PP_FOR_<i>r</i></a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/for.html"><boost/preprocessor/repetition/for.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/comparison/not_equal.html">boost/preprocessor/comparison/not_equal.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(r, state) \
+ <a href="not_equal.html">BOOST_PP_NOT_EQUAL</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state), \
+ <a href="inc.html">BOOST_PP_INC</a>(<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, state)) \
+ ) \
+ /**/
+
+#define OP(r, state) \
+ ( \
+ <a href="inc.html">BOOST_PP_INC</a>(<a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state)), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, state) \
+ ) \
+ /**/
+
+#define MACRO(r, state) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state)
+
+<a href="for.html">BOOST_PP_FOR</a>((5, 10), PRED, OP, MACRO) // expands to 5 6 7 8 9 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/for_r.html b/third_party/boostorg/preprocessor/doc/ref/for_r.html
new file mode 100644
index 0000000..4014a53
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/for_r.html
@@ -0,0 +1,148 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_FOR_r</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_FOR_<i>r</i></b> macro
+ represents a reentry into the <b>BOOST_PP_FOR</b> repetition construct. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_FOR_</b> ## <i>r</i>(<i>state</i>, <i>pred</i>,
+ <i>op</i>, <i>macro</i>) </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd> The next available <b>BOOST_PP_FOR</b> repetition. </dd>
+ <dt>state</dt>
+ <dd> The initial state. </dd>
+ <dt>pred</dt>
+ <dd> A binary predicate of the form <i>pred</i>(<i>r</i>, <i>state</i>).
+ This macro must expand to an integer in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ <b>BOOST_PP_FOR</b> repeatedly expands <i>macro</i> while this
+ predicate returns non-zero. This macro is called with the next
+ available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd> A binary operation of the form <i>op</i>(<i>r</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_FOR</b> with the next
+ available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time
+ producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>. </dd>
+ <dt>macro</dt>
+ <dd> A binary macro of the form <i>macro</i>(<i>r</i>, <i>state</i>).
+ This macro is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b>
+ repetition and the current <i>state</i>. This macro is is
+ repeated by <b>BOOST_PP_FOR</b> until <i>pred</i> returns <i>0</i>. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro expands to the sequence:
+ <div> <i>macro</i>(<i>r</i>, <i>state</i>) <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>,
+ <i>state</i>)) ... <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, ... <i>op</i>(<i>r</i>,
+ <i>state</i>) ... )) </div>
+ </div>
+ <div> At certain times, it may be necessary to perform the concatenation
+ with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting
+ operator. This happens when the <i>r</i> value is a macro
+ invocation itself. It needs a delay to allow it to expand. The
+ syntax in such a scenario becomes:
+ <div> <b>BOOST_PP_CAT</b>(<b>BOOST_PP_FOR_</b>, <i>r</i>)(<i>state</i>,
+ <i>pred</i>, <i>op</i>, <i>macro</i>) </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="for.html">BOOST_PP_FOR</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="for_r_macros.html"><span style="color: gray;">Macros with R
+ re-entrancy forms</span></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/repetition/for.html"><boost/preprocessor/repetition/for.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/comparison/not_equal.html">boost/preprocessor/comparison/not_equal.hpp</a>>
+#include <<a href="../headers/punctuation/comma_if.html">boost/preprocessor/punctuation/comma_if.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(r, state) \
+ <a href="not_equal.html">BOOST_PP_NOT_EQUAL</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, state), \
+ <a href="inc.html">BOOST_PP_INC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 1, state) \
+ ) \
+ ) \
+ /**/
+
+#define OP(r, state) \
+ ( \
+ <a href="inc.html">BOOST_PP_INC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, state) \
+ ), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 1, state), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 2, state), \
+ <a href="inc.html">BOOST_PP_INC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 3, state) \
+ ) \
+ ) \
+ /**/
+
+#define MACRO(r, state) \
+ <a href="comma_if.html">BOOST_PP_COMMA_IF</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 3, state) \
+ ) template< \
+ <a href="for_r.html">BOOST_PP_FOR_</a> ## r( \
+ (0, <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, state), _, 0), \
+ PRED_2, OP, MACRO_2 \
+ ) \
+ > class <a href="cat.html">BOOST_PP_CAT</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 2, state), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, state) \
+ ) \
+ /**/
+
+#define PRED_2(r, state) \
+ <a href="not_equal.html">BOOST_PP_NOT_EQUAL</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, state), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 1, state) \
+ ) \
+ /**/
+
+#define MACRO_2(r, state) \
+ <a href="comma_if.html">BOOST_PP_COMMA_IF</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, state) \
+ ) class \
+ /**/
+
+#define TEMPLATE_TEMPLATE(low, high, name) \
+ <a href="for.html">BOOST_PP_FOR</a>( \
+ (low, high, name, 0), \
+ PRED, OP, MACRO \
+ ) \
+ /**/
+
+TEMPLATE_TEMPLATE(2, 4, T)
+/*
+ expands to...
+ template<class, class> class T2,
+ template<class, class, class> class T3,
+ template<class, class, class, class> class T4
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2014</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/for_r_macros.html b/third_party/boostorg/preprocessor/doc/ref/for_r_macros.html
new file mode 100644
index 0000000..e5dda58
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/for_r_macros.html
@@ -0,0 +1,44 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_FOR_r_macros</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>This is a list, based on functionality, of the macros which have an
+ alternate <b>_<i>r</i></b> name, representing a reentry into the <b>BOOST_PP_FOR</b>
+ looping construct:
+ <p>repetition</p>
+ <ul>
+ <li><a href="deduce_r.html">BOOST_PP_DEDUCE_R</a></li>
+ </ul>
+ list<br>
+ <ul>
+ <li><a href="list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
+ <li><a href="list_for_each_i_r.html">BOOST_PP_LIST_FOR_EACH_I_R</a></li>
+ <li><a href="list_for_each_product_r.html">BOOST_PP_LIST_FOR_EACH_PRODUCT_R</a></li>
+ <li><a href="list_for_each_r.html">BOOST_PP_LIST_FOR_EACH_R</a></li>
+ <li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ_R</a></li>
+ <li><a href="list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
+ </ul>
+ seq<br>
+ <ul>
+ <li><a href="seq_for_each_product_r.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</a></li>
+ <li><a href="seq_for_each_r.html">BOOST_PP_SEQ_FOR_EACH_R</a></li>
+ </ul>
+ base<br>
+ <ul>
+ <li><a href="for_r.html">BOOST_PP_FOR_R</a><br>
+ </li>
+ </ul>
+ <br>
+ <ul>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/frame_finish.html b/third_party/boostorg/preprocessor/doc/ref/frame_finish.html
new file mode 100644
index 0000000..de3f324
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/frame_finish.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_FINISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_FINISH</b> macro expands to the upper bound of an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_FINISH</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose upper bound is to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/frame_flags.html b/third_party/boostorg/preprocessor/doc/ref/frame_flags.html
new file mode 100644
index 0000000..9b1a22b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/frame_flags.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_FLAGS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_FLAGS</b> macro expands to the flags associated with an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_FLAGS</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose flags are to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/frame_iteration.html b/third_party/boostorg/preprocessor/doc/ref/frame_iteration.html
new file mode 100644
index 0000000..e7c06bd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/frame_iteration.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_ITERATION</b> macro expands to the iteration value of an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_ITERATION</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose iteration value is to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 10, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1
+
+ --
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_2</a> \
+ (3, (1, <a href="iteration.html">BOOST_PP_ITERATION</a>(), "file.h")) \
+ /**/
+
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+#else
+
+ outer: <a href="frame_iteration.html">BOOST_PP_FRAME_ITERATION</a>(1)
+ inner: <a href="frame_iteration.html">BOOST_PP_FRAME_ITERATION</a>(2)
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/frame_start.html b/third_party/boostorg/preprocessor/doc/ref/frame_start.html
new file mode 100644
index 0000000..f9eb80a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/frame_start.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_FRAME_START</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_FRAME_START</b> macro expands to the lower bound of an absolute <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_FRAME_START</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The absolute depth of the frame whose lower bound is to be retreived.
+ Valid values range from <i>1</i> to <b>BOOST_PP_ITERATION_DEPTH</b>().
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/greater.html b/third_party/boostorg/preprocessor/doc/ref/greater.html
new file mode 100644
index 0000000..618e524
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/greater.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER</b> macro compares two values for greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_GREATER_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="greater_d.html">BOOST_PP_GREATER_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/greater.html"><boost/preprocessor/comparison/greater.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/greater.html">boost/preprocessor/comparison/greater.hpp</a>>
+
+<a href="greater.html">BOOST_PP_GREATER</a>(4, 3) // expands to 1
+<a href="greater.html">BOOST_PP_GREATER</a>(5, 5) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/greater_d.html b/third_party/boostorg/preprocessor/doc/ref/greater_d.html
new file mode 100644
index 0000000..2069aad
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/greater_d.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER_D</b> macro compares two values for greater magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="greater.html">BOOST_PP_GREATER</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/greater.html"><boost/preprocessor/comparison/greater.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/greater.html">boost/preprocessor/comparison/greater.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+
+#define LIST (1, (2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define PRED(d, _, num) <a href="greater_d.html">BOOST_PP_GREATER_D</a>(d, num, 2)
+
+<a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(PRED, nil, LIST) // expands to (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/greater_equal.html b/third_party/boostorg/preprocessor/doc/ref/greater_equal.html
new file mode 100644
index 0000000..56dd7e4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/greater_equal.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER_EQUAL</b> macro compares two values for equality or greater magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_GREATER_EQUAL_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="greater_equal_d.html">BOOST_PP_GREATER_EQUAL_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/greater_equal.html"><boost/preprocessor/comparison/greater_equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/greater_equal.html">boost/preprocessor/comparison/greater_equal.hpp</a>>
+
+<a href="greater_equal.html">BOOST_PP_GREATER_EQUAL</a>(4, 3) // expands to 1
+<a href="greater_equal.html">BOOST_PP_GREATER_EQUAL</a>(5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/greater_equal_d.html b/third_party/boostorg/preprocessor/doc/ref/greater_equal_d.html
new file mode 100644
index 0000000..aa11b85
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/greater_equal_d.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_GREATER_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_GREATER_EQUAL_D</b> macro compares two values for equality or greater magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_GREATER_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is greater than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="greater_equal.html">BOOST_PP_GREATER_EQUAL</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/greater_equal.html"><boost/preprocessor/comparison/greater_equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/greater_equal.html">boost/preprocessor/comparison/greater_equal.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+
+#define LIST (1, (2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define PRED(d, _, num) <a href="greater_equal_d.html">BOOST_PP_GREATER_EQUAL_D</a>(d, num, 4)
+
+<a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(PRED, nil, LIST) // expands to (4, (5, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/identity.html b/third_party/boostorg/preprocessor/doc/ref/identity.html
new file mode 100644
index 0000000..82b9b29
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/identity.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_IDENTITY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IDENTITY</b> macro expands to its argument when invoked.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IDENTITY</b>(<i>item</i>)()
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>item</dt>
+ <dd>
+ The result of the expansion.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is designed to be used with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b> when only one of the clauses needs to be invoked.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="if.html">BOOST_PP_IF</a></li>
+ <li><a href="iif.html">BOOST_PP_IIF</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/facilities/identity.html"><boost/preprocessor/facilities/identity.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>>
+#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>>
+#include <<a href="../headers/facilities/identity.html">boost/preprocessor/facilities/identity.hpp</a>>
+
+#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, <a href="identity.html">BOOST_PP_IDENTITY</a>(x), <a href="empty.html">BOOST_PP_EMPTY</a>)()
+
+MACRO(0) // expands to nothing
+MACRO(1) // expands to x
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/identity_n.html b/third_party/boostorg/preprocessor/doc/ref/identity_n.html
new file mode 100644
index 0000000..13fc5e0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/identity_n.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_IDENTITY_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IDENTITY_N</b> macro expands to its first argument when invoked.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IDENTITY_N</b>(<i>item,n</i>)(n-arguments)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>item</dt>
+ <dd>
+ The result of the expansion.
+ </dd>
+ <dt>n</dt>
+ <dd>
+ The number of arguments when invoked.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is designed to be used with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b> when only one of the clauses needs to be invoked.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="if.html">BOOST_PP_IF</a></li>
+ <li><a href="iif.html">BOOST_PP_IIF</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/facilities/identity.html"><boost/preprocessor/facilities/identity.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>>
+#include <<a href="../headers/facilities/identity.html">boost/preprocessor/facilities/identity.hpp</a>>
+
+#define MACRO_CAT(y,z) y ## z
+#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, <a href="identity_n.html">BOOST_PP_IDENTITY_N</a>(x,2), MACRO_CAT)(a,b)
+
+MACRO(0) // expands to ab
+MACRO(1) // expands to x
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px"><i>© Copyright Edward Diener 2015</i></div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/if.html b/third_party/boostorg/preprocessor/doc/ref/if.html
new file mode 100644
index 0000000..6f389c9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/if.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IF</b> macro chooses between to values based on a logical condition.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IF</b>(<i>cond</i>, <i>t</i>, <i>f</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>t</dt>
+ <dd>
+ The result of the expansion if <i>cond</i> is non-zero.
+ </dd>
+ <dt>f</dt>
+ <dd>
+ The result of the expansion if <i>cond</i> is <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro performs a boolean conversion on its first argument.
+ If that conversion is unnecessary, use <b>BOOST_PP_IIF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="iif.html">BOOST_PP_IIF</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/control/if.html"><boost/preprocessor/control/if.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>>
+
+<a href="if.html">BOOST_PP_IF</a>(10, a, b) // expands to a
+<a href="if.html">BOOST_PP_IF</a>(0, a, b) // expands to b
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iif.html b/third_party/boostorg/preprocessor/doc/ref/iif.html
new file mode 100644
index 0000000..8c8f744
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iif.html
@@ -0,0 +1,66 @@
+<html>
+<head>
+ <title>BOOST_PP_IIF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IIF</b> macro chooses between to values based on a bitwise condition.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_IIF</b>(<i>bit</i>, <i>t</i>, <i>f</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>bit</dt>
+ <dd>
+ The condition that determines if the result is <i>expr</i> or nothing.
+ This value must expand to <i>0</i> or <i>1</i>.
+ </dd>
+ <dt>t</dt>
+ <dd>
+ The result of the expansion if <i>bit</i> is <i>1</i>.
+ </dd>
+ <dt>f</dt>
+ <dd>
+ The result of the expansion if <i>bit</i> is <i>0</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro <i>does not</i> perform a boolean conversion on its first argument.
+ If that conversion is necessary, use <b>BOOST_PP_IF</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="if.html">BOOST_PP_IF</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/control/iif.html"><boost/preprocessor/control/iif.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/iif.html">boost/preprocessor/control/iif.hpp</a>>
+#include <<a href="../headers/logical/or.html">boost/preprocessor/logical/or.hpp</a>>
+
+#define OR_IF(p, q, t, f) <a href="iif.html">BOOST_PP_IIF</a>(<a href="or.html">BOOST_PP_OR</a>(p, q), t, f)
+
+OR_IF(1, 0, abc, xyz) // expands to abc
+OR_IF(0, 0, abc, xyz) // expands to xyz
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/inc.html b/third_party/boostorg/preprocessor/doc/ref/inc.html
new file mode 100644
index 0000000..9848c49
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/inc.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <title>BOOST_PP_INC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INC</b> macro expands to one more than its argument.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_INC</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be incremented.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="dec.html">BOOST_PP_DEC</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/inc.html"><boost/preprocessor/arithmetic/inc.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+
+<a href="inc.html">BOOST_PP_INC</a>(<a href="inc.html">BOOST_PP_INC</a>(6)) // expands to 8
+<a href="inc.html">BOOST_PP_INC</a>(4) // expands to 5
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/include_self.html b/third_party/boostorg/preprocessor/doc/ref/include_self.html
new file mode 100644
index 0000000..ce13c33
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/include_self.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <title>BOOST_PP_INCLUDE_SELF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INCLUDE_SELF</b> macro includes a file indirectly.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_INCLUDE_SELF</b>()
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to be included by <b>BOOST_PP_INCLUDE_SELF</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ <b>BOOST_PP_INDIRECT_SELF</b> must be defined prior to using this macro.
+ </div>
+ <div>
+ Most preprocessors will not allow a file to directly include itself--even when the file protects itself from such a scenario.
+ This macro, in combination with <b>BOOST_PP_INDIRECT_SELF</b> allows a file to include itself indirectly.
+ </div>
+ <div>
+ While <b>BOOST_PP_INDIRECT_SELF</b> is being included, <b>BOOST_PP_INCLUDE_SELF</b> defines the macro <b>BOOST_PP_IS_SELFISH</b> to <i>1</i>.
+ When it returns from the inclusion, <b>BOOST_PP_IS_SELFISH</b> is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="indirect_self.html">BOOST_PP_INDIRECT_SELF</a></li>
+ <li><a href="is_selfish.html">BOOST_PP_IS_SELFISH</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/self.html"><boost/preprocessor/iteration/self.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_selfish.html">BOOST_PP_IS_SELFISH</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/self.html">boost/preprocessor/iteration/self.hpp</a>>
+
+ #define NAME X
+ struct NAME {
+ // ...
+ #define <a href="indirect_self.html">BOOST_PP_INDIRECT_SELF</a> "file.h"
+ #include <a href="include_self.html">BOOST_PP_INCLUDE_SELF</a>()
+ };
+
+ #define NAME Y
+ struct NAME {
+ // ...
+ #define <a href="indirect_self.html">BOOST_PP_INDIRECT_SELF</a> "file.h"
+ #include <a href="include_self.html">BOOST_PP_INCLUDE_SELF</a>()
+ };
+
+ #define NAME Z
+ struct NAME {
+ // ...
+ #define <a href="indirect_self.html">BOOST_PP_INDIRECT_SELF</a> "file.h"
+ #include <a href="include_self.html">BOOST_PP_INCLUDE_SELF</a>()
+ };
+
+ #endif
+
+#else
+
+ inline bool validate(NAME* p) {
+ return true;
+ }
+
+ template<class T> bool validate(T* p) {
+ return dynamic_cast<NAME*>(p);
+ }
+
+ #undef NAME
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/indirect_self.html b/third_party/boostorg/preprocessor/doc/ref/indirect_self.html
new file mode 100644
index 0000000..8f670e2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/indirect_self.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <title>BOOST_PP_INDIRECT_SELF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INDIRECT_SELF</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_INCLUDE_SELF</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_INDIRECT_SELF</b> <i>filename</i>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to be included by <b>BOOST_PP_INCLUDE_SELF</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Most preprocessors will not allow a file to directly include itself--even when the file protects itself from such a scenario.
+ This macro, in combination with <b>BOOST_PP_INCLUDE_SELF</b> allows a file to include itself indirectly.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_INCLUDE_SELF</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="include_self.html">BOOST_PP_INCLUDE_SELF</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/intercept.html b/third_party/boostorg/preprocessor/doc/ref/intercept.html
new file mode 100644
index 0000000..e0673e1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/intercept.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_INTERCEPT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_INTERCEPT</b> macro intercepts a numeric concatenation and expands to nothing.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_INTERCEPT</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is used to intercept concatenations performed by various other library constructs.
+ It is typically used after other text to prevent eat the concatenation expand to nothing.
+ This macro can only intercept integer constants in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/facilities/intercept.html"><boost/preprocessor/facilities/intercept.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/facilities/intercept.html">boost/preprocessor/facilities/intercept.hpp</a>>
+#include <<a href="../headers/repetition/enum_binary_params.html">boost/preprocessor/repetition/enum_binary_params.hpp</a>>
+
+<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, class T, = U)
+// expands to class T0 = U0, class T1 = U1, class T2 = U2
+
+<a href="enum_binary_params.html">BOOST_PP_ENUM_BINARY_PARAMS</a>(3, class T, = int <a href="intercept.html">BOOST_PP_INTERCEPT</a>)
+// expands to class T0 = int, class T1 = int, class T2 = int
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/is_begin_parens.html b/third_party/boostorg/preprocessor/doc/ref/is_begin_parens.html
new file mode 100644
index 0000000..0e0b39c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/is_begin_parens.html
@@ -0,0 +1,47 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_IS_BEGIN_PARENS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_IS_BEGIN_PAREN</b>S
+ determines whether the input starts with a set of parenthesis.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_IS_BEGIN_PARENS</b>(...) <a href="../topics/variadic_macros.html#VNotation"
+ target="_self"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <h4> ... <span style="font-weight: normal;">
+ The input as variadic data.</span></h4>
+ <h4>Remarks</h4>
+ <div> If the input input begins with a parenthesis, with any data within
+ that parenthesis, the macro returns 1, otherwise it returns 0. Data may
+ follow the beginning parenthesis and the macro still will return 1.<br>
+ <br>
+ For Visual Studio 2005 ( VC8 ) the input data must be a single parameter
+ else a compilation error will occur.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="remove_parens.html">BOOST_PP_REMOVE_PARENS</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/punctuation/is_begin_parens.html"><boost/preprocessor/punctuation/is_begin_parens.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/punctuation/is_begin_parens.html">boost/preprocessor/punctuation/is_begin_parens.hpp</a>>
+
+#define VARDATA more_data , more_params<br>#define VARDATAP ( data ) more_data , more_params<br>#define DATA data<br>#define DATAP ( data ) more_data<br>
+BOOST_PP_IS_BEGIN_PARENS(VARDATA) // expands to 0, compiler error with VC8
+BOOST_PP_IS_BEGIN_PARENS(VARDATAP) // expands to 1, compiler error with VC8<br><br>BOOST_PP_IS_BEGIN_PARENS(DATA) // expands to 0
+BOOST_PP_IS_BEGIN_PARENS(DATAP) // expands to 1<br><br>BOOST_PP_IS_BEGIN_PARENS() // expands to 0<br>
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/is_iterating.html b/third_party/boostorg/preprocessor/doc/ref/is_iterating.html
new file mode 100644
index 0000000..6e37677
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/is_iterating.html
@@ -0,0 +1,38 @@
+<html>
+<head>
+ <title>BOOST_PP_IS_ITERATING</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IS_ITERATING</b> macro is defined when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #if !defined(<b>BOOST_PP_IS_ITERATING</b>) // ...
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ If a <i>file-iteration</i> is in progress, this macro is defined as <i>1</i>.
+ This means that the following will also work:
+ <div>
+ #if !<b>BOOST_PP_IS_ITERATING</b> // ...
+ </div>
+ </div>
+ <div>
+ This macro is defined to guard a file from infinite inclusion.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/is_selfish.html b/third_party/boostorg/preprocessor/doc/ref/is_selfish.html
new file mode 100644
index 0000000..0422084
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/is_selfish.html
@@ -0,0 +1,38 @@
+<html>
+<head>
+ <title>BOOST_PP_IS_SELFISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_IS_SELFISH</b> macro is defined when a <i>self-inclusion</i> is in progress.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #if !defined(<b>BOOST_PP_IS_SELFISH</b>) // ...
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ If a <i>self-inclusion</i> is in progress, this macro is defined as <i>1</i>.
+ This means that the following will also work:
+ <div>
+ #if !<b>BOOST_PP_IS_SELFISH</b> // ...
+ </div>
+ </div>
+ <div>
+ This macro is defined to guard a file from infinite inclusion.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iterate.html b/third_party/boostorg/preprocessor/doc/ref/iterate.html
new file mode 100644
index 0000000..6802849
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iterate.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATE</b> macro initiates a <i>file-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_ITERATE</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ Arguments to this macro are passed as <i>external named arguments</i> in one of two
+ ways--either through <b>BOOST_PP_FILENAME_<i>x</i></b> and <b>BOOST_PP_ITERATION_LIMITS</b> <i>or</i>
+ through <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ </div>
+ <div>
+ Three pieces of information are required to perform a <i>file-iteration</i>.
+ First, the name of a file to iterate over.
+ This is passed via <b>BOOST_PP_FILENAME_<i>x</i></b> <i>or</i> as part of <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ The <i>file-iteration</i> mechanism will repeatedly include this file with iteration values ranging from a lower bound to an upper bound--the second and third <i>required</i> parameters.
+ These two boundaries are either passed through <b>BOOST_PP_ITERATION_LIMITS</b> <i>or</i> as part of <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ </div>
+ <div>
+ Optionally, a fourth parameter may be passed that associates flags with an iteration.
+ These flags are primarily useful to distinguish one iteration from another in the same file.
+ This parameter can only be passed through <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>.
+ </div>
+ <div>
+ While a <i>file-iteration</i> is in progress, <b>BOOST_PP_IS_ITERATING</b> is defined as <i>1</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="filename_x.html">BOOST_PP_FILENAME_<i>x</i></a></li>
+ <li><a href="is_iterating.html">BOOST_PP_IS_ITERATING</a></li>
+ <li><a href="iteration_limits.html">BOOST_PP_ITERATION_LIMITS</a></li>
+ <li><a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_<i>x</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 10, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #define <a href="filename_x.html">BOOST_PP_FILENAME_1</a> "file.h"
+ #define <a href="iteration_limits.html">BOOST_PP_ITERATION_LIMITS</a> (11, 20)
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#else
+
+ current iteration value is <a href="iteration.html">BOOST_PP_ITERATION</a>()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration.html b/third_party/boostorg/preprocessor/doc/ref/iteration.html
new file mode 100644
index 0000000..f3c4312
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION</b> macro expands to the iteration value of the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 3, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1
+
+ value == <a href="iteration.html">BOOST_PP_ITERATION</a>()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration_depth.html b/third_party/boostorg/preprocessor/doc/ref/iteration_depth.html
new file mode 100644
index 0000000..2aa1ca8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration_depth.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_DEPTH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_DEPTH</b> macro expands to the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_DEPTH</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ If a <i>file-iteration</i> is not in progress, this macro expands to <i>0</i>.
+ Otherwise, it expands to the current depth of <i>file-iteration</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="frame_iteration.html">BOOST_PP_FRAME_ITERATION</a></li>
+ <li><a href="relative_iteration.html">BOOST_PP_RELATIVE_ITERATION</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 3, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1
+
+ + depth <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>()
+ // ...
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_2</a> \
+ (3, (1, <a href="iteration.html">BOOST_PP_ITERATION</a>(), "file.h")) \
+ /**/
+
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 2
+
+ - depth <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>()
+ // ...
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration_finish.html b/third_party/boostorg/preprocessor/doc/ref/iteration_finish.html
new file mode 100644
index 0000000..517ccbc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration_finish.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_FINISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_FINISH</b> macro expands to the upper bound of the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_FINISH</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 10, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1
+
+ start -> <a href="iteration_start.html">BOOST_PP_ITERATION_START</a>()
+ iteration -> <a href="iteration.html">BOOST_PP_ITERATION</a>()
+ finish -> <a href="iteration_finish.html">BOOST_PP_ITERATION_FINISH</a>()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration_flags.html b/third_party/boostorg/preprocessor/doc/ref/iteration_flags.html
new file mode 100644
index 0000000..8ea4166
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration_flags.html
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_FLAGS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_FLAGS</b> macro retrieves flags associated with the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_FLAGS</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ // 1st iteration:
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (4, (1, 10, "file.h", 0x0001))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ // 2nd iteration:
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (4, (1, 10, "file.h", 0x0002))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1 \
+ && <a href="iteration_flags.html">BOOST_PP_ITERATION_FLAGS</a>() == 0x0001 \
+ /**/
+
+ { 1st }
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1 \
+ && <a href="iteration_flags.html">BOOST_PP_ITERATION_FLAGS</a>() == 0x0002 \
+ /**/
+
+ { 2nd }
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration_limits.html b/third_party/boostorg/preprocessor/doc/ref/iteration_limits.html
new file mode 100644
index 0000000..a02a3f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration_limits.html
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_LIMITS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_LIMITS</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_ITERATE</b>.
+ It denotes the lower and upper bounds of a <i>file-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_ITERATION_LIMITS</b> (<i>start</i>, <i>finish</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>start</dt>
+ <dd>
+ The lower bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>finish</dt>
+ <dd>
+ The upper bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Note that there is a whitespace character after the macro identifier.
+ </div>
+ <div>
+ This macro is part of the secondary method of passing arguments to <b>BOOST_PP_ITERATE</b>.
+ The other part is <b>BOOST_PP_FILENAME_<i>x</i></b>. Both <i>start</i> and <i>finish</i> are <i>evaluated parameters</i>.
+ This implies that they may include simple arithmetic.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="filename_x.html">BOOST_PP_FILENAME_<i>x</i></a></li>
+ <li><a href="iterate.html">BOOST_PP_ITERATE</a></li>
+ <li><a href="limit_iteration.html">BOOST_PP_LIMIT_ITERATION</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration_params_x.html b/third_party/boostorg/preprocessor/doc/ref/iteration_params_x.html
new file mode 100644
index 0000000..083c2c7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration_params_x.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_PARAMS_x</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_ITERATE</b>.
+ It denotes the lower bound, upper bound, and the filename of a <i>file-iteration</i>. It can optionally denote flags associated with a <i>file-iteration</i> as well.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b> (<i>c</i>, (<i>start</i>, <i>finish</i>, <i>filename</i> [, <i>flags</i>]))
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The iteration depth of the next <i>file-iteration</i>.
+ This value <i>must</i> be the current iteration depth + <i>1</i>.
+ </dd>
+ <dt>c</dt>
+ <dd>
+ The number of parameters.
+ If <i>flags</i> is specified, this value must be <i>4</i>.
+ Otherwise, it must be <i>3</i>.
+ </dd>
+ <dt>start</dt>
+ <dd>
+ The lower bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>finish</dt>
+ <dd>
+ The upper bound (inclusive) of a <i>file-iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>filename</dt>
+ <dd>
+ A quoted or angle-bracketed filename to used as the target of a <i>file-iteration</i>.
+ </dd>
+ <dt>[flags]</dt>
+ <dd>
+ The flags associated with this <i>file-iteration</i> used to discriminate between different <i>file-iterations</i> in the same file.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Note that there is a whitespace character after the macro identifier.
+ </div>
+ <div>
+ This macro is must be defined as an <i>array</i> of arguments in one of the two formats above (with or without <i>flags</i>).
+ It is the primary method of passing arguments to <b>BOOST_PP_ITERATE</b>.
+ Both <i>start</i> and <i>finish</i> are <i>evaluated parameters</i>, which implies that simple arithmetic can be used.
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="iterate.html">BOOST_PP_ITERATE</a></li>
+ <li><a href="limit_iteration.html">BOOST_PP_LIMIT_ITERATION</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/iteration_start.html b/third_party/boostorg/preprocessor/doc/ref/iteration_start.html
new file mode 100644
index 0000000..0a870a2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/iteration_start.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <title>BOOST_PP_ITERATION_START</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_ITERATION_START</b> macro expands to the lower bound of the current <i>file-iteration</i> depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_ITERATION_START</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 10, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1
+
+ start -> <a href="iteration_start.html">BOOST_PP_ITERATION_START</a>()
+ iteration -> <a href="iteration.html">BOOST_PP_ITERATION</a>()
+ finish -> <a href="iteration_finish.html">BOOST_PP_ITERATION_FINISH</a>()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/less.html b/third_party/boostorg/preprocessor/doc/ref/less.html
new file mode 100644
index 0000000..2c5e690
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/less.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS</b> macro compares two values for lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is less than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LESS_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="less_d.html">BOOST_PP_LESS_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/less.html"><boost/preprocessor/comparison/less.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/less.html">boost/preprocessor/comparison/less.hpp</a>>
+
+<a href="less.html">BOOST_PP_LESS</a>(4, 3) // expands to 0
+<a href="less.html">BOOST_PP_LESS</a>(3, 4) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/less_d.html b/third_party/boostorg/preprocessor/doc/ref/less_d.html
new file mode 100644
index 0000000..bc49981
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/less_d.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS_D</b> macro compares two values for lesser magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is less than <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="less.html">BOOST_PP_LESS</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/less.html"><boost/preprocessor/comparison/less.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/less.html">boost/preprocessor/comparison/less.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+
+#define LIST (1, (2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define PRED(d, _, num) <a href="less_d.html">BOOST_PP_LESS_D</a>(d, num, 3)
+
+<a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(PRED, nil, LIST)
+ // expands to (1, (2, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/less_equal.html b/third_party/boostorg/preprocessor/doc/ref/less_equal.html
new file mode 100644
index 0000000..5569786
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/less_equal.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS_EQUAL</b> macro compares two values for equality or lesser magnitude.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is lesser than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LESS_EQUAL_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="less_equal_d.html">BOOST_PP_LESS_EQUAL_D</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/less_equal.html"><boost/preprocessor/comparison/less_equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/less_equal.html">boost/preprocessor/comparison/less_equal.hpp</a>>
+
+<a href="less_equal.html">BOOST_PP_LESS_EQUAL</a>(4, 3) // expands to 0
+<a href="less_equal.html">BOOST_PP_LESS_EQUAL</a>(5, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/less_equal_d.html b/third_party/boostorg/preprocessor/doc/ref/less_equal_d.html
new file mode 100644
index 0000000..04e02d0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/less_equal_d.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_LESS_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LESS_EQUAL_D</b> macro compares two values for equality or lesser magnitude.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LESS_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is less than or equal to <i>y</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="less_equal.html">BOOST_PP_LESS_EQUAL</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/less_equal.html"><boost/preprocessor/comparison/less_equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/less_equal.html">boost/preprocessor/comparison/less_equal.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+
+#define LIST (1, (2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define PRED(d, _, num) <a href="less_equal_d.html">BOOST_PP_LESS_EQUAL_D</a>(d, num, 4)
+
+<a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(PRED, nil, LIST)
+ // expands to (1, (2, (3, (4, <a href="nil.html">BOOST_PP_NIL</a>))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_dim.html b/third_party/boostorg/preprocessor/doc/ref/limit_dim.html
new file mode 100644
index 0000000..b621548
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_dim.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_DIM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_DIM</b> macro defines the maximum number of available <b>BOOST_PP_REPEAT</b> dimensions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_DIM</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>3</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_for.html b/third_party/boostorg/preprocessor/doc/ref/limit_for.html
new file mode 100644
index 0000000..07eadc6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_for.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_FOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_FOR</b> macro defines the maximum number of <b>BOOST_PP_FOR</b> repetitions.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_FOR</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_iteration.html b/third_party/boostorg/preprocessor/doc/ref/limit_iteration.html
new file mode 100644
index 0000000..5cd8b87
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_iteration.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_ITERATION</b> macro defines the maximum number of <i>local</i> and <i>file</i> iterations.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_ITERATION</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_iteration_dim.html b/third_party/boostorg/preprocessor/doc/ref/limit_iteration_dim.html
new file mode 100644
index 0000000..54d9c9c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_iteration_dim.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_ITERATION_DIM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_ITERATION_DIM</b> macro defines the maximum depth of <i>file-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_ITERATION_DIM</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>3</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_mag.html b/third_party/boostorg/preprocessor/doc/ref/limit_mag.html
new file mode 100644
index 0000000..d136f8c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_mag.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_MAG</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_MAG</b> macro defines the maximum input and result magnitudes of arithmetic.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_MAG</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_repeat.html b/third_party/boostorg/preprocessor/doc/ref/limit_repeat.html
new file mode 100644
index 0000000..b31272d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_repeat.html
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIMIT_REPEAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_REPEAT</b> macro
+ defines the maximum number of repetitions supported by each <b>BOOST_PP_REPEAT</b>
+ dimension. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_LIMIT_REPEAT</b> </div>
+ <h4>Remarks</h4>
+ <div> This macro current expands to <i>256</i>.<br>
+ <br>
+ NOTE: for the current latest versions of Microsoft's VC++ compiler there
+ is a nested macro limit of 256. This means in actuality that the number of
+ repetitions using VC++ is actually less than 256 depending on the
+ repetition macro being used. For the BOOST_PP_REPEAT macro this limit
+ appears to be 252 while for the BOOST_PP_ENUM... series of macros this
+ limit appears to be around 230, before the VC++ compiler gives a "C1009:
+ compiler limit : macros nested too deeply" error. This is a compiler
+ limitation of VC++ which may vary depending on the specific repetition
+ macro being used, and therefore is not a problem the preprocessor library
+ can solve.</div>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_seq.html b/third_party/boostorg/preprocessor/doc/ref/limit_seq.html
new file mode 100644
index 0000000..6535a4f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_seq.html
@@ -0,0 +1,41 @@
+<html>
+ <head>
+ <title>BOOST_PP_LIMIT_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_SEQ</b> macro defines the maximum <i>seq</i> size
+ supported by the library.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_SEQ</b>
+ </div>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_slot_count.html b/third_party/boostorg/preprocessor/doc/ref/limit_slot_count.html
new file mode 100644
index 0000000..feb09d1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_slot_count.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_SLOT_COUNT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_SLOT_COUNT</b> macro defines the number of available <i>evaluated slots</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_SLOT_COUNT</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>5</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_slot_sig.html b/third_party/boostorg/preprocessor/doc/ref/limit_slot_sig.html
new file mode 100644
index 0000000..94c9330
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_slot_sig.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_SLOT_SIG</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_SLOT_SIG</b> macro defines the number of significant base-10 digits that can be evaluated by the <i>slot</i> mechanism.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_SLOT_SIG</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>10</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_tuple.html b/third_party/boostorg/preprocessor/doc/ref/limit_tuple.html
new file mode 100644
index 0000000..a249727
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_tuple.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_TUPLE</b> macro defines the maximum <i>tuple</i> size supported by the library.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_TUPLE</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>64</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_variadic.html b/third_party/boostorg/preprocessor/doc/ref/limit_variadic.html
new file mode 100644
index 0000000..7fd3d04
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_variadic.html
@@ -0,0 +1,24 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_VARIADIC</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_VARIADIC</b> macro
+defines the maximum <i>variadic data</i> size supported by the library. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_LIMIT_VARIADIC</b> </div>
+<h4>Remarks</h4>
+<div> This macro currently expands to <i>64</i>. </div>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/limit_while.html b/third_party/boostorg/preprocessor/doc/ref/limit_while.html
new file mode 100644
index 0000000..8662b74
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/limit_while.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_LIMIT_WHILE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIMIT_WHILE</b> macro defines the maximum number of <b>BOOST_PP_WHILE</b> iterations.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIMIT_WHILE</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro currently expands to <i>256</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/config/limits.html"><boost/preprocessor/config/limits.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/line.html b/third_party/boostorg/preprocessor/doc/ref/line.html
new file mode 100644
index 0000000..39a90b7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/line.html
@@ -0,0 +1,112 @@
+<html>
+<head>
+ <title>BOOST_PP_LINE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LINE</b> macro places notes encoded as line directives in the preprocessing output.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #line <b>BOOST_PP_LINE</b>(<i>line</i>, <i>file</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>line</dt>
+ <dd>
+ The new line number of the trailing line.
+ The predefined macro <i>__LINE__</i> is commonly used.
+ </dd>
+ <dt>file</dt>
+ <dd>
+ Typically the name of the current file.
+ However, any informative text will work.
+ This text is internally stringized, so quotation marks are unnecessary.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the macro <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> is defined as <i>1</i> and a <i>file-iteration</i>
+ is in progress, this macro will automatically insert debugging information about the state of <i>file-iteration</i>.
+ This information will show the all of the current iteration values with the inner most iteration last.
+ </div>
+ <div>
+ This information is useful when errors might be spanning multiple iterations of the same source text.
+ Finding any errors is sometimes less than straightforward.
+ Use of this macro can provide information to make this much easier.
+ For example, instead of getting several errors like this:
+ <div><i>
+ "file.hpp", line 2: error: expected a ";"<br>
+ "file.hpp", line 4: error: improperly terminated macro invocation<br>
+ </i></div>
+ You might get something like this instead....
+ <i><div>
+ "file.hpp [1]", line 2: error: expected a ";"<br>
+ "file.hpp [5]", line 4: error: improperly terminated macro invocation<br>
+ </i></div>
+ It is immediately evident that this error is spanning multiple iterations of the same source text.
+ If it wasn't, the same errors would occur on each iteration.
+ </div>
+ <div>
+ It must be noted however, that some compilers don't like filenames that aren't actually files.
+ Those compilers typically issues warnings about the bad filename.
+ This makes it a good idea to only define <b>BOOST_PP_CONFIG_EXTENDED_LINE_INFO</b> to <i>1</i> <i>only</i> when debugging.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="config_extended_line_info.html">BOOST_PP_CONFIG_EXTENDED_LINE_INFO</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/debug/line.html"><boost/preprocessor/debug/line.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// sample.cpp
+#if !defined(<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>)
+
+ #define <a href="config_extended_line_info.html">BOOST_PP_CONFIG_EXTENDED_LINE_INFO</a> 1
+
+ #include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+ #include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+ #include <<a href="../headers/debug/line.html">boost/preprocessor/debug/line.hpp</a>>
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+ namespace sample {
+
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (3, (1, 5, "sample.cpp"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ } // sample
+
+ int main(void) {
+ return 0;
+ }
+
+#else
+
+ #line <a href="line.html">BOOST_PP_LINE</a>(1, sample.cpp)
+
+ int <a href="cat.html">BOOST_PP_CAT</a>(x, <a href="iteration.html">BOOST_PP_ITERATION</a>())); // extra parenthesis
+
+ struct <a href="cat.html">BOOST_PP_CAT</a>(s, <a href="dec.html">BOOST_PP_DEC</a>(<a href="iteration.html">BOOST_PP_ITERATION</a>()) {
+ // missing a parenthesis
+ // ...
+ };
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_append.html b/third_party/boostorg/preprocessor/doc/ref/list_append.html
new file mode 100644
index 0000000..733883a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_append.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_APPEND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_APPEND</b> macro appends two <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_APPEND</b>(<i>a</i>, <i>b</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>a</dt>
+ <dd>
+ The first <i>list</i>.
+ </dd>
+ <dt>b</dt>
+ <dd>
+ The second <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro appends two lists.
+ For example, if <i>a</i> is (<i>1</i>, (<i>2</i>, (<i>3</i>, <b>BOOST_PP_NIL</b>))) and <i>b</i> is (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)),
+ this macro will expand to:
+ <div>
+ (<i>1</i>, (<i>2</i>, (<i>3</i>, (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)))))
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_APPEND_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_append_d.html">BOOST_PP_LIST_APPEND_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/append.html"><boost/preprocessor/list/append.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/append.html">boost/preprocessor/list/append.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_append.html">BOOST_PP_LIST_APPEND</a>(L1, L2)
+ // expands to (a, (b, (c, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_append_d.html b/third_party/boostorg/preprocessor/doc/ref/list_append_d.html
new file mode 100644
index 0000000..065f099
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_append_d.html
@@ -0,0 +1,96 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_APPEND_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_APPEND_D</b> macro appends two <i>lists</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_APPEND_D</b>(<i>d</i>, <i>a</i>, <i>b</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>a</dt>
+ <dd>
+ The first <i>list</i>.
+ </dd>
+ <dt>b</dt>
+ <dd>
+ The second <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro appends two lists.
+ For example, if <i>a</i> is (<i>1</i>, (<i>2</i>, (<i>3</i>, <b>BOOST_PP_NIL</b>))) and <i>b</i> is (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)),
+ this macro will expand to:
+ <div>
+ (<i>1</i>, (<i>2</i>, (<i>3</i>, (<i>4</i>, (<i>5</i>, <b>BOOST_PP_NIL</b>)))))
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_append.html">BOOST_PP_LIST_APPEND</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/append.html"><boost/preprocessor/list/append.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/list/append.html">boost/preprocessor/list/append.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define LIST (1, (2, (3, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define PRED(d, state) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 1, state)
+
+#define OP(d, state) \
+ ( \
+ <a href="list_append_d.html">BOOST_PP_LIST_APPEND_D</a>( \
+ d, <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 0, state), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 2, state) \
+ ), \
+ <a href="dec.html">BOOST_PP_DEC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 1, state) \
+ ), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 2, state) \
+ ) \
+ /**/
+
+#define LIST_MULTIPLY(c, list) \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>( \
+ 3, 0, \
+ <a href="while.html">BOOST_PP_WHILE</a>( \
+ PRED, OP, \
+ (<a href="nil.html">BOOST_PP_NIL</a>, c, list) \
+ ) \
+ ) \
+ /**/
+
+LIST_MULTIPLY(3, LIST)
+ // expands to (1, (2, (3, (1, (2, (3, (1, (2, (3, <a href="nil.html">BOOST_PP_NIL</a>)))))))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_at.html b/third_party/boostorg/preprocessor/doc/ref/list_at.html
new file mode 100644
index 0000000..8470c7e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_at.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_AT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_AT</b> macro extracts an element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_AT</b>(<i>list</i>, <i>index</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which a element is to be extracted.
+ This <i>list</i> must have at least <i>index</i> + <i>1</i> elements.
+ </dd>
+ <dt>index</dt>
+ <dd>
+ The zero-based position in the <i>list</i> of the element to be extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_AT_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_at_d.html">BOOST_PP_LIST_AT_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/at.html"><boost/preprocessor/list/at.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/at.html">boost/preprocessor/list/at.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_at.html">BOOST_PP_LIST_AT</a>(LIST, 0) // expands to a
+<a href="list_at.html">BOOST_PP_LIST_AT</a>(LIST, 2) // expands to c
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_at_d.html b/third_party/boostorg/preprocessor/doc/ref/list_at_d.html
new file mode 100644
index 0000000..a863dc8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_at_d.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_AT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_AT_D</b> macro extracts an element in a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_AT_D</b>(<i>d</i>, <i>list</i>, <i>index</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which a element is to be extracted.
+ This <i>list</i> must have at least <i>index</i> + <i>1</i> elements.
+ </dd>
+ <dt>index</dt>
+ <dd>
+ The zero-based position in the <i>list</i> of the element to be extracted.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_at.html">BOOST_PP_LIST_AT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/at.html"><boost/preprocessor/list/at.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/list/at.html">boost/preprocessor/list/at.hpp</a>>
+
+#define LIST (7, (2, (0, (1, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define PRED(d, state) <a href="list_at_d.html">BOOST_PP_LIST_AT_D</a>(d, state, 0)
+#define OP(d, state) <a href="list_rest.html">BOOST_PP_LIST_REST</a>(state)
+
+<a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, LIST) // expands to (0, (1, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_cat.html b/third_party/boostorg/preprocessor/doc/ref/list_cat.html
new file mode 100644
index 0000000..b24ef8d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_cat.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_CAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_CAT</b> macro concatenates all elements in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_CAT</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_CAT_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_cat_d.html">BOOST_PP_LIST_CAT_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/cat.html"><boost/preprocessor/list/cat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/cat.html">boost/preprocessor/list/cat.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_cat.html">BOOST_PP_LIST_CAT</a>(LIST) // expands to abc
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_cat_d.html b/third_party/boostorg/preprocessor/doc/ref/list_cat_d.html
new file mode 100644
index 0000000..ae8d2c8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_cat_d.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_CAT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_CAT_D</b> macro concatenates all elements in a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_CAT_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_cat.html">BOOST_PP_LIST_CAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/cat.html"><boost/preprocessor/list/cat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/cat.html">boost/preprocessor/list/cat.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+
+#define LISTS \
+ ((a, (b, <a href="nil.html">BOOST_PP_NIL</a>)), \
+ ((c, (d, <a href="nil.html">BOOST_PP_NIL</a>)), \
+ ((e, (f, <a href="nil.html">BOOST_PP_NIL</a>)), \
+ <a href="nil.html">BOOST_PP_NIL</a>))) \
+ /**/
+
+#define OP(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, <a href="list_cat_d.html">BOOST_PP_LIST_CAT_D</a>(d, x))
+
+<a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, _, LISTS) // expands to _abcdef
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_cons.html b/third_party/boostorg/preprocessor/doc/ref/list_cons.html
new file mode 100644
index 0000000..53d29ba
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_cons.html
@@ -0,0 +1,87 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_CONS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_CONS</b> macro is a <i>list</i> constructor.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_CONS</b>(<i>head</i>, <i>tail</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>head</dt>
+ <dd>
+ An element in a <i>list</i>.
+ </dd>
+ <dt>tail</dt>
+ <dd>
+ Either a <i>list</i>, <b>BOOST_PP_LIST_NIL</b>, or <b>BOOST_PP_NIL</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro appends a new head to an existing <i>list</i> or creates a <i>list</i> from <b>BOOST_PP_LIST_NIL</b>.
+ </div>
+ <div>
+ This macro is no longer necessary.
+ For example...
+ <div>
+ <b>BOOST_PP_LIST_CONS</b>(a, <b>BOOST_PP_LIST_CONS</b>(b, <b>BOOST_PP_LIST_NIL</b>)))
+ </div>
+ ...is just an explicit way of writing the following:
+ <div>
+ (a, (b, <b>BOOST_PP_NIL</b>))
+ </div>
+ Because of this, this macro is deprecated.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_nil.html">BOOST_PP_LIST_NIL</a></li>
+ <li><a href="nil.html">BOOST_PP_NIL</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/adt.html"><boost/preprocessor/list/adt.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define OLD \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ a, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ b, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ c, \
+ <a href="list_nil.html">BOOST_PP_LIST_NIL</a> \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_first.html">BOOST_PP_LIST_FIRST</a>(OLD) == <a href="list_first.html">BOOST_PP_LIST_FIRST</a>(NEW)
+ // expands to a == a
+
+<a href="list_rest.html">BOOST_PP_LIST_REST</a>(OLD) == <a href="list_rest.html">BOOST_PP_LIST_REST</a>(NEW)
+ // expands to (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)) == (b, (c, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_enum.html b/third_party/boostorg/preprocessor/doc/ref/list_enum.html
new file mode 100644
index 0000000..e3f6059
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_enum.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_ENUM</b> macro converts a <i>list</i> to a comma-separated list.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_ENUM</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div>
+ <i>a</i>, <i>b</i>, <i>c</i>
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_ENUM_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/enum.html"><boost/preprocessor/list/enum.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/enum.html">boost/preprocessor/list/enum.hpp</a>>
+
+#define LIST (w, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+<a href="list_enum.html">BOOST_PP_LIST_ENUM</a>(LIST) // expands to w, x, y, z
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_enum_r.html b/third_party/boostorg/preprocessor/doc/ref/list_enum_r.html
new file mode 100644
index 0000000..ff16cea
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_enum_r.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_ENUM_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_ENUM_R</b> macro converts a <i>list</i> to a comma-separated list.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_ENUM_R</b>(<i>r</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div>
+ <i>a</i>, <i>b</i>, <i>c</i>
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_enum.html">BOOST_PP_LIST_ENUM</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/enum.html"><boost/preprocessor/list/enum.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+#include <<a href="../headers/list/enum.html">boost/preprocessor/list/enum.hpp</a>>
+
+#define LIST (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define PRED(r, state) <a href="list_is_cons.html">BOOST_PP_LIST_IS_CONS</a>(state)
+#define OP(r, state) <a href="list_rest.html">BOOST_PP_LIST_REST</a>(state)
+#define MACRO(r, state) [ <a href="list_enum_r.html">BOOST_PP_LIST_ENUM_R</a>(r, state) ]
+
+<a href="for.html">BOOST_PP_FOR</a>(LIST, PRED, OP, MACRO)
+ // expands to [x, y, z] [y, z] [z]
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_filter.html b/third_party/boostorg/preprocessor/doc/ref/list_filter.html
new file mode 100644
index 0000000..7a412fb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_filter.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FILTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FILTER</b> macro filters a <i>list</i> according to a supplied criterion.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FILTER</b>(<i>pred</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_LIST_FILTER</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ This macro must return a integral value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ If this predicate expands to non-zero for a certain element, that element is included in the resulting <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FILTER_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="list_filter_d.html">BOOST_PP_LIST_FILTER_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/filter.html"><boost/preprocessor/list/filter.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/less_equal.html">boost/preprocessor/comparison/less_equal.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+
+#define LIST (1, (3, (2, (5, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define PRED(d, data, elem) <a href="less_equal.html">BOOST_PP_LESS_EQUAL</a>(elem, data)
+
+<a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(PRED, 3, LIST)
+ // expands to (1, (3, (2, <a href="nil.html">BOOST_PP_NIL</a>)))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_filter_d.html b/third_party/boostorg/preprocessor/doc/ref/list_filter_d.html
new file mode 100644
index 0000000..d63d949
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_filter_d.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FILTER_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FILTER_D</b> macro filters a <i>list</i> according to a supplied criterion.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FILTER_D</b>(<i>d</i>, <i>pred</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_LIST_FILTER</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ This macro must return a integral value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ If this predicate expands to non-zero for a certain element, that element is included in the resulting <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="list_filter.html">BOOST_PP_LIST_FILTER</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/filter.html"><boost/preprocessor/list/filter.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/less_equal.html">boost/preprocessor/comparison/less_equal.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define A (1, (2, (3, (4, <a href="nil.html">BOOST_PP_NIL</a>))))
+#define B (A, (A, (A, (A, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define PRED(d, data, x) <a href="less_equal.html">BOOST_PP_LESS_EQUAL</a>(x, data)
+#define OP(d, state, x) (<a href="list_filter_d.html">BOOST_PP_LIST_FILTER_D</a>(d, PRED, 2, x), state)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, B)
+/*
+ expands to:
+ ((1, (2, <a href="nil.html">BOOST_PP_NIL</a>)),
+ ((1, (2, <a href="nil.html">BOOST_PP_NIL</a>)),
+ ((1, (2, <a href="nil.html">BOOST_PP_NIL</a>)),
+ ((1, (2, <a href="nil.html">BOOST_PP_NIL</a>)),
+ <a href="nil.html">BOOST_PP_NIL</a>))))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_first.html b/third_party/boostorg/preprocessor/doc/ref/list_first.html
new file mode 100644
index 0000000..5b056ab
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_first.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FIRST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FIRST</b> macro expands to the head of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FIRST</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A non-nil <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/adt.html"><boost/preprocessor/list/adt.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define OLD \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ a, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ b, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ c, \
+ <a href="list_nil.html">BOOST_PP_LIST_NIL</a> \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_first.html">BOOST_PP_LIST_FIRST</a>(OLD) == <a href="list_first.html">BOOST_PP_LIST_FIRST</a>(NEW)
+ // expands to a == a
+
+<a href="list_rest.html">BOOST_PP_LIST_REST</a>(OLD) == <a href="list_rest.html">BOOST_PP_LIST_REST</a>(NEW)
+ // expands to (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)) == (b, (c, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_first_n.html b/third_party/boostorg/preprocessor/doc/ref/list_first_n.html
new file mode 100644
index 0000000..0136eab
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_first_n.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FIRST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FIRST_N</b> macro expands to a <i>list</i> of the first <i>count</i> elements of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FIRST_N</b>(<i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of elements to extract.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro extracts <i>count</i> elements from the beginning of <i>list</i> and returns them as a <i>list</i>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FIRST_N_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_first_n_d.html">BOOST_PP_LIST_FIRST_N_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/first_n.html"><boost/preprocessor/list/first_n.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/first_n.html">boost/preprocessor/list/first_n.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_first_n.html">BOOST_PP_LIST_FIRST_N</a>(2, LIST) // expands to (a, (b, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_first_n_d.html b/third_party/boostorg/preprocessor/doc/ref/list_first_n_d.html
new file mode 100644
index 0000000..67a48ee
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_first_n_d.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FIRST_N_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FIRST_N_D</b> macro expands to a <i>list</i> of the first <i>count</i> elements of a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FIRST_N_D</b>(<i>d</i>, <i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of elements to extract.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro extracts <i>count</i> elements from the beginning of <i>list</i> and returns them as a <i>list</i>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_first_n.html">BOOST_PP_LIST_FIRST_N</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/first_n.html"><boost/preprocessor/list/first_n.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/first_n.html">boost/preprocessor/list/first_n.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define L1 (a, (b, (c, (d, <a href="nil.html">BOOST_PP_NIL</a>))))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_first_n_d.html">BOOST_PP_LIST_FIRST_N_D</a>(d, 2, x), state)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to...
+ ((a, (b, <a href="nil.html">BOOST_PP_NIL</a>)), ((a, (b, <a href="nil.html">BOOST_PP_NIL</a>)),
+ ((a, (b, <a href="nil.html">BOOST_PP_NIL</a>)) , <a href="nil.html">BOOST_PP_NIL</a> )))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_left.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_left.html
new file mode 100644
index 0000000..7afa81d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_left.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_left.html"><boost/preprocessor/list/fold_left.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, _, LIST) // expands to _abc
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_left_2nd.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_2nd.html
new file mode 100644
index 0000000..6278b56
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_2nd.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_2ND</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_2ND</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro is deprecated.
+ Use <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a></li>
+ <li><a href="list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_left.html"><boost/preprocessor/list/fold_left.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_left_2nd.html">BOOST_PP_LIST_FOLD_LEFT_2ND</a>(OP, _, LIST) // expands to _abc
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_left_2nd_d.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_2nd_d.html
new file mode 100644
index 0000000..87fc0f0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_2nd_d.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_2ND_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_2ND_D</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_2ND_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a></li>
+ <li><a href="list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_left.html"><boost/preprocessor/list/fold_left.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_fold_left_2nd_d.html">BOOST_PP_LIST_FOLD_LEFT_2ND_D</a>(d, OP_2, _, x), state)
+#define OP_2(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to:
+ (_abc , (_abc , (_abc , <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_left_d.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_d.html
new file mode 100644
index 0000000..7347d95
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_d.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_d</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_</b> ## <i>d</i>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_left.html"><boost/preprocessor/list/fold_left.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_</a> ## d(OP_2, _, x), state)
+#define OP_2(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to:
+ (_abc, (_abc, (_abc, <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_left_d_old.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_d_old.html
new file mode 100644
index 0000000..ea83fd8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_left_d_old.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_LEFT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_LEFT_D</b> macro folds (or accumulates) the elements of a <i>list</i> left-to-right.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_LEFT_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_LEFT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_LEFT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a></li>
+ <li><a href="list_fold_left_d.html">BOOST_PP_LIST_FOLD_LEFT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_left.html"><boost/preprocessor/list/fold_left.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_fold_left_d_old.html">BOOST_PP_LIST_FOLD_LEFT_D</a>(d, OP_2, _, x), state)
+#define OP_2(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to:
+ (_abc, (_abc, (_abc, <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_right.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_right.html
new file mode 100644
index 0000000..bef3463
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_right.html
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro does not have the same signature as it previously did.
+ The arguments have been swapped to provide a uniform interface with <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>2</i>), <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_right.html"><boost/preprocessor/list/fold_right.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, _, LIST) // expands to _cba
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_right_2nd.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_2nd.html
new file mode 100644
index 0000000..16588f5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_2nd.html
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_2ND</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_2ND</b>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro does not have the same signature as it previously did.
+ The arguments have been swapped to provide a uniform interface with <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro is deprecated.
+ Use <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
+ <li><a href="list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_right.html"><boost/preprocessor/list/fold_right.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_right_2nd.html">BOOST_PP_LIST_FOLD_RIGHT_2ND</a>(OP, _, LIST) // expands to _cba
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_right_2nd_d.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_2nd_d.html
new file mode 100644
index 0000000..5aba501
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_2nd_d.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_2ND_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>0</i>), <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_RIGHT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
+ <li><a href="list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_right.html"><boost/preprocessor/list/fold_right.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_fold_right_2nd_d.html">BOOST_PP_LIST_FOLD_RIGHT_2ND_D</a>(d, OP_2, _, x), state)
+#define OP_2(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to:
+ (_cba , (_cba , (_cba , <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_right_d.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_d.html
new file mode 100644
index 0000000..7a580d2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_d.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_d</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_</b> ## <i>d</i>(<i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>2</i>), <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_right.html"><boost/preprocessor/list/fold_right.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_</a> ## d(OP_2, _, x), state)
+#define OP_2(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to:
+ (_cba, (_cba, (_cba, <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_fold_right_d_old.html b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_d_old.html
new file mode 100644
index 0000000..248c023
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_fold_right_d_old.html
@@ -0,0 +1,90 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOLD_RIGHT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOLD_RIGHT_D</b> macro folds (or accumulates) the elements of a <i>list</i> right-to-left.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOLD_RIGHT_D</b>(<i>d</i>, <i>op</i>, <i>state</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>d</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>list</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_LIST_FOLD_RIGHT</b> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be folded.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro does not have the same signature as it previously did.
+ The arguments have been swapped to provide a uniform interface with <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ </div>
+ <div>
+ For the <i>list</i>, (<i>0</i>, (<i>1</i>, (<i>2</i>, <b>BOOST_PP_NIL</b>))), this macro expands to:
+ <div>
+ <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>, <i>2</i>), <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <div>
+ This macro has been superceded by <b>BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></b> and is deprecated.
+ It only allows a single reentry into <b>BOOST_PP_LIST_FOLD_RIGHT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
+ <li><a href="list_fold_right_d.html">BOOST_PP_LIST_FOLD_RIGHT_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/fold_right.html"><boost/preprocessor/list/fold_right.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_fold_right_d_old.html">BOOST_PP_LIST_FOLD_RIGHT_D</a>(d, OP_2, _, x), state)
+#define OP_2(d, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to:
+ (_cba, (_cba, (_cba, <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_for_each.html b/third_party/boostorg/preprocessor/doc/ref/list_for_each.html
new file mode 100644
index 0000000..0dab107
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_for_each.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH</b> macro repeats a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH</b>(<i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOR_EACH_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_for_each_r.html">BOOST_PP_LIST_FOR_EACH_R</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/for_each.html"><boost/preprocessor/list/for_each.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/for_each.html">boost/preprocessor/list/for_each.hpp</a>>
+
+#define LIST (w, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define MACRO(r, data, elem) <a href="cat.html">BOOST_PP_CAT</a>(elem, data)
+
+<a href="list_for_each.html">BOOST_PP_LIST_FOR_EACH</a>(MACRO, _, LIST) // expands to w_ x_ y_ z_
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_for_each_i.html b/third_party/boostorg/preprocessor/doc/ref/list_for_each_i.html
new file mode 100644
index 0000000..6dec45e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_for_each_i.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_I</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_I</b> macro repeats a macro for each element in a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_I</b>(<i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH_I</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, the index of the current element, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOR_EACH_I_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_for_each_i_r.html">BOOST_PP_LIST_FOR_EACH_I_R</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/for_each_i.html"><boost/preprocessor/list/for_each_i.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/for_each_i.html">boost/preprocessor/list/for_each_i.hpp</a>>
+
+#define LIST (w, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define MACRO(r, data, i, elem) <a href="cat.html">BOOST_PP_CAT</a>(elem, <a href="cat.html">BOOST_PP_CAT</a>(data, i))
+
+<a href="list_for_each_i.html">BOOST_PP_LIST_FOR_EACH_I</a>(MACRO, _, LIST) // expands to w_0 x_1 y_2 z_3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_for_each_i_r.html b/third_party/boostorg/preprocessor/doc/ref/list_for_each_i_r.html
new file mode 100644
index 0000000..5634ff9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_for_each_i_r.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_I_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_I_R</b> macro repeats a macro for each element in a <i>list</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_I_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A macro of the for <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH_I</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, the index of the current element, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_for_each_i.html">BOOST_PP_LIST_FOR_EACH_I</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/for_each_i.html"><boost/preprocessor/list/for_each_i.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+#include <<a href="../headers/list/for_each_i.html">boost/preprocessor/list/for_each_i.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+
+#define LIST (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define MACRO_2(r, data, i, elem) <a href="cat.html">BOOST_PP_CAT</a>(elem, i)
+
+#define PRED(r, state) <a href="list_is_cons.html">BOOST_PP_LIST_IS_CONS</a>(state)
+#define OP(r, state) <a href="list_rest.html">BOOST_PP_LIST_REST</a>(state)
+#define MACRO(r, state) [ <a href="list_for_each_i_r.html">BOOST_PP_LIST_FOR_EACH_I_R</a>(r, MACRO_2, _, state) ]
+
+<a href="for.html">BOOST_PP_FOR</a>(LIST, PRED, OP, MACRO)
+ // expands to [x0 y1 z2] [y0 z1] [z0]
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_for_each_product.html b/third_party/boostorg/preprocessor/doc/ref/list_for_each_product.html
new file mode 100644
index 0000000..0da1f3c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_for_each_product.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_PRODUCT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_PRODUCT</b> macro repeats a macro for each cartesian product of several <i>lists</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_PRODUCT</b>(<i>macro</i>, <i>size</i>, <i>tuple</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>).
+ This macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian product in <i>tuple</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition and a <i>tuple</i> containing a cartesian product.
+ This <i>tuple</i> will have <i>size</i> elements.
+ </dd>
+ <dt>size</dt>
+ <dd>
+ The size of <i>tuple</i>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ A <i>tuple</i> of <i>lists</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If two <i>lists</i> are (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))) and (<i>x</i>, (<i>y</i>, (<i>z</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce the following sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>z</i>))
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_for_each_product_r.html">BOOST_PP_LIST_FOR_EACH_PRODUCT_R</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/for_each_product.html"><boost/preprocessor/list/for_each_product.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/for_each_product.html">boost/preprocessor/list/for_each_product.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define MACRO(r, product) product
+
+<a href="list_for_each_product.html">BOOST_PP_LIST_FOR_EACH_PRODUCT</a>(MACRO, 2, (L1, L2))
+ // expands to (a, x) (a, y) (a, z) (b, x) (b, y) (b, z) (c, x) (c, y) (c, z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_for_each_product_r.html b/third_party/boostorg/preprocessor/doc/ref/list_for_each_product_r.html
new file mode 100644
index 0000000..be2d57d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_for_each_product_r.html
@@ -0,0 +1,118 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</b> macro repeats a macro for each cartesian product of several <i>lists</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_PRODUCT_R</b>(<i>r</i>, <i>macro</i>, <i>size</i>, <i>tuple</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>).
+ This macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian product in <i>tuple</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition and a <i>tuple</i> containing a cartesian product.
+ This <i>tuple</i> will have <i>size</i> elements.
+ </dd>
+ <dt>size</dt>
+ <dd>
+ The size of <i>tuple</i>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ A <i>tuple</i> of <i>lists</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If two <i>lists</i> are (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))) and (<i>x</i>, (<i>y</i>, (<i>z</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce the following sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>, <i>z</i>))<br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>x</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>, <i>z</i>))
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_for_each_product.html">BOOST_PP_LIST_FOR_EACH_PRODUCT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/for_each_product.html"><boost/preprocessor/list/for_each_product.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/list/for_each_product.html">boost/preprocessor/list/for_each_product.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define L1 (a, (b, <a href="nil.html">BOOST_PP_NIL</a>))
+#define L2 (x, (y, <a href="nil.html">BOOST_PP_NIL</a>))
+
+#define PRED(r, state) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state)
+
+#define OP(r, state) \
+ ( \
+ <a href="dec.html">BOOST_PP_DEC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state) \
+ ), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, state) \
+ ) \
+ /**/
+
+#define MACRO(r, state) \
+ MACRO_I( \
+ r, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, state) \
+ ) \
+ /**/
+
+#define MACRO_I(r, c, t) \
+ <a href="list_for_each_product_r.html">BOOST_PP_LIST_FOR_EACH_PRODUCT_R</a>( \
+ r, MACRO_P, 2, \
+ ( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, <a href="dec.html">BOOST_PP_DEC</a>(c), t), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, <a href="dec.html">BOOST_PP_DEC</a>(c), t) \
+ ) \
+ ) \
+ /**/
+
+#define MACRO_P(r, product) product
+
+<a href="for.html">BOOST_PP_FOR</a>((2, (L1, L2)), PRED, OP, MACRO)
+ // expands to (x, x) (x, y) (y, x) (y, y) (a, a) (a, b) (b, a) (b, b)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_for_each_r.html b/third_party/boostorg/preprocessor/doc/ref/list_for_each_r.html
new file mode 100644
index 0000000..39ad951
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_for_each_r.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_FOR_EACH_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_FOR_EACH_R</b> macro repeats a macro for each element in a <i>list</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_FOR_EACH_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_LIST_FOR_EACH</b> with each element in <i>list</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is a repetition construct.
+ If <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))), it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_for_each.html">BOOST_PP_LIST_FOR_EACH</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/for_each.html"><boost/preprocessor/list/for_each.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+#include <<a href="../headers/list/for_each.html">boost/preprocessor/list/for_each.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+
+#define LIST (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define MACRO_2(r, data, elem) elem
+
+#define PRED(r, state) <a href="list_is_cons.html">BOOST_PP_LIST_IS_CONS</a>(state)
+#define OP(r, state) <a href="list_rest.html">BOOST_PP_LIST_REST</a>(state)
+#define MACRO(r, state) [ <a href="list_for_each_r.html">BOOST_PP_LIST_FOR_EACH_R</a>(r, MACRO_2, _, state) ]
+
+<a href="for.html">BOOST_PP_FOR</a>(LIST, PRED, OP, MACRO)
+ // expands to [x y z] [y z] [z]
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_is_cons.html b/third_party/boostorg/preprocessor/doc/ref/list_is_cons.html
new file mode 100644
index 0000000..473fc35
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_is_cons.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_IS_CONS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_IS_CONS</b> macro is a predicate that determines if a <i>list</i> not nil.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_IS_CONS</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is non-nil, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/adt.html"><boost/preprocessor/list/adt.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define LIST (a, <a href="nil.html">BOOST_PP_NIL</a>)
+
+<a href="list_is_cons.html">BOOST_PP_LIST_IS_CONS</a>(LIST) // expands to 1
+<a href="list_is_cons.html">BOOST_PP_LIST_IS_CONS</a>(<a href="list_rest.html">BOOST_PP_LIST_REST</a>(LIST)) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_is_nil.html b/third_party/boostorg/preprocessor/doc/ref/list_is_nil.html
new file mode 100644
index 0000000..30eaf5f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_is_nil.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_IS_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_IS_NIL</b> macro is a predicate that determines if a <i>list</i> is nil.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_IS_NIL</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>list</i> is nil, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/adt.html"><boost/preprocessor/list/adt.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define LIST (a, <a href="nil.html">BOOST_PP_NIL</a>)
+
+<a href="list_is_nil.html">BOOST_PP_LIST_IS_NIL</a>(LIST) // expands to 0
+<a href="list_is_nil.html">BOOST_PP_LIST_IS_NIL</a>(<a href="list_rest.html">BOOST_PP_LIST_REST</a>(LIST)) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_nil.html b/third_party/boostorg/preprocessor/doc/ref/list_nil.html
new file mode 100644
index 0000000..ec37bb9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_nil.html
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_NIL</b> macro is a nil <i>list</i> constructor.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_NIL</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro represents the end of a <i>list</i>.
+ </div>
+ <div>
+ This macro is no longer necessary.
+ It simply expands to <b>BOOST_PP_NIL</b>.
+ Because of this, this macro is deprecated.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="nil.html">BOOST_PP_NIL</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/adt.html"><boost/preprocessor/list/adt.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define OLD \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ a, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ b, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ c, \
+ <a href="list_nil.html">BOOST_PP_LIST_NIL</a> \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_first.html">BOOST_PP_LIST_FIRST</a>(OLD) == <a href="list_first.html">BOOST_PP_LIST_FIRST</a>(NEW)
+ // expands to a == a
+
+<a href="list_rest.html">BOOST_PP_LIST_REST</a>(OLD) == <a href="list_rest.html">BOOST_PP_LIST_RESTK</a>(NEW)
+ // expands to (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)) == (b, (c, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_rest.html b/third_party/boostorg/preprocessor/doc/ref/list_rest.html
new file mode 100644
index 0000000..11544c4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_rest.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REST</b> macro expands to the tail of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REST</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A non-nil <i>list</i>.
+ </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/adt.html"><boost/preprocessor/list/adt.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define OLD \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ a, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ b, \
+ <a href="list_cons.html">BOOST_PP_LIST_CONS</a>( \
+ c, \
+ <a href="list_nil.html">BOOST_PP_LIST_NIL</a> \
+ ) \
+ ) \
+ ) \
+ /**/
+
+#define NEW (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_first.html">BOOST_PP_LIST_FIRST</a>(OLD) == <a href="list_first.html">BOOST_PP_LIST_FIRST</a>(NEW)
+ // expands to a == a
+
+<a href="list_rest.html">BOOST_PP_LIST_REST</a>(OLD) == <a href="list_rest.html">BOOST_PP_LIST_REST</a>(NEW)
+ // expands to (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)) == (b, (c, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_rest_n.html b/third_party/boostorg/preprocessor/doc/ref/list_rest_n.html
new file mode 100644
index 0000000..eeb7fb8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_rest_n.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REST_N</b> macro expands to a <i>list</i> of all but the first <i>count</i> elements of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REST_N</b>(<i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of elements to remove from the beginning of <i>list</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro removes <i>count</i> elements from the beginning of <i>list</i> and returns the remainder as a <i>list</i>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_REST_N_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_rest_n_d.html">BOOST_PP_LIST_REST_N_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/rest_n.html"><boost/preprocessor/list/rest_n.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/rest_n.html">boost/preprocessor/list/rest_n.hpp</a>>
+
+#define LIST (a, (b, (c, (d, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+<a href="list_rest_n.html">BOOST_PP_LIST_REST_N</a>(2, LIST) // expands to (c, (d, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_rest_n_d.html b/third_party/boostorg/preprocessor/doc/ref/list_rest_n_d.html
new file mode 100644
index 0000000..4399a90
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_rest_n_d.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REST_N_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REST_N_D</b> macro expands to a <i>list</i> of all but the first <i>count</i> elements of a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REST_N_D</b>(<i>d</i>, <i>count</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>count</dt>
+ <dd>
+ The number of elements to remove from the beginning of <i>list</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro removes <i>count</i> elements from the beginning of <i>list</i> and returns the remainder as a <i>list</i>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_rest_n.html">BOOST_PP_LIST_REST_N</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/rest_n.html"><boost/preprocessor/list/rest_n.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+#include <<a href="../headers/list/rest_n.html">boost/preprocessor/list/rest_n.hpp</a>>
+
+#define L1 (a, (b, (c, (d, <a href="nil.html">BOOST_PP_NIL</a>))))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_rest_n_d.html">BOOST_PP_LIST_REST_N_D</a>(d, 2, x), state)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to...
+ ((c, (d, <a href="nil.html">BOOST_PP_NIL</a>)), ((c, (d, <a href="nil.html">BOOST_PP_NIL</a>)),
+ ((c, (d, <a href="nil.html">BOOST_PP_NIL</a>)), <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_reverse.html b/third_party/boostorg/preprocessor/doc/ref/list_reverse.html
new file mode 100644
index 0000000..711d6e0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_reverse.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REVERSE</b> macro expands to the reverse a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REVERSE</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_REVERSE_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_reverse_d.html">BOOST_PP_LIST_REVERSE_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/reverse.html"><boost/preprocessor/list/reverse.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/reverse.html">boost/preprocessor/list/reverse.hpp</a>>
+
+#define LIST (0, (1, (2, (3, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+<a href="list_reverse.html">BOOST_PP_LIST_REVERSE</a>(LIST) // expands to (3, (2, (1, (0, <a href="nil.html">BOOST_PP_NIL</a>))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_reverse_d.html b/third_party/boostorg/preprocessor/doc/ref/list_reverse_d.html
new file mode 100644
index 0000000..37cbda5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_reverse_d.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_REVERSE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_REVERSE_D</b> macro expands to the reverse a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_REVERSE_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_reverse.html">BOOST_PP_LIST_REVERSE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/reverse.html"><boost/preprocessor/list/reverse.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+#include <<a href="../headers/list/reverse.html">boost/preprocessor/list/reverse.hpp</a>>
+
+#define L1 (a, (b, (c, (d, <a href="nil.html">BOOST_PP_NIL</a>))))
+#define L2 (L1, (L1, (L1, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) (<a href="list_reverse_d.html">BOOST_PP_LIST_REVERSE_D</a>(d, x), state)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, L2)
+/*
+ expands to...
+ ((d, (c, (b, (a, <a href="nil.html">BOOST_PP_NIL</a>)))), ((d, (c, (b, (a, <a href="nil.html">BOOST_PP_NIL</a>)))),
+ ((d, (c, (b, (a, <a href="nil.html">BOOST_PP_NIL</a>)))), <a href="nil.html">BOOST_PP_NIL</a>)))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_size.html b/third_party/boostorg/preprocessor/doc/ref/list_size.html
new file mode 100644
index 0000000..df947be
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_size.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_SIZE</b> macro expands to the size of a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_SIZE</b>(<i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> whose size is to be calculated.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_SIZE_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_size_d.html">BOOST_PP_LIST_SIZE_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/size.html"><boost/preprocessor/list/size.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/size.html">boost/preprocessor/list/size.hpp</a>>
+
+#define LIST (0, (1, (2, (3, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+<a href="list_size.html">BOOST_PP_LIST_SIZE</a>(LIST) // expands to 4
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_size_d.html b/third_party/boostorg/preprocessor/doc/ref/list_size_d.html
new file mode 100644
index 0000000..4f8ca01f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_size_d.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_SIZE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_SIZE_D</b> macro expands to the size of a <i>list</i>.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_SIZE_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ A <i>list</i> whose size is to be calculated.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_size.html">BOOST_PP_LIST_SIZE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/size.html"><boost/preprocessor/list/size.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+#include <<a href="../headers/list/size.html">boost/preprocessor/list/size.hpp</a>>
+
+#define L1 (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))
+#define L2 (x, (y, <a href="nil.html">BOOST_PP_NIL</a>))
+#define L3 (p, (q, <a href="nil.html">BOOST_PP_NIL</a>))
+
+#define LIST (L1, (L2, (L3, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define OP(d, state, x) \
+ <a href="add_d.html">BOOST_PP_ADD_D</a>( \
+ d, state, \
+ <a href="list_size_d.html">BOOST_PP_LIST_SIZE_D</a>(d, x) \
+ ) \
+ /**/
+
+<a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, 0, LIST) // expands to 7
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_to_array.html b/third_party/boostorg/preprocessor/doc/ref/list_to_array.html
new file mode 100644
index 0000000..46154c9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_to_array.html
@@ -0,0 +1,47 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIST_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY</b> macro
+ converts a <i>list</i> to an <i>array</i>. </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_LIST_TO_ARRAY</b>(<i>list</i>) </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. <br>
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro uses <b>BOOST_PP_WHILE</b>. Within <b>BOOST_PP_WHILE</b>,
+ it is more efficient to use <b>BOOST_PP_LIST_TO_ARRAY_D</b>.<br>
+ <br>
+ If the <i>list</i> to be converted is empty, as represented by
+ 'BOOST_PP_NIL', the resulting <i>array</i> is empty, as represented by '( 0, ()
+ )'.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY_D</a></li>
+ </ul>
+ <h4> Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/list/to_array.html"><boost/preprocessor/list/to_array.hpp></a>
+ </div>
+ <h4> Sample Code </h4>
+ <div>
+ <pre>#include <<a href="../headers/list/to_array.html">boost/preprocessor/list/to_array.hpp</a>><br><br>#define LIST (a, (b, (c, <a
+
+href="nil.html">BOOST_PP_NIL</a>)))<br><br><a href="list_to_array.html">BOOST_PP_LIST_TO_ARRAY</a>(LIST) // expands to (3, (a, b, c))</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_to_array_d.html b/third_party/boostorg/preprocessor/doc/ref/list_to_array_d.html
new file mode 100644
index 0000000..835d9e2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_to_array_d.html
@@ -0,0 +1,34 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIST_TO_ARRAY_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY_D</b> macro
+ converts a <i>list</i> to an <i>array</i>. It reenters <b>BOOST_PP_WHILE</b>
+ with maximum efficiency. </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_LIST_TO_ARRAY_D</b>(<i>d</i>, <i>list</i>)
+ </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>d</dt>
+ <dd>The next available <b>BOOST_PP_WHILE</b> iteration.</dd>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <p> If the <i>list</i> to be converted is empty, as
+ represented by 'BOOST_PP_NIL', the resulting <i>array</i> is empty, as
+ represented by '( 0, () )'. </p>
+ <h4>See Also</h4>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY</a></li>
+ </ul>
+ <h4> Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/list/to_array.html"><boost/preprocessor/list/to_array.hpp></a>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_to_seq.html b/third_party/boostorg/preprocessor/doc/ref/list_to_seq.html
new file mode 100644
index 0000000..3efc7e1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_to_seq.html
@@ -0,0 +1,44 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIST_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ</b> macro
+ converts a <i>list</i> to a <i>seq</i>. </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_LIST_TO_SEQ</b>(<i>list</i>) </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro uses <b>BOOST_PP_FOR</b>. Within <b>BOOST_PP_FOR</b>, it
+ is more efficient to use <b>BOOST_PP_LIST_TO_SEQ_R</b>.<br>
+ <br>
+ If the <i>list</i> to be converted is empty, as represented by
+ 'BOOST_PP_NIL', the resulting <i>seq</i> is undefined since a <i>seq</i>
+ cannot be empty.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ_R</a></li>
+ </ul>
+ <h4> Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/list/to_seq.html"><boost/preprocessor/list/to_seq.hpp></a>
+ </div>
+ <h4> Sample Code </h4>
+ <div>
+ <pre>#include <<a href="../headers/list/to_seq.html">boost/preprocessor/list/to_seq.hpp</a>><br><br><a
+href="list_to_seq.html">BOOST_PP_LIST_TO_SEQ</a>((a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))) // expands to (a)(b)(c)</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_to_seq_r.html b/third_party/boostorg/preprocessor/doc/ref/list_to_seq_r.html
new file mode 100644
index 0000000..cc7a854
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_to_seq_r.html
@@ -0,0 +1,32 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIST_TO_SEQ_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ_R</b> macro
+ converts a <i>list</i> to a <i>seq</i>. It reenters <b>BOOST_PP_FOR</b>
+ with maximum efficiency. </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_LIST_TO_SEQ_R</b>(<i>r</i>, <i>list</i>) </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>d</dt>
+ <dd>The next available <b>BOOST_PP_FOR</b> repetition.</dd>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <p> If the <i>list</i> to be converted is empty, as
+ represented by 'BOOST_PP_NIL', the resulting <i>seq</i> is undefined
+ since a <i>seq</i> cannot be empty.</p>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ</a></li>
+ </ul>
+ <h4> Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/list/to_seq.html"><boost/preprocessor/list/to_seq.hpp></a>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_to_tuple.html b/third_party/boostorg/preprocessor/doc/ref/list_to_tuple.html
new file mode 100644
index 0000000..d022c2b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_to_tuple.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIST_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_TUPLE</b> macro
+ converts a <i>list</i> to a <i>tuple</i>. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_LIST_TO_TUPLE</b>(<i>list</i>) </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro will produce:
+ <div> (<i>a</i>, <i>b</i>, <i>c</i>) </div>
+ </div>
+ <div> Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.
+ There is no longer any such restriction. It is more efficient,
+ however, to use <b>BOOST_PP_LIST_TO_TUPLE_R</b> in such a situation.<br>
+ <br>
+ If the <i>list</i> to be converted is empty, as represented by 'BOOST_PP_NIL',
+ the resulting <i>tuple</i> is undefined since a <i>tuple</i> cannot be
+ empty.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/list/to_tuple.html"><boost/preprocessor/list/to_tuple.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/list/to_tuple.html">boost/preprocessor/list/to_tuple.hpp</a>>
+
+#define LIST (w, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+<a href="list_to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a>(LIST) // expands to (w, x, y, z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_to_tuple_r.html b/third_party/boostorg/preprocessor/doc/ref/list_to_tuple_r.html
new file mode 100644
index 0000000..0227d38
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_to_tuple_r.html
@@ -0,0 +1,62 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_LIST_TO_TUPLE_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_TUPLE_R</b> macro
+ converts a <i>list</i> to a <i>tuple</i>. It reenters <b>BOOST_PP_FOR</b>
+ with maximum efficiency. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_LIST_TO_TUPLE_R</b>(<i>r</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>r</dt>
+ <dd> The next available <b>BOOST_PP_FOR</b> repetition. </dd>
+ <dt>list</dt>
+ <dd> The <i>list</i> to be converted. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <p> If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>,
+ <b>BOOST_PP_NIL</b>))), this macro will produce: </p>
+ <div>
+ <div> (<i>a</i>, <i>b</i>, <i>c</i>) </div>
+ </div>
+ <h4><span style="font-weight: normal;"> If the <i>list</i> to
+ be converted is empty, as represented by 'BOOST_PP_NIL', the resulting <i>tuple</i>
+ is undefined since a <i>tuple</i> cannot be empty. </span></h4>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/list/to_tuple.html"><boost/preprocessor/list/to_tuple.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+#include <<a href="../headers/list/to_tuple.html">boost/preprocessor/list/to_tuple.hpp</a>>
+#include <<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>>
+
+#define LIST (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+#define PRED(r, state) <a href="list_is_cons.html">BOOST_PP_LIST_IS_CONS</a>(state)
+#define OP(r, state) <a href="list_rest.html">BOOST_PP_LIST_REST</a>(state)
+#define MACRO(r, state) <a href="list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a>(r, state)
+
+<a href="for.html">BOOST_PP_FOR</a>(LIST, PRED, OP, MACRO)
+ // expands to (x, y, z) (y, z) (z)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_transform.html b/third_party/boostorg/preprocessor/doc/ref/list_transform.html
new file mode 100644
index 0000000..88c23d5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_transform.html
@@ -0,0 +1,78 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TRANSFORM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_TRANSFORM</b> macro transforms each element in a <i>list</i> according to a supplied transformation.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_TRANSFORM</b>(<i>op</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_LIST_TRANSFORM</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of the results of each call.
+ If, for example, <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>c</i>), <b>BOOST_PP_NIL</b>)))
+ </div>
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_LIST_TRANSFORM_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_transform_d.html">BOOST_PP_LIST_TRANSFORM_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/transform.html"><boost/preprocessor/list/transform.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/list/transform.html">boost/preprocessor/list/transform.hpp</a>>
+
+#define LIST (1, (3, (2, (5, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define OP(d, data, elem) <a href="dec.html">BOOST_PP_DEC</a>(elem)
+
+<a href="list_transform.html">BOOST_PP_LIST_TRANSFORM</a>(OP, 3, LIST)
+ // expands to (0, (2, (1, (4, <a href="nil.html">BOOST_PP_NIL</a>))))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/list_transform_d.html b/third_party/boostorg/preprocessor/doc/ref/list_transform_d.html
new file mode 100644
index 0000000..2c1f9f7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/list_transform_d.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <title>BOOST_PP_LIST_TRANSFORM_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LIST_TRANSFORM_D</b> macro transforms each element in a <i>list</i> according to a supplied transformation.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LIST_TRANSFORM_D</b>(<i>d</i>, <i>op</i>, <i>data</i>, <i>list</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>d</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_LIST_TRANSFORM</b> for each element in <i>list</i> with the next available <b>BOOST_PP_WHILE</b> iteration,
+ the auxiliary <i>data</i>, and the current element in <i>list</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>list</dt>
+ <dd>
+ The <i>list</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>list</i>.
+ It builds a new <i>list</i> out of the results of each call.
+ If, for example, <i>list</i> is (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
+ this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>), (<i>op</i>(<i>d</i>, <i>data</i>, <i>c</i>), <b>BOOST_PP_NIL</b>)))
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="list_transform.html">BOOST_PP_LIST_TRANSFORM</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/list/transform.html"><boost/preprocessor/list/transform.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/list/fold_right.html">boost/preprocessor/list/fold_right.hpp</a>>
+#include <<a href="../headers/list/transform.html">boost/preprocessor/list/transform.hpp</a>>
+
+#define A (1, (2, (3, (4, <a href="nil.html">BOOST_PP_NIL</a>))))
+#define B (A, (A, (A, (A, <a href="nil.html">BOOST_PP_NIL</a>))))
+
+#define OP_T(d, data, x) <a href="inc.html">BOOST_PP_INC</a>(x)
+#define OP(d, state, x) (<a href="list_transform_d.html">BOOST_PP_LIST_TRANSFORM_D</a>(d, OP_T, 2, x), state)
+
+<a href="list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a>(OP, <a href="nil.html">BOOST_PP_NIL</a>, B)
+/*
+ expands to:
+ ((2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))), ((2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))),
+ ((2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))), ((2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))),
+ <a href="nil.html">BOOST_PP_NIL</a>))))
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/local_iterate.html b/third_party/boostorg/preprocessor/doc/ref/local_iterate.html
new file mode 100644
index 0000000..d9c2d0e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/local_iterate.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <title>BOOST_PP_LOCAL_ITERATE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LOCAL_ITERATE</b> macro initiates a <i>local-iteration</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_LOCAL_ITERATE</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This macro causes the user-defined macro <b>BOOST_PP_LOCAL_MACRO</b> to be expanded vertically with values in the range specified by <b>BOOST_PP_LOCAL_LIMITS</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="local_limits.html">BOOST_PP_LOCAL_LIMITS</a></li>
+ <li><a href="local_macro.html">BOOST_PP_LOCAL_MACRO</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/local.html"><boost/preprocessor/iteration/local.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/iteration/local.html">boost/preprocessor/iteration/local.hpp</a>>
+
+template<int> struct sample;
+
+#define <a href="local_macro.html">BOOST_PP_LOCAL_MACRO</a>(n) \
+ template<> struct sample<n> { \
+ enum { value = n }; \
+ }; \
+ /**/
+
+#define <a href="local_limits.html">BOOST_PP_LOCAL_LIMITS</a> (1, 5)
+
+#include <a href="local_iterate.html">BOOST_PP_LOCAL_ITERATE</a>()
+/* expands to...
+template<> struct sample<1> { enum { value = 1 }; };
+template<> struct sample<2> { enum { value = 2 }; };
+template<> struct sample<3> { enum { value = 3 }; };
+template<> struct sample<4> { enum { value = 4 }; };
+template<> struct sample<5> { enum { value = 5 }; };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/local_limits.html b/third_party/boostorg/preprocessor/doc/ref/local_limits.html
new file mode 100644
index 0000000..c9067fa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/local_limits.html
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>BOOST_PP_LOCAL_LIMITS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LOCAL_LIMITS</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_LOCAL_LIMITS</b> (<i>start</i>, <i>finish</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>start</dt>
+ <dd>
+ The lower bound (inclusive) of a <i>local iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ <dt>finish</dt>
+ <dd>
+ The upper bound (inclusive) of a <i>local iteration</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Note that there is a whitespace character after the macro identifier.
+ </div>
+ <div>
+ This macro must expand to a <i>2</i>-element <i>tuple</i>.
+ The elements of this <i>tuple</i> represent the lower and upper boundaries of a <i>local iteration</i>.
+ Both <i>start</i> and <i>finish</i> are <i>evaluated parameters</i>.
+ This implies that they can include simple arithmetic expressions (such as <i>1</i> + <i>3</i>), etc..
+ </div>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_iteration.html">BOOST_PP_LIMIT_ITERATION</a></li>
+ <li><a href="local_iterate.html">BOOST_PP_LOCAL_ITERATE</a></li>
+ </ul>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/iteration/local.html">boost/preprocessor/iteration/local.hpp</a>>
+
+template<int> struct sample;
+
+#define <a href="local_macro.html">BOOST_PP_LOCAL_MACRO</a>(n) \
+ template<> struct sample<n> { \
+ enum { value = n }; \
+ }; \
+ /**/
+
+#define <a href="local_limits.html">BOOST_PP_LOCAL_LIMITS</a> (1, 5)
+
+#include <a href="local_iterate.html">BOOST_PP_LOCAL_ITERATE</a>()
+/* expands to...
+template<> struct sample<1> { enum { value = 1 }; };
+template<> struct sample<2> { enum { value = 2 }; };
+template<> struct sample<3> { enum { value = 3 }; };
+template<> struct sample<4> { enum { value = 4 }; };
+template<> struct sample<5> { enum { value = 5 }; };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/local_macro.html b/third_party/boostorg/preprocessor/doc/ref/local_macro.html
new file mode 100644
index 0000000..b0f00f0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/local_macro.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_LOCAL_MACRO</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LOCAL_MACRO</b> macro is a user-defined <i>named external argument</i> used by <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_LOCAL_MACRO</b>(<i>n</i>) ...
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The current iteration value received from the <i>local-iteration</i> mechanism.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is automatically undefined for reuse by a call to <b>BOOST_PP_LOCAL_ITERATE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="local_iterate.html">BOOST_PP_LOCAL_ITERATE</a></li>
+ </ul>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/iteration/local.html">boost/preprocessor/iteration/local.hpp</a>>
+
+template<int> struct sample;
+
+#define <a href="local_macro.html">BOOST_PP_LOCAL_MACRO</a>(n) \
+ template<> struct sample<n> { \
+ enum { value = n }; \
+ }; \
+ /**/
+
+#define <a href="local_limits.html">BOOST_PP_LOCAL_LIMITS</a> (1, 5)
+
+#include <a href="local_iterate.html">BOOST_PP_LOCAL_ITERATE</a>()
+/* expands to...
+template<> struct sample<1> { enum { value = 1 }; };
+template<> struct sample<2> { enum { value = 2 }; };
+template<> struct sample<3> { enum { value = 3 }; };
+template<> struct sample<4> { enum { value = 4 }; };
+template<> struct sample<5> { enum { value = 5 }; };
+*/
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/lparen.html b/third_party/boostorg/preprocessor/doc/ref/lparen.html
new file mode 100644
index 0000000..af5c7e6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/lparen.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <title>BOOST_PP_LPAREN</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LPAREN</b> macro expands to a left parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LPAREN</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="rparen.html">BOOST_PP_RPAREN</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/punctuation/paren.html"><boost/preprocessor/punctuation/paren.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/punctuation/paren.html">boost/preprocessor/punctuation/paren.hpp</a>>
+
+#define X(x) x
+#define MACRO(p, x) X p x )
+
+MACRO(<a href="lparen.html">BOOST_PP_LPAREN</a>(), abc) // expands to abc
+
+#define Y(x)
+
+MACRO((10) Y <a href="lparen.html">BOOST_PP_LPAREN</a>(), result) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/lparen_if.html b/third_party/boostorg/preprocessor/doc/ref/lparen_if.html
new file mode 100644
index 0000000..0ef3254
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/lparen_if.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_LPAREN_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_LPAREN_IF</b> macro conditionally expands to a left parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_LPAREN_IF</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if a the macro expands to a left parenthesis or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.
+ Otherwise, it expands to a left parenthesis.
+ </div>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="rparen_if.html">BOOST_PP_RPAREN_IF</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/punctuation/paren_if.html"><boost/preprocessor/punctuation/paren_if.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/punctuation/paren_if.html">boost/preprocessor/punctuation/paren_if.hpp</a>>
+
+#define MACRO(c, x) <a href="lparen_if.html">BOOST_PP_LPAREN_IF</a>(c) x <a href="rparen_if.html">BOOST_PP_RPAREN_IF</a>(c)
+
+MACRO(0, text) // expands to text
+MACRO(1, text) // expands to (text)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/max.html b/third_party/boostorg/preprocessor/doc/ref/max.html
new file mode 100644
index 0000000..0d76c0d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/max.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_MAX</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MAX</b> macro expands to the greater of its two arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MAX</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the greater of its two arguments or the value of both arguments if they are equal.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MAX_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="max_d.html">BOOST_PP_MAX_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/selection/max.html"><boost/preprocessor/selection/max.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/selection/max.html">boost/preprocessor/selection/max.hpp</a>>
+
+<a href="max.html">BOOST_PP_MAX</a>(5, 7) // expands to 7
+<a href="max.html">BOOST_PP_MAX</a>(3, 3) // expands to 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/max_d.html b/third_party/boostorg/preprocessor/doc/ref/max_d.html
new file mode 100644
index 0000000..d29fe55
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/max_d.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_MAX_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MAX_D</b> macro expands to the greater of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MAX_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the greater of its first and second arguments or the value of both arguments if they are equal.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="max.html">BOOST_PP_MAX</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/selection/max.html"><boost/preprocessor/selection/max.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+#include <<a href="../headers/selection/max.html">boost/preprocessor/selection/max.hpp</a>>
+
+#define LIST (1, (3, (5, (2, (4, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define OP(d, state, x) <a href="max_d.html">BOOST_PP_MAX_D</a>(d, state, x)
+
+#define LIST_MAX(list) <a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, 0, LIST)
+
+LIST_MAX(LIST) // expands to 5
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/min.html b/third_party/boostorg/preprocessor/doc/ref/min.html
new file mode 100644
index 0000000..8b54abf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/min.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_MIN</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MIN</b> macro expands to the lesser of its two arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MIN</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the lesser of its two arguments or the value of both arguments if they are equal.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MIN_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="min_d.html">BOOST_PP_MIN_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/selection/min.html"><boost/preprocessor/selection/min.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/selection/min.html">boost/preprocessor/selection/min.hpp</a>>
+
+<a href="min.html">BOOST_PP_MIN</a>(5, 7) // expands to 5
+<a href="min.html">BOOST_PP_MIN</a>(3, 3) // expands to 3
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/min_d.html b/third_party/boostorg/preprocessor/doc/ref/min_d.html
new file mode 100644
index 0000000..bccf83b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/min_d.html
@@ -0,0 +1,70 @@
+<html>
+<head>
+ <title>BOOST_PP_MIN_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MIN_D</b> macro expands to the lesser of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MIN_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The first operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The second operand.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro returns the lesser of its first and second arguments or the value of both arguments if they are equal.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="min.html">BOOST_PP_MIN</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/selection/min.html"><boost/preprocessor/selection/min.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/fold_left.html">boost/preprocessor/list/fold_left.hpp</a>>
+#include <<a href="../headers/selection/min.html">boost/preprocessor/selection/min.hpp</a>>
+
+#define LIST (1, (3, (5, (2, (4, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define OP(d, state, x) <a href="min_d.html">BOOST_PP_MIN_D</a>(d, state, x)
+
+#define LIST_MAX(list) <a href="list_fold_left.html">BOOST_PP_LIST_FOLD_LEFT</a>(OP, 20, LIST)
+
+LIST_MIN(LIST) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/mod.html b/third_party/boostorg/preprocessor/doc/ref/mod.html
new file mode 100644
index 0000000..58f6e87
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/mod.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_MOD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MOD</b> macro expands to the modulus of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MOD</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MOD_D</b> in such a situation.
+ </div>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="mod_d.html">BOOST_PP_MOD_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/mod.html"><boost/preprocessor/arithmetic/mod.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/mod.html">boost/preprocessor/arithmetic/mod.hpp</a>>
+
+<a href="mod.html">BOOST_PP_MOD</a>(11, 5) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/mod_d.html b/third_party/boostorg/preprocessor/doc/ref/mod_d.html
new file mode 100644
index 0000000..7205781
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/mod_d.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <title>BOOST_PP_MOD_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MOD_D</b> macro expands to the modulus of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MOD_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The dividend (numerator) of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The divisor (denominator) of the operation.
+ Valid values range from <i>1</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>y</i> is <i>0</i>, the result is undefined.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="mod.html">BOOST_PP_MOD</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/div.html"><boost/preprocessor/arithmetic/div.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/mod.html">boost/preprocessor/arithmetic/mod.hpp</a>>
+#include <<a href="../headers/list/filter.html">boost/preprocessor/list/filter.hpp</a>>
+#include <<a href="../headers/logical/not.html">boost/preprocessor/logical/not.hpp</a>>
+
+#define LIST (1, (2, (3, (4, (5, <a href="nil.html">BOOST_PP_NIL</a>)))))
+
+#define EVEN_P(d, _, num) <a href="not.html">BOOST_PP_NOT</a>(<a href="mod_d.html">BOOST_PP_MOD_D</a>(d, num, 2))
+#define EVEN(list) <a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(EVEN_P, nil, list)
+
+EVEN(LIST) // expands to (2, (4, <a href="nil.html">BOOST_PP_NIL</a>))
+
+#define ODD_P(d, _, num) <a href="mod_d.html">BOOST_PP_MOD_D</a>(d, num, 2)
+#define ODD(list) <a href="list_filter.html">BOOST_PP_LIST_FILTER</a>(ODD_P, nil, list)
+
+ODD(LIST) // expands to (1, (3, (5, <a href="nil.html">BOOST_PP_NIL</a>)))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/mul.html b/third_party/boostorg/preprocessor/doc/ref/mul.html
new file mode 100644
index 0000000..174d88b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/mul.html
@@ -0,0 +1,68 @@
+<html>
+<head>
+ <title>BOOST_PP_MUL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MUL</b> macro expands to the product of its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MUL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The multiplicand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The multiplier of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the product of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_MUL_D</b> in such a situation.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the value that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="mul_d.html">BOOST_PP_MUL_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/mul.html"><boost/preprocessor/arithmetic/mul.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/mul.html">boost/preprocessor/arithmetic/mul.hpp</a>>
+
+<a href="mul.html">BOOST_PP_MUL</a>(4, 4) // expands to 16
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/mul_d.html b/third_party/boostorg/preprocessor/doc/ref/mul_d.html
new file mode 100644
index 0000000..599fb85
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/mul_d.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_MUL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_MUL_D</b> macro expands to the product of its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_MUL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The multiplicand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The multiplier of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the product of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
+ </div>
+ <div>
+ This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.
+ However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.
+ In other words, <i>x</i> should be the value that is <i>most likely</i> to be the largest of the two operands.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="mul.html">BOOST_PP_MUL</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/mul.html"><boost/preprocessor/arithmetic/mul.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/arithmetic/mul.html">boost/preprocessor/arithmetic/mul.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 0, data)
+
+#define OP(d, data) \
+ ( \
+ <a href="dec.html">BOOST_PP_DEC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 0, data) \
+ ), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 1, data), \
+ <a href="mul_d.html">BOOST_PP_MUL_D</a>( \
+ d, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 2, data), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 1, data) \
+ ) \
+ ) \
+ /**/
+
+// raise 'x' to the 'n'-th power
+#define EXP(x, n) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 2, <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, x, 1)))
+
+EXP(4, 2) // expands to 16
+EXP(2, 3) // expands to 8
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/nil.html b/third_party/boostorg/preprocessor/doc/ref/nil.html
new file mode 100644
index 0000000..21ac405
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/nil.html
@@ -0,0 +1,41 @@
+<html>
+<head>
+ <title>BOOST_PP_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NIL</b> identifier is reserved by the library to indicate a non-macro.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NIL</b>
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ This identifier is <i>not</i> defined.
+ Its purpose is to <i>not be a macro</i>.
+ It is also used to terminate a <i>list</i>.
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>>
+
+#define LIST (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))
+
+<a href="list_first.html">BOOST_PP_LIST_FIRST</a>(x) // expands to x
+<a href="list_rest.html">BOOST_PP_LIST_REST</a>(x) // expands to (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/nor.html b/third_party/boostorg/preprocessor/doc/ref/nor.html
new file mode 100644
index 0000000..bb65f29
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/nor.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_NOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOR</b> macro expands to the logical <i>NOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOR</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If both <i>p</i> and <i>q</i> are both <i>0</i>, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>NOR</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITNOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="bitnor.html">BOOST_PP_BITNOR</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/nor.html"><boost/preprocessor/logical/nor.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/nor.html">boost/preprocessor/logical/nor.hpp</a>>
+
+<a href="nor.html">BOOST_PP_NOR</a>(4, 0) // expands to 0
+<a href="nor.html">BOOST_PP_NOR</a>(0, 0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/not.html b/third_party/boostorg/preprocessor/doc/ref/not.html
new file mode 100644
index 0000000..1490b69
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/not.html
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_NOT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOT</b> macro performs a logical <i>NOT</i> on its operand.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOT</b>(<i>x</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The value to be converted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is zero, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on its operand before performing the logical <i>NOT</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_COMPL</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="compl.html">BOOST_PP_COMPL</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/not.html"><boost/preprocessor/logical/not.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/not.html">boost/preprocessor/logical/not.hpp</a>>
+
+<a href="not.html">BOOST_PP_NOT</a>(55) // expands to 0
+<a href="not.html">BOOST_PP_NOT</a>(0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/not_equal.html b/third_party/boostorg/preprocessor/doc/ref/not_equal.html
new file mode 100644
index 0000000..b12ad20
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/not_equal.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_NOT_EQUAL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOT_EQUAL</b> macro compares two values for inequality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOT_EQUAL</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>0</i>.
+ Otherwise, it expands to <i>1</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction because this macro no longer uses <b>BOOST_PP_WHILE</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="not_equal_d.html">BOOST_PP_NOT_EQUAL_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/not_equal.html"><boost/preprocessor/comparison/not_equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/not_equal.html">boost/preprocessor/comparison/not_equal.hpp</a>>
+
+<a href="not_equal.html">BOOST_PP_NOT_EQUAL</a>(4, 3) // expands to 1
+<a href="not_equal.html">BOOST_PP_NOT_EQUAL</a>(5, 5) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/not_equal_d.html b/third_party/boostorg/preprocessor/doc/ref/not_equal_d.html
new file mode 100644
index 0000000..92c9b04
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/not_equal_d.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <title>BOOST_PP_NOT_EQUAL_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_NOT_EQUAL_D</b> macro compares two values for inequality.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_NOT_EQUAL_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ This argument is ignored.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The left operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The right operand of the comparison.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>x</i> is equal to <i>y</i>, this macro expands to <i>0</i>.
+ Otherwise, it expands to <i>1</i>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_NOT_EQUAL</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="not_equal.html">BOOST_PP_NOT_EQUAL</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/comparison/not_equal.html"><boost/preprocessor/comparison/not_equal.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/comparison/equal.html">boost/preprocessor/comparison/equal.hpp</a>>
+
+<a href="not_equal_d.html">BOOST_PP_NOT_EQUAL_D</a>(1, 4, 3) // expands to 1
+<a href="not_equal_d.html">BOOST_PP_NOT_EQUAL_D</a>(1, 5, 5) // expands to 0
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/or.html b/third_party/boostorg/preprocessor/doc/ref/or.html
new file mode 100644
index 0000000..778566a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/or.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_OR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_OR</b> macro expands to the logical <i>OR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_OR</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>p</i> or <i>q</i> is non-zero, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>OR</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="bitor.html">BOOST_PP_BITOR</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/or.html"><boost/preprocessor/logical/or.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/or.html">boost/preprocessor/logical/or.hpp</a>>
+
+<a href="or.html">BOOST_PP_OR</a>(4, 3) // expands to 1
+<a href="or.html">BOOST_PP_OR</a>(5, 0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/overload.html b/third_party/boostorg/preprocessor/doc/ref/overload.html
new file mode 100644
index 0000000..860b1e2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/overload.html
@@ -0,0 +1,58 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_OVERLOAD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_OVERLOAD</b> variadic
+ macro expands to the name of a non-variadic macro having a given number of
+ parameters.<br>
+ </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_OVERLOAD</b>(<i>prefix</i>,...) <a href="../topics/variadic_macros.html#VNotation"
+ target="_self"><sup>(v)</sup></a><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>prefix<br>
+ </dt>
+ <dd> The prefix of the non-variadic macro name. </dd>
+ <dt>...<br>
+ </dt>
+ <dd><i> Variadic data</i>. The number of variadic data
+ elements, as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
+ prefix to form the output non-variadic macro name.<br>
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro creates a macro name which depends on the number of
+ elements of variadic data. It should be used in the form of <br>
+ BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order to
+ call a non-variadic macro taking a given number of variadic data
+ elements as non-variadic arguments. In this way one can invoke a
+ variadic macro with a variable number of parameters which calls one of
+ a series of non-variadic macros doing very similar things.
+ </div>
+ <b>Requirements</b>
+ <div> <b>Header:</b> <a href="../headers/facilities/overload.html"><boost/preprocessor/facilities/overload.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/facilities/overload.html">boost/preprocessor/facilities/overload.hpp</a>><br>#include <<a
+ href="../headers/cat.html">boost/preprocessor/cat.hpp</a>><br>#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>><br>#include <<a
+ href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>><br><br>#define MACRO_1(number) MACRO_2(number,10)<br>#define MACRO_2(number1,number2) <a
+ href="add.html">BOOST_PP_ADD</a>(number1,number2)<br><br>#if !BOOST_PP_VARIADICS_MSVC<br><br>#define MACRO_ADD_NUMBERS(...) <a
+ href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__)<br><br>#else<br><br>// or for Visual C++<br><br>#define MACRO_ADD_NUMBERS(...) \<br> <a
+ href="cat.html">BOOST_PP_CAT</a>(<a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__),<a
+ href="empty.html">BOOST_PP_EMPTY</a>())<br><br>#endif<br><br>MACRO_ADD_NUMBERS(5) // output is 15<br>MACRO_ADD_NUMBERS(3,6) // output is 9</pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013,2016</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/relative_finish.html b/third_party/boostorg/preprocessor/doc/ref/relative_finish.html
new file mode 100644
index 0000000..d707c11
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/relative_finish.html
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_FINISH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_FINISH</b> macro expands to the upper bound of a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_FINISH</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose upper bound is to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/relative_flags.html b/third_party/boostorg/preprocessor/doc/ref/relative_flags.html
new file mode 100644
index 0000000..1e1a4a5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/relative_flags.html
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_FLAGS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_FLAGS</b> macro expands to the flags associated with a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_FLAGS</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose flags are to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/relative_iteration.html b/third_party/boostorg/preprocessor/doc/ref/relative_iteration.html
new file mode 100644
index 0000000..c2fe0f8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/relative_iteration.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_ITERATION</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_ITERATION</b> macro expands to the iteration value of a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose iteration value is to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ Therefore, <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>0</i>) is equivalent to <b>BOOST_PP_ITERATION</b>().
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+// file.h
+#if !<a href="is_iterating.html">BOOST_PP_IS_ITERATING</a>
+
+ #ifndef FILE_H_
+ #define FILE_H_
+
+ #include <<a href="../headers/iteration/iterate.html">boost/preprocessor/iteration/iterate.hpp</a>>
+
+1st iteration:
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (4, (0, 3, "file.h", 0x0001))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+2nd iteration:
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_1</a> (4, (1, 10, "file.h", 0x0002))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+ #endif
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1 \
+ && <a href="iteration_flags.html">BOOST_PP_ITERATION_FLAGS</a>() == 0x0001 \
+ /**/
+
+ --
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_2</a> (3, (1, 10, "file.h"))
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 1 \
+ && <a href="iteration_flags.html">BOOST_PP_ITERATION_FLAGS</a>() == 0x0002 \
+ /**/
+
+ --
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_2</a> \
+ (3, (1, <a href="iteration.html">BOOST_PP_ITERATION</a>(), "file.h")) \
+ /**/
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+#elif <a href="iteration_depth.html">BOOST_PP_ITERATION_DEPTH</a>() == 2 \
+ && <a href="frame_flags.html">BOOST_PP_FRAME_FLAGS</a>(1) == 0x0001 \
+ /**/
+
+ --
+ #define <a href="iteration_params_x.html">BOOST_PP_ITERATION_PARAMS_3</a> \
+ (3, (1, <a href="iteration.html">BOOST_PP_ITERATION</a>(), "file.h")) \
+ /**/
+ #include <a href="iterate.html">BOOST_PP_ITERATE</a>()
+
+#else // used by both
+
+ previous: <a href="relative_iteration.html">BOOST_PP_RELATIVE_ITERATION</a>(1)
+ current: <a href="iteration.html">BOOST_PP_ITERATION</a>()
+
+#endif
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/relative_start.html b/third_party/boostorg/preprocessor/doc/ref/relative_start.html
new file mode 100644
index 0000000..e335ef7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/relative_start.html
@@ -0,0 +1,46 @@
+<html>
+<head>
+ <title>BOOST_PP_RELATIVE_START</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RELATIVE_START</b> macro expands to the lower bound of a <i>file-iteration</i> depth relative to the current depth.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RELATIVE_START</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The relative depth of the frame whose lower bound is to be retreived.
+ Valid values range from <i>0</i> to <b>BOOST_PP_ITERATION_DEPTH</b>() - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro is only valid when a <i>file-iteration</i> is in progress.
+ </div>
+ <div>
+ The argument <i>i</i> is interpreted as the number of frames <i>outward</i> from the current frame.
+ </div>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/iteration/iterate.html"><boost/preprocessor/iteration/iterate.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/remove_parens.html b/third_party/boostorg/preprocessor/doc/ref/remove_parens.html
new file mode 100644
index 0000000..72312dd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/remove_parens.html
@@ -0,0 +1,44 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_REMOVE_PARENS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_REMOVE_PAREN</b>S macro
+ removes the beginning parenthesis, if it exists, from the input data and
+ expands to the result</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_REMOVE_PARENS</b>(param) <a href="../topics/variadic_macros.html#VNotation"
+ target="_self"><sup>(v)</sup></a></div>
+ <h4>Arguments <span style="font-weight: normal;"></span></h4>
+ <h4><span style="font-weight: normal;"> param</span>
+ <span style="font-weight: normal;">
+ The input data.</span></h4>
+ <h4>Remarks</h4>
+ <div> If the input begins with a parenthesis, with any data within that
+ parenthesis, the macro removes the parenthesis and expands to the result.
+ If the input does not begin with a parenthesis the macro expands to the
+ input.<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="is_begin_parens.html">BOOST_PP_IS_BEGIN_PARENS</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/punctuation/remove_parens.html"><boost/preprocessor/punctuation/remove_parens.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/punctuation/remove_parens.html">boost/preprocessor/punctuation/remove_parens.hpp</a>><br><br>#define DATA data<br>#define DATAP ( data ) more_data<br><br>BOOST_PP_REMOVE_PARENS(DATA) // expands to 'data'
+BOOST_PP_REMOVE_PARENS(DATAP) // expands to 'data more_data'<br>
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat.html b/third_party/boostorg/preprocessor/doc/ref/repeat.html
new file mode 100644
index 0000000..ebcaf8f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat.html
@@ -0,0 +1,80 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT</b> macro represents a fast horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define DECL(z, n, text) text ## n = n;
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_1st.html b/third_party/boostorg/preprocessor/doc/ref/repeat_1st.html
new file mode 100644
index 0000000..8de5442
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_1st.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_1ST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_1ST</b> macro represents the first dimension of <b>BOOST_PP_REPEAT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_1ST</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_1ST</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define DECL(z, n, text) text ## n = n;
+
+<a href="repeat_1st.html">BOOST_PP_REPEAT_1ST</a>(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_2nd.html b/third_party/boostorg/preprocessor/doc/ref/repeat_2nd.html
new file mode 100644
index 0000000..5e79439
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_2nd.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_2ND</b> macro represents the second dimension of <b>BOOST_PP_REPEAT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_2ND</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_2ND</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define DECL(z, n, text) text ## n = n;
+
+<a href="repeat_2nd.html">BOOST_PP_REPEAT_2ND</a>(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_3rd.html b/third_party/boostorg/preprocessor/doc/ref/repeat_3rd.html
new file mode 100644
index 0000000..9271adc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_3rd.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_3RD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_3RD</b> macro represents the third dimension of <b>BOOST_PP_REPEAT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_3RD</b>(<i>count</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>count</dt>
+ <dd>
+ The number of repetitious calls to <i>macro</i>.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_3RD</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define DECL(z, n, text) text ## n = n;
+
+<a href="repeat_3rd.html">BOOST_PP_REPEAT_3RD</a>(5, DECL, int x)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to.html
new file mode 100644
index 0000000..66f7f00
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to.html
@@ -0,0 +1,102 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO</b> macro represents a fast horizontal repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_REPEAT</b>.
+ This limitation no longer exists, as the library can automatically detect the next available repetition depth.
+ </div>
+ <div>
+ This macro also uses <b>BOOST_PP_WHILE</b>.
+ Because of this, there are also two variants of this macro for ideal reentrance into <b>BOOST_PP_WHILE</b>,
+ <b>BOOST_PP_REPEAT_FROM_TO_D</b> and <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_from_to_d.html">BOOST_PP_REPEAT_FROM_TO_D</a></li>
+ <li><a href="repeat_from_to_d_z.html">BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></a></li>
+ <li><a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/repetition/repeat_from_to.html">boost/preprocessor/repetition/repeat_from_to.hpp</a>>
+
+#define DECL(z, n, text) <a href="cat.html">BOOST_PP_CAT</a>(text, n) = n;
+
+<a href="repeat_from_to.html">BOOST_PP_REPEAT_FROM_TO</a>(5, 10, DECL, int x)
+ /*
+ expands to:
+ int x5 = 5; int x6 = 6; int x7 = 7;
+ int x8 = 8; int x9 = 9;
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_1st.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_1st.html
new file mode 100644
index 0000000..8dd1e00
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_1st.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_1ST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_1ST</b> macro represents the first dimension of <b>BOOST_PP_REPEAT_FROM_TO</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_1ST</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_FROM_TO_1ST</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT_FROM_TO</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat_from_to.html">boost/preprocessor/repetition/repeat_from_to.hpp</a>>
+
+#define MACRO(z, n, data) (n)
+
+<a href="repeat_from_to_1st.html">BOOST_PP_REPEAT_FROM_TO_1ST</a>(1, 6, MACRO, nil)
+ // expands to (1) (2) (3) (4) (5)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_2nd.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_2nd.html
new file mode 100644
index 0000000..b2e8a3a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_2nd.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_2ND</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_2ND</b> macro represents the second dimension of <b>BOOST_PP_REPEAT_FROM_TO</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_2ND</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_FROM_TO_2ND</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT_FROM_TO</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat_from_to.html">boost/preprocessor/repetition/repeat_from_to.hpp</a>>
+
+#define MACRO(z, n, data) (n)
+
+<a href="repeat_from_to_2nd.html">BOOST_PP_REPEAT_FROM_TO_2ND</a>(1, 6, MACRO, nil)
+ // expands to (1) (2) (3) (4) (5)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_3rd.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_3rd.html
new file mode 100644
index 0000000..9f85f49
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_3rd.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_3RD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_3RD</b> macro represents the third dimension of <b>BOOST_PP_REPEAT_FROM_TO</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_3RD</b>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT_FROM_TO_3RD</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b>.
+ </div>
+ <div>
+ This macro is deprecated.
+ It only exists for backward compatibility.
+ Use <b>BOOST_PP_REPEAT_FROM_TO</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat_from_to.html">boost/preprocessor/repetition/repeat_from_to.hpp</a>>
+
+#define MACRO(z, n, data) (n)
+
+<a href="repeat_from_to_3rd.html">BOOST_PP_REPEAT_FROM_TO_3RD</a>(1, 6, MACRO, nil)
+ // expands to (1) (2) (3) (4) (5)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_d.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_d.html
new file mode 100644
index 0000000..a3a1035
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_d.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_D</b> macro represents a fast horizontal repetition construct.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_D</b>(<i>d</i>, <i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>z</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_from_to.html">BOOST_PP_REPEAT_FROM_TO</a></li>
+ <li><a href="repeat_from_to_d_z.html">BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_d_z.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_d_z.html
new file mode 100644
index 0000000..bc6b7b6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_d_z.html
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_D_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></b> macro represents a fast horizontal repetition construct.
+ It reenters both <b>BOOST_PP_REPEAT</b> and <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></b>(<i>d</i>, <i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ The <i>z</i> value that is passed to <i>macro</i> represents the next available repetition dimension.
+ Other macros that have <b>_Z</b> suffix variants internally use <b>BOOST_PP_REPEAT</b>--for example, <b>BOOST_PP_ENUM_PARAMS</b> and <b>BOOST_PP_ENUM_PARAMS_Z</b>.
+ Using these <b>_Z</b> versions is not strictly necessary, but passing the <i>z</i> value (that is passed to <i>macro</i>) to these macros allows them to reenter <b>BOOST_PP_REPEAT</b> with maximum efficiency.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat_from_to.html">BOOST_PP_REPEAT_FROM_TO</a></li>
+ <li><a href="repeat_from_to_d.html">BOOST_PP_REPEAT_FROM_TO_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_z.html b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_z.html
new file mode 100644
index 0000000..e3f9dae
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_from_to_z.html
@@ -0,0 +1,105 @@
+<html>
+<head>
+ <title>BOOST_PP_REPEAT_FROM_TO_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_REPEAT_FROM_TO_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_REPEAT_FROM_TO</b> repetition construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_REPEAT_FROM_TO_</b> ## <i>z</i>(<i>first</i>, <i>last</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd>
+ The next available <b>BOOST_PP_REPEAT</b> dimension.
+ </dd>
+ <dt>first</dt>
+ <dd>
+ The lower bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>last</dt>
+ <dd>
+ The upper bound of the repetition.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
+ the current repetition number, and the auxiliary <i>data</i> argument.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro expands to the sequence:
+ <div>
+ <i>macro</i>(<i>z</i>, <i>first</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>first</i> + <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>last</i> - <i>1</i>, <i>data</i>)
+ </div>
+ </div>
+ <div>
+ The number of repetitions (i.e. <i>last</i> - <i>first</i>) must not exceed <b>BOOST_PP_LIMIT_REPEAT</b>.
+ </div>
+ <div>
+ At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.
+ This happens when the <i>z</i> value is a macro invocation itself.
+ It needs a delay to allow it to expand.
+ The syntax in such a scenario becomes:
+ <div>
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_REPEAT_FROM_TO_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>).
+ </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/repetition/repeat_from_to.html"><boost/preprocessor/repetition/repeat_from_to.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/repetition/repeat_from_to.html">boost/preprocessor/repetition/repeat_from_to.hpp</a>>
+
+#define TEXT(z, n, data) n data
+
+#define MACRO(z, n, data) \
+ ( \
+ <a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_</a> ## z( \
+ 1, 4, \
+ TEXT, xyz \
+ ) \
+ ) \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(3, MACRO, _)
+ /*
+ expands to:
+ (1 xyz 2 xyz 3 xyz)
+ (1 xyz 2 xyz 3 xyz)
+ (1 xyz 2 xyz 3 xyz)
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_z.html b/third_party/boostorg/preprocessor/doc/ref/repeat_z.html
new file mode 100644
index 0000000..f18da06
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_z.html
@@ -0,0 +1,92 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_REPEAT_z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_REPEAT_<i>z</i></b> macro
+ represents a reentry into the <b>BOOST_PP_REPEAT</b> repetition
+ construct. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_REPEAT_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>,
+ <i>data</i>) </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd> The next available <b>BOOST_PP_REPEAT</b> dimension. </dd>
+ <dt>count</dt>
+ <dd> The number of repetitious calls to <i>macro</i>. Valid values
+ range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>. </dd>
+ <dt>macro</dt>
+ <dd> A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).
+ This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next
+ available repetition depth, the current repetition number, and the
+ auxiliary <i>data</i> argument. </dd>
+ <dt>data</dt>
+ <dd> Auxiliary data passed to <i>macro</i>. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro expands to the sequence:
+ <div> <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>,
+ <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>,
+ <i>data</i>) </div>
+ </div>
+ <div> At certain times, it may be necessary to perform the concatenation
+ with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting
+ operator. This happens when the <i>z</i> value is a macro
+ invocation itself. It needs a delay to allow it to expand. The
+ syntax in such a scenario becomes:
+ <div> <b>BOOST_PP_CAT</b>(<b>BOOST_PP_REPEAT_</b>, <i>z</i>)(<i>count</i>,
+ <i>macro</i>, <i>data</i>) </div>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
+ <li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="repeat_z_macros.html"><span style="color: gray;">Macros with
+ Z re-entrancy forms</span></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/repetition/repeat.html"><boost/preprocessor/repetition/repeat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>>
+#include <<a href="../headers/punctuation/comma_if.html">boost/preprocessor/punctuation/comma_if.hpp</a>>
+#include <<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>>
+
+#define TEXT(z, n, text) <a href="comma_if.html">BOOST_PP_COMMA_IF</a>(n) text
+
+#define TEMPLATE(z, n, _) \
+ <a href="comma_if.html">BOOST_PP_COMMA_IF</a>(n) \
+ template< \
+ <a href="repeat_z.html">BOOST_PP_REPEAT_</a> ## z( \
+ <a href="inc.html">BOOST_PP_INC</a>(n), \
+ TEXT, class \
+ ) \
+ > class T ## n \
+ /**/
+
+<a href="repeat.html">BOOST_PP_REPEAT</a>(3, TEMPLATE, nil)
+ /*
+ expands to:
+ template<class> class T0,
+ template<class, class> class T1,
+ template<class, class, class> class T2
+ */
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2014</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/repeat_z_macros.html b/third_party/boostorg/preprocessor/doc/ref/repeat_z_macros.html
new file mode 100644
index 0000000..14b8182
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/repeat_z_macros.html
@@ -0,0 +1,45 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_REPEAT_z_macros</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>This is a list, based on functionality, of the macros which have an
+ alternate <b>_z<i></i></b> name, representing a reentry into the <b>BOOST_PP_REPEAT</b>
+ looping construct:<br>
+ <br>
+ array<br>
+ <ul>
+ <li><a href="array_pop_back_z.html">BOOST_PP_ARRAY_POP_BACK_Z</a></li>
+ <li><a href="array_pop_front_z.html">BOOST_PP_ARRAY_POP_FRONT_Z</a></li>
+ </ul>
+ repetition<br>
+ <ul>
+ <li><a href="deduce_z.html">BOOST_PP_DEDUCE_Z</a></li>
+ <li><a href="enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a></li>
+ <li><a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a></li>
+ <li><a href="esbpz.html">BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
+ <li><a href="enum_shifted_params_z.html">BOOST_PP_ENUM_SHIFTED_PARAMS_Z</a></li>
+ <li><a href="enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_<i>z</i></a></li>
+ <li><a href="etbpz.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
+ <li><a href="enum_trailing_params_z.html">BOOST_PP_ENUM_TRAILING_PARAMS_Z</a></li>
+ <li><a href="enum_trailing_z.html">BOOST_PP_ENUM_TRAILING_<i>z</i></a></li>
+ <li><a href="enum_z.html">BOOST_PP_ENUM_<i>z</i></a></li>
+ <li><a href="repeat_from_to_d_z.html">BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></a></li>
+ <li><a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
+ </ul>
+ base<br>
+ <ul>
+ <li><a href="repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
+ </ul>
+ <br>
+ <pre></pre>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/rparen.html b/third_party/boostorg/preprocessor/doc/ref/rparen.html
new file mode 100644
index 0000000..5edfd4c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/rparen.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <title>BOOST_PP_RPAREN</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RPAREN</b> macro expands to a right parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RPAREN</b>()
+ </div>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="lparen.html">BOOST_PP_LPAREN</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/punctuation/paren.html"><boost/preprocessor/punctuation/paren.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>>
+#include <<a href="../headers/punctuation/paren.html">boost/preprocessor/punctuation/paren.hpp</a>>
+
+#define X(x) x
+#define MACRO(x, p) X ( x p
+
+MACRO(abc, <a href="rparen.html">BOOST_PP_RPAREN</a>()) // expands to abc
+
+#define Y(x)
+
+MACRO(<a href="empty.html">BOOST_PP_EMPTY</a> <a href="rparen.html">BOOST_PP_RPAREN</a>()(), 10) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/rparen_if.html b/third_party/boostorg/preprocessor/doc/ref/rparen_if.html
new file mode 100644
index 0000000..1e13528
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/rparen_if.html
@@ -0,0 +1,61 @@
+<html>
+<head>
+ <title>BOOST_PP_RPAREN_IF</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_RPAREN_IF</b> macro conditionally expands to a right parenthesis.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_RPAREN_IF</b>(<i>cond</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>cond</dt>
+ <dd>
+ The condition that determines if a the macro expands to a right parenthesis or nothing.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If <i>cond</i> expands to <i>0</i>, this macro expands to nothing.
+ Otherwise, it expands to a right parenthesis.
+ </div>
+ <div>
+ The preprocessor interprets parentheses as delimiters in macro invocations.
+ Because of this, parentheses require special handling.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="lparen_if.html">BOOST_PP_LPAREN_IF</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/punctuation/paren_if.html"><boost/preprocessor/punctuation/paren_if.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/punctuation/paren_if.html">boost/preprocessor/punctuation/paren_if.hpp</a>>
+
+#define MACRO(c, x) <a href="lparen_if.html">BOOST_PP_LPAREN_IF</a>(c) x <a href="rparen_if.html">BOOST_PP_RPAREN_IF</a>(c)
+
+MACRO(0, text) // expands to text
+MACRO(1, text) // expands to (text)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_cat.html b/third_party/boostorg/preprocessor/doc/ref/seq_cat.html
new file mode 100644
index 0000000..8cf87c5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_cat.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_CAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_CAT</b> macro concatenates all elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_CAT</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_CAT_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_cat_s.html">BOOST_PP_SEQ_CAT_S</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/cat.html"><boost/preprocessor/seq/cat.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <<a href="../headers/seq/cat.html">boost/preprocessor/seq/cat.hpp</a>><br><br>#define SEQ (a)(b)(c)<br><br><a href="seq_cat.html">BOOST_PP_SEQ_CAT</a>(SEQ) // expands to abc<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_cat_s.html b/third_party/boostorg/preprocessor/doc/ref/seq_cat_s.html
new file mode 100644
index 0000000..0683176
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_cat_s.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_CAT_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_CAT_S</b> macro concatenates all elements in a <i>seq</i>.
+ It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_CAT_S</b>(<i>s</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose elements are to be concatenated.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ Elements are concatenated left-to-right starting with index <i>0</i>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_cat.html">BOOST_PP_SEQ_CAT</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/cat.html"><boost/preprocessor/seq/cat.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_elem.html b/third_party/boostorg/preprocessor/doc/ref/seq_elem.html
new file mode 100644
index 0000000..fa59744
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_elem.html
@@ -0,0 +1,59 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_ELEM</b> macro extracts an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_ELEM</b>(<i>i</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The zero-based index of the element to be extracted.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which an element is to be extracted.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ The index <i>i</i> must be in the range of <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>)
+ - <i>1</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/elem.html"><boost/preprocessor/seq/elem.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <<a href="../headers/seq/elem.html">boost/preprocessor/seq/elem.hpp</a>><br><br><a href="seq_elem.html">BOOST_PP_SEQ_ELEM</a>(1, (a)(b)(c)) // expands to b<br><br>#define SEQ \<br> (0)(1)(2)(3)(4)(5)(6)(7)(8)(9) \<br> (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \<br> (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \<br> (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \<br> (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \<br> (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \<br> (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \<br> (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \<br> (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \<br> (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \<br> /**/<br><br><a href="seq_elem.html">BOOST_PP_SEQ_ELEM</a>(88, SEQ) // expands to 88<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_enum.html b/third_party/boostorg/preprocessor/doc/ref/seq_enum.html
new file mode 100644
index 0000000..8c7373d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_enum.html
@@ -0,0 +1,66 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_ENUM</b> macro enumerates the elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_ENUM</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from whose elements are to be enumerated.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands to a comma-separated list of the elements in <i>seq</i>.
+ For example, <b>BOOST_PP_SEQ_ENUM</b>((<i>x</i>)(<i>y</i>)(<i>z</i>)) expands
+ to...
+ <div>
+ <i>x</i>, <i>y</i>, <i>z</i>
+ </div>
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/enum.html"><boost/preprocessor/seq/enum.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/enum.html">boost/preprocessor/seq/enum.hpp</a>>
+
+#define SEQ (B)(O)(O)(S)(T)
+
+<a href="seq_enum.html">BOOST_PP_SEQ_ENUM</a>(SEQ) // expands to B, O, O, S, T
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_filter.html b/third_party/boostorg/preprocessor/doc/ref/seq_filter.html
new file mode 100644
index 0000000..f08037b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_filter.html
@@ -0,0 +1,93 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FILTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FILTER</b> macro filters a <i>seq</i> according to a
+ supplied criterion.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FILTER</b>(<i>pred</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_SEQ_FILTER</b> for each element in <i>seq</i>
+ with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step, the auxiliary <i>data</i>,
+ and the current element in <i>seq</i>. This macro must return a integral
+ value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>. If this
+ predicate expands to non-zero for a certain element, that element is included
+ in the resulting <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>seq</i>. It builds
+ a new <i>seq</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FILTER_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li>
+ <a href="seq_filter_s.html">BOOST_PP_SEQ_FILTER_S</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/filter.html"><boost/preprocessor/seq/filter.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/comparison/less_equal.html">boost/preprocessor/comparison/less_equal.hpp</a>>
+#include <<a href="../headers/seq/filter.html">boost/preprocessor/seq/filter.hpp</a>>
+
+#define SEQ (1)(3)(2)(5)
+
+#define PRED(s, data, elem) <a href="less_equal.html">BOOST_PP_LESS_EQUAL</a>(elem, data)
+
+<a href="seq_filter.html">BOOST_PP_SEQ_FILTER</a>(PRED, 3, SEQ)
+ // expands to (1)(3)(2)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_filter_s.html b/third_party/boostorg/preprocessor/doc/ref/seq_filter_s.html
new file mode 100644
index 0000000..9599c4e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_filter_s.html
@@ -0,0 +1,79 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FILTER_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FILTER_S</b> macro filters a <i>seq</i> according to a
+ supplied criterion. It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b> with
+ maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FILTER_S</b>(<i>s</i>, <i>pred</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>pred</dt>
+ <dd>
+ A ternary predicate of the form <i>pred</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This predicate is expanded by <b>BOOST_PP_SEQ_FILTER</b> for each element in <i>seq</i>
+ with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step, the auxiliary <i>data</i>,
+ and the current element in <i>seq</i>. This macro must return a integral
+ value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>. If this
+ predicate expands to non-zero for a certain element, that element is included
+ in the resulting <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be filtered.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>pred</i> for each element in <i>seq</i>. It builds
+ a new <i>seq</i> out of each element for which <i>pred</i> returns non-zero.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li>
+ <a href="seq_filter.html">BOOST_PP_SEQ_FILTER</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/filter.html"><boost/preprocessor/seq/filter.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_first_n.html b/third_party/boostorg/preprocessor/doc/ref/seq_first_n.html
new file mode 100644
index 0000000..5c8e9e6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_first_n.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_FIRST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FIRST_N</b> macro expands to a <i>seq</i> of the first <i>n</i>
+ elements of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FIRST_N</b>(<i>n</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>n</dt>
+ <dd>
+ The number of elements to extract.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the elements are extracted.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro extracts <i>n</i> elements from the beginning of <i>seq</i> and
+ returns them as a new <i>seq</i>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/first_n.html"><boost/preprocessor/seq/first_n.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <<a href="../headers/seq/first_n.html">boost/preprocessor/seq/first_n.hpp</a>><br><br>#define SEQ (a)(b)(c)(d)(e)<br><br><a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a>(2, SEQ) // expands to (a)(b)<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_fold_left.html b/third_party/boostorg/preprocessor/doc/ref/seq_fold_left.html
new file mode 100644
index 0000000..e9feb3d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_fold_left.html
@@ -0,0 +1,90 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_LEFT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_LEFT</b> macro folds (or accumulates) the elements of
+ a <i>seq</i> left-to-right.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_LEFT</b>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_LEFT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>0</i>),
+ <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, <b>BOOST_PP_SEQ_FOLD_LEFT</b> can be reentered with <b>BOOST_PP_SEQ_FOLD_LEFT_<i>s</i></b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_fold_left_s.html">BOOST_PP_SEQ_FOLD_LEFT_<i>s</i></a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/fold_left.html"><boost/preprocessor/seq/fold_left.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/seq/fold_left.html">boost/preprocessor/seq/fold_left.hpp</a>>
+
+#define SEQ (b)(o)(o)(s)(t)
+
+#define OP(s, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="seq_fold_left.html">BOOST_PP_SEQ_FOLD_LEFT</a>(OP, <a href="seq_head.html">BOOST_PP_SEQ_HEAD</a>(SEQ), <a href="seq_tail.html">BOOST_PP_SEQ_TAIL</a>(SEQ)) // expands to boost
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_fold_left_s.html b/third_party/boostorg/preprocessor/doc/ref/seq_fold_left_s.html
new file mode 100644
index 0000000..936b674
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_fold_left_s.html
@@ -0,0 +1,96 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_LEFT_s</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_LEFT_<i>s</i></b> macro folds (or accumulates) the
+ elements of a <i>seq</i> left-to-right. It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_LEFT_</b> ## <i>s</i>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_LEFT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>0</i>),
+ <i>1</i>), <i>2</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_fold_left.html">BOOST_PP_SEQ_FOLD_LEFT</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/fold_left.html"><boost/preprocessor/seq/fold_left.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/seq/fold_left.html">boost/preprocessor/seq/fold_left.hpp</a>>
+#include <<a href="../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp</a>>
+
+#define S1 (a)(b)(c)
+#define S2 (S1)(S1)(S1)
+
+#define OP(s, state, x) state (<a href="seq_fold_left_s.html">BOOST_PP_SEQ_FOLD_LEFT_</a> ## s(OP_2, _, x))
+#define OP_2(s, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="seq_fold_left.html">BOOST_PP_SEQ_FOLD_LEFT</a>(OP, <a href="seq_nil.html">BOOST_PP_SEQ_NIL</a>, S2)
+// expands to (_abc)(_abc)(_abc)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_fold_right.html b/third_party/boostorg/preprocessor/doc/ref/seq_fold_right.html
new file mode 100644
index 0000000..0cd8514
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_fold_right.html
@@ -0,0 +1,92 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_RIGHT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_RIGHT</b> macro folds (or accumulates) the elements of
+ a <i>seq</i> right-to-left.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_RIGHT</b>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_RIGHT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>2</i>),
+ <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, <b>BOOST_PP_SEQ_FOLD_RIGHT</b> can be reentered with <b>BOOST_PP_SEQ_FOLD_RIGHT_<i>s</i></b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_fold_right_s.html">BOOST_PP_SEQ_FOLD_RIGHT_<i>s</i></a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/fold_right.html"><boost/preprocessor/seq/fold_right.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/seq/elem.html">boost/preprocessor/seq/elem.hpp</a>>
+#include <<a href="../headers/seq/fold_right.html">boost/preprocessor/seq/fold_right.hpp</a>>
+#include <<a href="../headers/seq/pop_back.html">boost/preprocessor/seq/pop_back.hpp</a>>
+
+#define SEQ (t)(s)(o)(o)(b)
+
+#define OP(s, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="seq_fold_right.html">BOOST_PP_SEQ_FOLD_RIGHT</a>(OP, <a href="seq_elem.html">BOOST_PP_SEQ_ELEM</a>(4, SEQ), <a href="seq_pop_back.html">BOOST_PP_SEQ_POP_BACK</a>(SEQ)) // expands to boost
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_fold_right_s.html b/third_party/boostorg/preprocessor/doc/ref/seq_fold_right_s.html
new file mode 100644
index 0000000..99c348b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_fold_right_s.html
@@ -0,0 +1,97 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOLD_RIGHT_s</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOLD_RIGHT_<i>s</i></b> macro folds (or accumulates) the
+ elements of a <i>seq</i> right-to-left. It reenters <b>BOOST_PP_SEQ_FOLD_RIGHT</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOLD_RIGHT_</b> ## <i>s</i>(<i>op</i>, <i>state</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary operation of the form <i>op</i>(<i>s</i>, <i>state</i>, <i>elem</i>).
+ This macro is called for each element in <i>seq</i>--each time returning a new <i>state</i>.
+ This operation is expanded by <b>BOOST_PP_SEQ_FOLD_RIGHT</b> with the next
+ available fold step, the current <i>state</i>, and the current element.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state of the fold.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be folded.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For the <i>seq</i>, (<i>0</i>)(<i>1</i>)(<i>2</i>), this macro expands to:
+ <div>
+ <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>op</i>(<i>s</i>, <i>state</i>, <i>2</i>),
+ <i>1</i>), <i>0</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_fold_right.html">BOOST_PP_SEQ_FOLD_RIGHT</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/fold_right.html"><boost/preprocessor/seq/fold_right.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/seq/fold_left.html">boost/preprocessor/seq/fold_left.hpp</a>>
+#include <<a href="../headers/seq/fold_right.html">boost/preprocessor/seq/fold_right.hpp</a>>
+#include <<a href="../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp</a>>
+
+#define S1 (a)(b)(c)
+#define S2 (S1)(S1)(S1)
+
+#define OP(s, state, x) state (<a href="seq_fold_left_s.html">BOOST_PP_SEQ_FOLD_RIGHT_</a> ## s(OP_2, _, x))
+#define OP_2(s, state, x) <a href="cat.html">BOOST_PP_CAT</a>(state, x)
+
+<a href="seq_fold_left.html">BOOST_PP_SEQ_FOLD_LEFT</a>(OP, <a href="seq_nil.html">BOOST_PP_SEQ_NIL</a>, S2)
+// expands to (_cba)(_cba)(_cba)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_for_each.html b/third_party/boostorg/preprocessor/doc/ref/seq_for_each.html
new file mode 100644
index 0000000..1f22ff2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_for_each.html
@@ -0,0 +1,90 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH</b> macro repeats a macro for each element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH</b>(<i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FOR_EACH_R</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_for_each_r.html">BOOST_PP_SEQ_FOR_EACH_R</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/for_each.html"><boost/preprocessor/seq/for_each.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/seq/for_each.html">boost/preprocessor/seq/for_each.hpp</a>>
+
+#define SEQ (w)(x)(y)(z)
+
+#define MACRO(r, data, elem) <a href="cat.html">BOOST_PP_CAT</a>(elem, data)
+
+<a href="seq_for_each.html">BOOST_PP_SEQ_FOR_EACH</a>(MACRO, _, SEQ) // expands to w_ x_ y_ z_
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_for_each_i.html b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_i.html
new file mode 100644
index 0000000..c24f40f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_i.html
@@ -0,0 +1,91 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_I</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_I</b> macro repeats a macro for each element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_I</b>(<i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ A macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH_I</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, the index of the current element, and the current
+ element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FOR_EACH_I_R</a></li>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_for_each_i_r.html">BOOST_PP_SEQ_FOR_EACH_I_R</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/for_each_i.html"><boost/preprocessor/seq/for_each_i.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/seq/for_each_i.html">boost/preprocessor/seq/for_each_i.hpp</a>>
+
+#define SEQ (a)(b)(c)(d)
+
+#define MACRO(r, data, i, elem) <a href="cat.html">BOOST_PP_CAT</a>(elem, <a href="cat.html">BOOST_PP_CAT</a>(data, i))
+
+<a href="seq_for_each_i.html">BOOST_PP_SEQ_FOR_EACH_I</a>(MACRO, _, SEQ) // expands to a_0 b_1 c_2 d_3
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_for_each_i_r.html b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_i_r.html
new file mode 100644
index 0000000..2ab590e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_i_r.html
@@ -0,0 +1,78 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_I_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_I_R</b> macro repeats a macro for each element in
+ a <i>seq</i>. It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_I_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>i</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH_I</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, the index of the current element, and the current
+ element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>0</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>1</i>, <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>2</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_for_each_i.html">BOOST_PP_SEQ_FOR_EACH_I</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/for_each_i.html"><boost/preprocessor/seq/for_each_i.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_for_each_product.html b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_product.html
new file mode 100644
index 0000000..a1876f6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_product.html
@@ -0,0 +1,100 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_PRODUCT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT</b> macro repeats a macro for each
+ cartesian product of several <i>seqs</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT</b>(<i>macro</i>, <i>seqs</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>). This
+ macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian
+ product in <i>seqs</i>. It is expanded with the next available <b>BOOST_PP_FOR</b>
+ repetition and a <i>seq</i> containing a cartesian product.
+ </dd>
+ <dt>seqs</dt>
+ <dd>
+ A <i>seq</i> of <i>seqs</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If two <i>seqs</i> are (<i>a</i>)(<i>b</i>)(<i>c</i>)
+ and (<i>x</i>)(<i>y</i>)(<i>z</i>), this macro will produce the following
+ sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>z</i>))
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_for_each_product_r.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/for_each_product.html"><boost/preprocessor/seq/for_each_product.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/for_each_product.html">boost/preprocessor/seq/for_each_product.hpp</a>>
+#include <<a href="../headers/seq/to_tuple.html">boost/preprocessor/seq/to_tuple.hpp</a>>
+
+#define S1 (a)(b)(c)
+#define S2 (x)(y)(z)
+#define S3 (p)(q)
+
+#define MACRO(r, product) <a href="seq_to_tuple.html">BOOST_PP_SEQ_TO_TUPLE</a>(product)
+
+<a href="seq_for_each_product.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT</a>(MACRO, (S1)(S2)(S3))
+ // expands to:
+ // (a, x, p) (a, x, q) (a, y, p) (a, y, q) (a, z, p) (a, z, q)
+ // (b, x, p) (b, x, q) (b, y, p) (b, y, q) (b, z, p) (b, z, q)
+ // (c, x, p) (c, x, q) (c, y, p) (c, y, q) (c, z, p) (c, z, q)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_for_each_product_r.html b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_product_r.html
new file mode 100644
index 0000000..fa2a989
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_product_r.html
@@ -0,0 +1,81 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</b> macro repeats a macro for each
+ cartesian product of several <i>seqs</i>. It reenters <b>BOOST_PP_FOR</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</b>(<i>r</i>, <i>macro</i>, <i>seqs</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ The binary macro of the form <i>macro</i>(<i>r</i>, <i>product</i>). This
+ macro is expanded by <b>BOOST_PP_FOR_EACH_PRODUCT</b> with each cartesian
+ product in <i>seqs</i>. It is expanded with the next available <b>BOOST_PP_FOR</b>
+ repetition and a <i>seq</i> containing a cartesian product.
+ </dd>
+ <dt>seqs</dt>
+ <dd>
+ A <i>seq</i> of <i>seqs</i> from which cartesian products are obtained.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If two <i>seqs</i> are (<i>a</i>)(<i>b</i>)(<i>c</i>)
+ and (<i>x</i>)(<i>y</i>)(<i>z</i>), this macro will produce the following
+ sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>a</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>b</i>)(<i>z</i>)) \
+ <br>
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>x</i>)) <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>y</i>))
+ <i>macro</i>(<i>r</i>, (<i>c</i>)(<i>z</i>))
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_for_each_product.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/for_each_product.html"><boost/preprocessor/seq/for_each_product.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_for_each_r.html b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_r.html
new file mode 100644
index 0000000..45462e8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_for_each_r.html
@@ -0,0 +1,77 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_FOR_EACH_R</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_FOR_EACH_R</b> macro repeats a macro for each element in a <i>seq</i>.
+ It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_FOR_EACH_R</b>(<i>r</i>, <i>macro</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>r</dt>
+ <dd>
+ The next available <b>BOOST_PP_FOR</b> repetition.
+ </dd>
+ <dt>macro</dt>
+ <dd>
+ A ternary macro of the form <i>macro</i>(<i>r</i>, <i>data</i>, <i>elem</i>).
+ This macro is expanded by <b>BOOST_PP_SEQ_FOR_EACH</b> with each element in <i>seq</i>.
+ It is expanded with the next available <b>BOOST_PP_FOR</b> repetition, the
+ auxiliary <i>data</i>, and the current element.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>macro</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> for which <i>macro</i> will be invoked on each element.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a repetition construct. If <i>seq</i> is (<i>a</i>)(<i>b</i>)(<i>c</i>),
+ it expands to the sequence:
+ <div>
+ <i>macro</i>(<i>r</i>, <i>data</i>, <i>a</i>) <i>macro</i>(<i>r</i>, <i>data</i>,
+ <i>b</i>) <i>macro</i>(<i>r</i>, <i>data</i>, <i>c</i>)
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_for_each.html">BOOST_PP_SEQ_FOR_EACH</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/for_each.html"><boost/preprocessor/seq/for_each.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_head.html b/third_party/boostorg/preprocessor/doc/ref/seq_head.html
new file mode 100644
index 0000000..93f0fd4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_head.html
@@ -0,0 +1,63 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_HEAD</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_HEAD</b> macro expands to the first element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_HEAD</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the first element is extracted.
+ </dd>
+ </dl>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_tail.html">BOOST_PP_SEQ_TAIL</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/seq.html"><boost/preprocessor/seq/seq.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_head.html">BOOST_PP_SEQ_HEAD</a>(SEQ) // expands to a
+<a href="seq_tail.html">BOOST_PP_SEQ_TAIL</a>(SEQ) // expands to (b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_insert.html b/third_party/boostorg/preprocessor/doc/ref/seq_insert.html
new file mode 100644
index 0000000..d339ea8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_insert.html
@@ -0,0 +1,70 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_INSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_INSERT</b> macro inserts an element into an <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_INSERT</b>(<i>seq</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> into which an element is to be inserted.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>seq</i> where an element is to be inserted.
+ Valid values range from <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to insert.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/insert.html"><boost/preprocessor/seq/insert.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/insert.html">boost/preprocessor/seq/insert.hpp</a>>
+
+#define SEQ (a)(b)(d)
+
+<a href="seq_insert.html">BOOST_PP_SEQ_INSERT</a>(SEQ, 2, c) // expands to (a)(b)(c)(d)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_nil.html b/third_party/boostorg/preprocessor/doc/ref/seq_nil.html
new file mode 100644
index 0000000..bb446ed
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_nil.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_NIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_NIL</b> macro is a placeholder macro for an empty <i>seq</i>.
+ It is only valid if it's elements are appended to the end of this empty
+ "seq."
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_NIL</b>
+ </div>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro is a utility macro intended as a empty starting point for appending
+ to the tail. It is <i>not</i> a nil <i>seq</i>. When an element is
+ appended to this macro, it expands on the element and to the element--thereby
+ removing itself. For example, both <b>BOOST_PP_SEQ_NIL</b>(<i>x</i>) and <b>BOOST_PP_SEQ_PUSH_BACK</b>(<b>BOOST_PP_SEQ_NIL</b>,
+ <i>x</i>) expand to <i>x</i>.
+ </div>
+ <div>
+ If any <b>BOOST_PP_SEQ_</b>* macro (other than <b>BOOST_PP_SEQ_PUSH_BACK</b>)
+ is invoked with an argument that contains <b>BOOST_PP_SEQ_NIL</b>, the behavior
+ is undefined and in most cases will result in obscure errors.
+ </div>
+ <div>
+ The closest thing available to <b>BOOST_PP_SEQ_NIL</b> for appending to the
+ head is <b>BOOST_PP_EMPTY</b>. After all the elements have been
+ prepended, empty parenthesis can be invoked on the tail to remove the <b>BOOST_PP_EMPTY</b>.
+ As with <b>BOOST_PP_SEQ_NIL</b>, passing an argument that contains <b>BOOST_PP_EMPTY</b>
+ to any <b>BOOST_PP_SEQ_</b>* macro (other than <b>BOOST_PP_SEQ_PUSH_FRONT</b>)
+ is undefined.
+ </div>
+ <div>
+ (It is also possible to start with an extra element and pop it off when you
+ have finished appending to it.)
+ </div>
+ <div>
+ In C99, neither of these macros are necessary since it is legal to pass empty
+ arguments.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="empty.html">BOOST_PP_EMPTY</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/seq.html"><boost/preprocessor/seq/seq.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>><br>#include <<a href="../headers/seq/push_back.html">boost/preprocessor/seq/push_back.hpp</a>><br>#include <<a href="../headers/seq/push_front.html">boost/preprocessor/seq/push_front.hpp</a>><br>#include <<a href="../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp</a>><br><br>#define SEQ_L <a href="seq_nil.html">BOOST_PP_SEQ_NIL</a>
+#define SEQ_R <a href="empty.html">BOOST_PP_EMPTY</a>
+<a href="seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a>(<br> <a href="seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a>(SEQ_L, a), b<br>)<br><br>// expands to (a)(b)<br><br><a href="seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a>(<br> <a href="seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a>(SEQ_R, a), b<br>)()<br><br>// expands to (b)(a)<br></pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_pop_back.html b/third_party/boostorg/preprocessor/doc/ref/seq_pop_back.html
new file mode 100644
index 0000000..3e788e5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_pop_back.html
@@ -0,0 +1,68 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_POP_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_POP_BACK</b> macro pops an element from the end of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_POP_BACK</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after removing the last element.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_pop_front.html">BOOST_PP_SEQ_POP_FRONT</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/pop_back.html"><boost/preprocessor/seq/pop_back.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/pop_back.html">boost/preprocessor/seq/pop_back.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_pop_back.html">BOOST_PP_SEQ_POP_BACK</a>(SEQ) // expands to (a)(b)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_pop_front.html b/third_party/boostorg/preprocessor/doc/ref/seq_pop_front.html
new file mode 100644
index 0000000..9a575c0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_pop_front.html
@@ -0,0 +1,68 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_POP_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_POP_FRONT</b> macro pops an element from the beginning of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_POP_FRONT</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to pop an element from.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after removing the first element.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_pop_back.html">BOOST_PP_SEQ_POP_BACK</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/pop_front.html"><boost/preprocessor/seq/pop_front.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/pop_front.html">boost/preprocessor/seq/pop_front.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_pop_front.html">BOOST_PP_SEQ_POP_FRONT</a>(SEQ) // expands to (b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_push_back.html b/third_party/boostorg/preprocessor/doc/ref/seq_push_back.html
new file mode 100644
index 0000000..bb7c173
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_push_back.html
@@ -0,0 +1,76 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_PUSH_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_PUSH_BACK</b> macro pushes an element onto the end of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_PUSH_BACK</b>(<i>seq</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> onto which <i>elem</i> is pushed.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to push onto the end of <i>seq</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after appending <i>elem</i>.
+ </div>
+ <div>
+ This macro is an explicit form of directly appending an element. In other
+ words, <b>BOOST_PP_SEQ_PUSH_BACK</b>(<i>seq</i>, <i>x</i>) is equivalent to <i>seq</i>(<i>x</i>).
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/push_back.html"><boost/preprocessor/seq/push_back.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/push_back.html">boost/preprocessor/seq/push_back.hpp</a>>
+
+#define SEQ (a)(b)
+
+<a href="seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a>(SEQ, c) // expands to (a)(b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_push_front.html b/third_party/boostorg/preprocessor/doc/ref/seq_push_front.html
new file mode 100644
index 0000000..5231639
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_push_front.html
@@ -0,0 +1,78 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_PUSH_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_PUSH_FRONT</b> macro pushes an element onto the beginning
+ of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_PUSH_FRONT</b>(<i>seq</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> onto which <i>elem</i> is pushed.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to push onto the beginning of <i>seq</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after prepending <i>elem</i>.
+ </div>
+ <div>
+ This macro is an explicit form of directly prepending an element. In
+ other words, <b>BOOST_PP_SEQ_PUSH_FRONT</b>(<i>seq</i>, <i>x</i>) is equivalent
+ to (<i>x</i>)<i>seq</i>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/push_front.html"><boost/preprocessor/seq/push_front.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/push_front.html">boost/preprocessor/seq/push_front.hpp</a>>
+
+#define SEQ (b)(c)
+
+<a href="seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT</a>(SEQ, a) // expands to (a)(b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_remove.html b/third_party/boostorg/preprocessor/doc/ref/seq_remove.html
new file mode 100644
index 0000000..c2a36f0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_remove.html
@@ -0,0 +1,66 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REMOVE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REMOVE</b> macro removes an element from a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REMOVE</b>(<i>seq</i>, <i>i</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which an element is to be removed.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>seq</i> of the element to be removed. Valid
+ values range from <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>) - <i>1</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after removing the element at index <i>i</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/remove.html"><boost/preprocessor/seq/remove.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/remove.html">boost/preprocessor/seq/remove.hpp</a>>
+
+#define SEQ (a)(b)(x)(c)
+
+<a href="seq_remove.html">BOOST_PP_SEQ_REMOVE</a>(SEQ, 2) // expands to (a)(b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_replace.html b/third_party/boostorg/preprocessor/doc/ref/seq_replace.html
new file mode 100644
index 0000000..9a64e5d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_replace.html
@@ -0,0 +1,71 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REPLACE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REPLACE</b> macro replaces an element in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REPLACE</b>(<i>seq</i>, <i>i</i>, <i>elem</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> in which an element is to be replaced.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based position in <i>seq</i> of the element to be replaced.
+ Valid values range from <i>0</i> to <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>) - <i>1</i>.
+ </dd>
+ <dt>elem</dt>
+ <dd>
+ The element to replace the element at index <i>i</i> within <i>seq</i>.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro returns <i>seq</i> after replacing the element at index <i>i</i> with
+ <i>elem</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/replace.html"><boost/preprocessor/seq/replace.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/replace.html">boost/preprocessor/seq/replace.hpp</a>>
+
+#define SEQ (a)(b)(x)(d)
+
+<a href="seq_replace.html">BOOST_PP_SEQ_REPLACE</a>(SEQ, 2, c) // expands to (a)(b)(c)(d)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_rest_n.html b/third_party/boostorg/preprocessor/doc/ref/seq_rest_n.html
new file mode 100644
index 0000000..808ef9b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_rest_n.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_SEQ_REST_N</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_SEQ_REST_N</b> macro
+ expands to a <i>seq</i> of all but the first <i>n</i> elements of a <i>seq</i>.
+ </div>
+ <h4> Usage </h4>
+ <div class="code"> <b>BOOST_PP_SEQ_REST_N</b>(<i>n</i>, <i>seq</i>) </div>
+ <h4> Arguments </h4>
+ <dl>
+ <dt>n</dt>
+ <dd> The number of elements to remove. </dd>
+ <dt>seq</dt>
+ <dd> The <i>seq</i> from which the elements are to be removed. </dd>
+ </dl>
+ <h4> Remarks </h4>
+ <div> This macro extracts <i>n</i> elements from the beginning of <i>seq</i>
+ and returns the remainder of <i>seq</i> as a new <i>seq.<br>
+ <br>
+ </i>It is undefined behavior if <i>n </i>is greater or equal to the size
+ of the <i>seq</i>. </div>
+ <h4> See Also </h4>
+ <ul>
+ <li> <a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a></li>
+ </ul>
+ <h4> Requirements </h4>
+ <div> <b>Header:</b> <a href="../headers/seq/rest_n.html"><boost/preprocessor/seq/rest_n.hpp></a>
+ </div>
+ <h4> Sample Code </h4>
+ <div>
+ <pre>#include <<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>><br>#include <<a
+href="../headers/seq/elem.html">boost/preprocessor/seq/elem.hpp</a>><br>#include <<a
+href="../headers/seq/first_n.html">boost/preprocessor/seq/first_n.hpp</a>><br>#include <<a
+href="../headers/seq/rest_n.html">boost/preprocessor/seq/rest_n.hpp</a>><br>#include <<a
+href="../headers/seq/size.html">boost/preprocessor/seq/size.hpp</a>><br><br>#define NUMBERS \<br> (0)(1)(2)(3)(4)(5)(6)(7)(8)(9) \<br> (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \<br> (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \<br> (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \<br> (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \<br> (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \<br> (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \<br> (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \<br> (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \<br> (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \<br> (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \<br> (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \<br> (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \<br> (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \<br> (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \<br> (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \<br> (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \<br> (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \<br> (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \<br> (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \<br> (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \<br> (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \<br> (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \<br> (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \<br> (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \<br> (250)(251)(252)(253)(254)(255)(256) \<br> /**/<br><br>#define SUPER_ADD(x, y) <a
+href="seq_elem.html">BOOST_PP_SEQ_ELEM</a>(y, <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a>(x, NUMBERS))<br><br>SUPER_ADD(100, 100) // expands to 200<br><br>#define SUPER_SUB(x, y) \<br> <a
+href="seq_size.html">BOOST_PP_SEQ_SIZE</a>( \<br> <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a>( \<br> <a
+href="inc.html">BOOST_PP_INC</a>(y), \<br> <a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a>( \<br> <a
+href="inc.html">BOOST_PP_INC</a>(x), NUMBERS \<br> ) \<br> ) \<br> ) \<br> /**/<br><br>SUPER_SUB(67, 25) // expands to 42</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_reverse.html b/third_party/boostorg/preprocessor/doc/ref/seq_reverse.html
new file mode 100644
index 0000000..eb7cf72
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_reverse.html
@@ -0,0 +1,68 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REVERSE</b> macro reverses a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REVERSE</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_REVERSE_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_reverse_s.html">BOOST_PP_SEQ_REVERSE_S</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/reverse.html"><boost/preprocessor/seq/reverse.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/reverse.html">boost/preprocessor/seq/reverse.hpp</a>>
+
+#define SEQ (1)(2)(3)
+
+<a href="seq_reverse.html">BOOST_PP_SEQ_REVERSE</a>(SEQ) // expands to (3)(2)(1)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_reverse_s.html b/third_party/boostorg/preprocessor/doc/ref/seq_reverse_s.html
new file mode 100644
index 0000000..0d32199
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_reverse_s.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_REVERSE_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_REVERSE_S</b> macro reverses a <i>seq</i>. It
+ reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b> with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_REVERSE_S</b>(<i>s</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_reverse.html">BOOST_PP_SEQ_REVERSE</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/reverse.html"><boost/preprocessor/seq/reverse.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_size.html b/third_party/boostorg/preprocessor/doc/ref/seq_size.html
new file mode 100644
index 0000000..b9104de
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_size.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_SIZE</b> macro expands to the size of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_SIZE</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose size is to be calculated.
+ </dd>
+ </dl>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/size.html"><boost/preprocessor/seq/size.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/size.html">boost/preprocessor/seq/size.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_size.html">BOOST_PP_SEQ_SIZE</a>(SEQ) // expands to 3
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_subseq.html b/third_party/boostorg/preprocessor/doc/ref/seq_subseq.html
new file mode 100644
index 0000000..349546f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_subseq.html
@@ -0,0 +1,69 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_SUBSEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_SUBSEQ</b> macro expands to a subseq of elements in a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_SUBSEQ</b>(<i>seq</i>, <i>i</i>, <i>len</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> whose size is to be calculated.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The index of the first element of the subseq to be extracted.
+ </dd>
+ <dt>len</dt>
+ <dd>
+ The length of the subseq to be extracted.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands to a <i>seq</i> extracted from <i>seq</i>.
+ </div>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/subseq.html"><boost/preprocessor/seq/subseq.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/subseq.html">boost/preprocessor/seq/subseq.hpp</a>>
+
+#define SEQ (0)(1)(2)(3)(4)(5)
+
+<a href="seq_subseq.html">BOOST_PP_SEQ_SUBSEQ</a>(SEQ, 2, 3) // expands to (2)(3)(4)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_tail.html b/third_party/boostorg/preprocessor/doc/ref/seq_tail.html
new file mode 100644
index 0000000..8c1bb59
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_tail.html
@@ -0,0 +1,63 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TAIL</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TAIL</b> macro expands to all but the first element of a <i>seq</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TAIL</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> from which the tail is extracted.
+ </dd>
+ </dl>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_head.html">BOOST_PP_SEQ_HEAD</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/seq.html"><boost/preprocessor/seq/seq.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_head.html">BOOST_PP_SEQ_HEAD</a>(SEQ) // expands to a
+<a href="seq_tail.html">BOOST_PP_SEQ_TAIL</a>(SEQ) // expands to (b)(c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_to_array.html b/third_party/boostorg/preprocessor/doc/ref/seq_to_array.html
new file mode 100644
index 0000000..86d344e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_to_array.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TO_ARRAY</b> macro converts a <i>seq</i> to an <i>array</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TO_ARRAY</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be converted.
+ </dd>
+ </dl>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/to_array.html"><boost/preprocessor/seq/to_array.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/to_array.html">boost/preprocessor/seq/to_array.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_to_array.html">BOOST_PP_SEQ_TO_ARRAY</a>(SEQ) // expands to (3, (a, b, c))
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_to_list.html b/third_party/boostorg/preprocessor/doc/ref/seq_to_list.html
new file mode 100644
index 0000000..b05ceec
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_to_list.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_SEQ_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_SEQ_TO_LIST</b>
+macro converts a <i>seq</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_SEQ_TO_LIST</b>(<i>seq</i>)
+</div>
+<h4>Arguments</h4>
+<dl><dt>seq</dt>
+ <dd> The <i>seq</i> to be converted. </dd>
+</dl><b>See Also</b>
+<ul>
+ <li><a href="limit_seq.html">BOOST_PP_LIMIT_SEQ</a></li>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <a href="../headers/seq/to_list.html"><boost/preprocessor/seq/to_list.hpp></a>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <<a href="../headers/seq/to_list.html">boost/preprocessor/seq/to_list.hpp</a>><br><br><a href="seq_to_list.html">BOOST_PP_SEQ_TO_LIST</a>((x)(y)(z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_to_tuple.html b/third_party/boostorg/preprocessor/doc/ref/seq_to_tuple.html
new file mode 100644
index 0000000..03adf0d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_to_tuple.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TO_TUPLE</b> macro converts a <i>seq</i> to an <i>tuple</i>.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TO_TUPLE</b>(<i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be converted.
+ </dd>
+ </dl>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/to_tuple.html"><boost/preprocessor/seq/to_tuple.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/seq/to_tuple.html">boost/preprocessor/seq/to_tuple.hpp</a>>
+
+#define SEQ (a)(b)(c)
+
+<a href="seq_to_tuple.html">BOOST_PP_SEQ_TO_TUPLE</a>(SEQ) // expands to (a, b, c)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_transform.html b/third_party/boostorg/preprocessor/doc/ref/seq_transform.html
new file mode 100644
index 0000000..7f2bb4f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_transform.html
@@ -0,0 +1,93 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TRANSFORM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TRANSFORM</b> macro transforms each element in a <i>seq</i>
+ according to a supplied transformation.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TRANSFORM</b>(<i>op</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_SEQ_TRANSFORM</b> for each
+ element in <i>seq</i> with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold
+ step, the auxiliary <i>data</i>, and the current element in <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>seq</i>. It builds a
+ new <i>seq</i> out of the results of each call. If, for example, <i>seq</i>
+ is (<i>a</i>)(<i>b</i>)(<i>c</i>), this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>))(<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>))(<i>op</i>(<i>d</i>,
+ <i>data</i>, <i>c</i>))
+ </div>
+ </div>
+ <div>
+ For maximum efficiency, use <b>BOOST_PP_SEQ_TRANSFORM_S</b>.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_transform_s.html">BOOST_PP_SEQ_TRANSFORM_S</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/transform.html"><boost/preprocessor/seq/transform.hpp></a>
+ </div>
+ <h4>
+ Sample Code
+ </h4>
+ <div>
+ <pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/seq/transform.html">boost/preprocessor/seq/transform.hpp</a>>
+
+#define SEQ (1)(3)(2)(5)
+
+#define OP(s, data, elem) <a href="dec.html">BOOST_PP_DEC</a>(elem)
+
+<a href="seq_transform.html">BOOST_PP_SEQ_TRANSFORM</a>(OP, 3, SEQ)
+ // expands to (0)(2)(1)(4)
+</pre>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/seq_transform_s.html b/third_party/boostorg/preprocessor/doc/ref/seq_transform_s.html
new file mode 100644
index 0000000..dd205ce
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/seq_transform_s.html
@@ -0,0 +1,79 @@
+<html>
+ <head>
+ <title>BOOST_PP_SEQ_TRANSFORM_S</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SEQ_TRANSFORM_S</b> macro transforms each element in a <i>seq</i>
+ according to a supplied transformation. It reenters <b>BOOST_PP_SEQ_FOLD_LEFT</b>
+ with maximum efficiency.
+ </div>
+ <h4>
+ Usage
+ </h4>
+ <div class="code">
+ <b>BOOST_PP_SEQ_TRANSFORM_S</b>(<i>s</i>, <i>op</i>, <i>data</i>, <i>seq</i>)
+ </div>
+ <h4>
+ Arguments
+ </h4>
+ <dl>
+ <dt>s</dt>
+ <dd>
+ The next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold step.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A ternary predicate of the form <i>op</i>(<i>s</i>, <i>data</i>, <i>elem</i>).
+ This transformation is expanded by <b>BOOST_PP_SEQ_TRANSFORM</b> for each
+ element in <i>seq</i> with the next available <b>BOOST_PP_SEQ_FOLD_LEFT</b> fold
+ step, the auxiliary <i>data</i>, and the current element in <i>seq</i>.
+ </dd>
+ <dt>data</dt>
+ <dd>
+ Auxiliary data passed to <i>pred</i>.
+ </dd>
+ <dt>seq</dt>
+ <dd>
+ The <i>seq</i> to be transformed.
+ </dd>
+ </dl>
+ <h4>
+ Remarks
+ </h4>
+ <div>
+ This macro expands <i>op</i> for each element in <i>seq</i>. It builds a
+ new <i>seq</i> out of the results of each call. If, for example, <i>seq</i>
+ is (<i>a</i>)(<i>b</i>)(<i>c</i>), this macro expands to...
+ <div>
+ (<i>op</i>(<i>d</i>, <i>data</i>, <i>a</i>))(<i>op</i>(<i>d</i>, <i>data</i>, <i>b</i>))(<i>op</i>(<i>d</i>,
+ <i>data</i>, <i>c</i>))
+ </div>
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="seq_transform.html">BOOST_PP_SEQ_TRANSFORM</a></li>
+ </ul>
+ <h4>
+ Requirements
+ </h4>
+ <div>
+ <b>Header:</b> <a href="../headers/seq/transform.html"><boost/preprocessor/seq/transform.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/slot.html b/third_party/boostorg/preprocessor/doc/ref/slot.html
new file mode 100644
index 0000000..0baada4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/slot.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+ <title>BOOST_PP_SLOT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SLOT</b> macro retrieves a value previously evaluated by <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_SLOT</b>(<i>i</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>i</dt>
+ <dd>
+ The <i>slot</i> index to be retrieved.
+ This value must be in the range of <i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ Prior to use, the <i>slot</i> at index <i>i</i> must have been assigned with <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="assign_slot.html">BOOST_PP_ASSIGN_SLOT</a></li>
+ <li><a href="limit_slot_count.html">BOOST_PP_LIMIT_SLOT_COUNT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/slot/slot.html"><boost/preprocessor/slot/slot.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/slot/slot.html">boost/preprocessor/slot/slot.hpp</a>>
+
+#define X() 4
+
+#define <a href="value.html">BOOST_PP_VALUE</a> 1 + 2 + 3 + X()
+#include <a href="assign_slot.html">BOOST_PP_ASSIGN_SLOT</a>(1)
+
+#undef X
+
+<a href="slot.html">BOOST_PP_SLOT</a>(1) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/stringize.html b/third_party/boostorg/preprocessor/doc/ref/stringize.html
new file mode 100644
index 0000000..1c6f430
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/stringize.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <title>BOOST_PP_STRINGIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_STRINGIZE</b> macro stringizes its argument after it has been expanded.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_STRINGIZE</b>(<i>text</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>text</dt>
+ <dd>
+ The text to be converted to a string literal.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor stringizing operator (<b>#</b>) prevents arguments from expanding.
+ This macro allows its argument to expand before it is stringized.
+ </div>
+<!-- <h4>See Also</h4> -->
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/stringize.html"><boost/preprocessor/stringize.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>>
+#include <<a href="../headers/stringize.html">boost/preprocessor/stringize.hpp</a>>
+
+<a href="stringize.html">BOOST_PP_STRINGIZE</a>(<a href="cat.html">BOOST_PP_CAT</a>(a, b)) // expands to "ab"
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/sub.html b/third_party/boostorg/preprocessor/doc/ref/sub.html
new file mode 100644
index 0000000..6245d1a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/sub.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <title>BOOST_PP_SUB</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SUB</b> macro expands to the difference between its arguments.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_SUB</b>(<i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>x</dt>
+ <dd>
+ The minuend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The subtrahend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the difference between <i>x</i> and <i>y</i> is less than <i>0</i>, the result is saturated to <i>0</i>.
+ </div>
+ <div>
+ Previously, this macro could not be used inside <b>BOOST_PP_WHILE</b>.
+ There is no longer any such restriction.
+ It is more efficient, however, to use <b>BOOST_PP_SUB_D</b> in such a situation.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="sub_d.html">BOOST_PP_SUB_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/sub.html"><boost/preprocessor/arithmetic/sub.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/sub.html">boost/preprocessor/arithmetic/sub.hpp</a>>
+
+<a href="sub.html">BOOST_PP_SUB</a>(4, 3) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/sub_d.html b/third_party/boostorg/preprocessor/doc/ref/sub_d.html
new file mode 100644
index 0000000..1142c90
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/sub_d.html
@@ -0,0 +1,85 @@
+<html>
+<head>
+ <title>BOOST_PP_SUB_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_SUB_D</b> macro expands to the difference between its second and third arguments.
+ It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_SUB_D</b>(<i>d</i>, <i>x</i>, <i>y</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd>
+ The next available <b>BOOST_PP_WHILE</b> iteration.
+ </dd>
+ <dt>x</dt>
+ <dd>
+ The minuend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>y</dt>
+ <dd>
+ The subtrahend of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If the difference between <i>x</i> and <i>y</i> is less than <i>0</i>, the result is saturated to <i>0</i>.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="sub.html">BOOST_PP_SUB</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/arithmetic/sub.html"><boost/preprocessor/arithmetic/sub.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/arithmetic/sub.html">boost/preprocessor/arithmetic/sub.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data)
+
+#define OP(d, data) \
+ ( \
+ <a href="dec.html">BOOST_PP_DEC</a>( \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, data) \
+ ), \
+ <a href="sub_d.html">BOOST_PP_SUB_D</a>( \
+ d, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, data), \
+ 2 \
+ ) \
+ ) \
+ /**/
+
+// decrement 'x' by 2 'n' times
+#define STRIDE(x, n) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, x)))
+
+STRIDE(10, 2) // expands to 6
+STRIDE(14, 6) // expands to 2
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_eat.html b/third_party/boostorg/preprocessor/doc/ref/tuple_eat.html
new file mode 100644
index 0000000..f1d7c1c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_eat.html
@@ -0,0 +1,58 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_EAT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_EAT</b> macro expands to a macro that eats a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
+</div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be eaten.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version. <br>
+<br>For the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> the
+size may be left out
+completely so that the macro can be invoked as BOOST_PP_TUPLE_EAT(); you may get a warning from some compilers, but the
+functionality will still work. If you specify a size in the variadic
+version, it will be ignored, but the warning from some compilers will
+not occur.<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/tuple/eat.html"><boost/preprocessor/tuple/eat.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>><br>#include <<a href="../headers/tuple/eat.html">boost/preprocessor/tuple/eat.hpp</a>><br><br>#define OP(a, b) (a b)<br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="tuple_eat.html">BOOST_PP_TUPLE_EAT</a>(2))(1, 2)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="tuple_eat.html">BOOST_PP_TUPLE_EAT</a>())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_elem.html b/third_party/boostorg/preprocessor/doc/ref/tuple_elem.html
new file mode 100644
index 0000000..0f4885f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_elem.html
@@ -0,0 +1,65 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_ELEM</b> macro extracts an element from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_ELEM</b>(<i>size</i>, <i>i</i>, <i>tuple</i>)<sup></sup><br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_ELEM</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
+</div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i>.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>i</dt>
+ <dd>
+ The zero-based index into the <i>tuple</i> of the element to be extracted.
+ Valid values range from <i>0</i> to <i>size</i> - <i>1</i>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> from which an element is to be extracted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>,
+ and <i>i</i> must be less than the size of the <i>tuple</i>. <br>
+ <br>You can
+ invoke the variadic version as BOOST_PP_TUPLE_ELEM(<i>i</i>,<i>tuple</i>) or
+ BOOST_PP_TUPLE_ELEM(<i>size</i>,<i>i</i>,<i>tuple</i>).
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/tuple/elem.html"><boost/preprocessor/tuple/elem.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>><br><br>#define TUPLE (a, b, c, d)<br><br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, TUPLE) // expands to a<br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 3, TUPLE) // expands to d<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(0, TUPLE) // expands to a in the variadic version<br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, TUPLE) // expands to d in the variadic version<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_enum.html b/third_party/boostorg/preprocessor/doc/ref/tuple_enum.html
new file mode 100644
index 0000000..310bfff
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_enum.html
@@ -0,0 +1,55 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_ENUM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_ENUM</b> macro converts a <i>tuple</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_ENUM</b>(<i>size,tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_ENUM</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i>.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
+ </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> whose elements are to be converted. </dd>
+</dl>
+<h4> Remarks </h4>
+<div>
+<br>You can
+invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
+BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>).<br>
+</div>
+<h4>See Also</h4>
+<ul>
+<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a><br>
+</li>
+</ul>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/tuple/enum.html"><boost/preprocessor/tuple/enum.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/tuple/enum.html">boost/preprocessor/tuple/enum.hpp</a>><br><br>#define TUPLE (B,O,O,S,T)<br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(5,TUPLE) // expands to B, O, O, S, T<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(TUPLE) // expands to B, O, O, S, T<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+<br>
+<i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_insert.html b/third_party/boostorg/preprocessor/doc/ref/tuple_insert.html
new file mode 100644
index 0000000..0c58681
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_insert.html
@@ -0,0 +1,54 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_INSERT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT</b> macro
+ inserts an element into an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_INSERT</b>(<i>tuple</i>, <i>i</i>, <i>elem</i>)
+ <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> into which an element is to be inserted. </dd>
+ <dt>i</dt>
+ <dd> The zero-based position in <i>tuple</i> where an element is to be
+ inserted. Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
+ <dt>elem</dt>
+ <dd> The element to insert. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <div> If the operation attempts to create an <i>tuple</i> that is larger
+ than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
+ <div> This macro uses <b>BOOST_PP_WHILE</b> interally. Therefore, to
+ use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_TUPLE_INSERT_D</b>.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_insert_d.html">BOOST_PP_TUPLE_INSERT_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/insert.html"><boost/preprocessor/tuple/insert.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/insert.html">boost/preprocessor/tuple/insert.hpp</a>>
+
+#define TUPLE (a, b, d)
+
+<a href="tuple_insert.html">BOOST_PP_TUPLE_INSERT</a>(TUPLE, 2, c) // expands to (a, b, c, d)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_insert_d.html b/third_party/boostorg/preprocessor/doc/ref/tuple_insert_d.html
new file mode 100644
index 0000000..53fbea1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_insert_d.html
@@ -0,0 +1,46 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_INSERT_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT_D</b> macro
+ inserts an element into a <i>tuple</i>. It reenters <b>BOOST_PP_WHILE</b>
+ with maximum efficiency.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_INSERT_D</b>(<i>d</i>, <i>tuple</i>,
+ <i>i</i>, <i>elem</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> into which an element is to be inserted.</dd>
+ <dt>i</dt>
+ <dd> The zero-based position in <i>tuple</i> where an element is to be
+ inserted. Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
+ <dt>elem</dt>
+ <dd> The element to insert. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro inserts <i>elem</i> before the element at index <i>i</i>.
+ </div>
+ <div> If the operation attempts to create an <i>tuple</i> that is larger
+ than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_insert.html">BOOST_PP_TUPLE_INSERT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/insert.html"><boost/preprocessor/tuple/insert.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_pop_back.html b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_back.html
new file mode 100644
index 0000000..63df90a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_back.html
@@ -0,0 +1,48 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_POP_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_BACK</b> macro
+ pops an element from the end of an <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_POP_BACK</b>(<i>tuple</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd>The <i>tuple</i> to pop an element from.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div style="background-color: white;"> This macro returns <i>tuple</i>
+ after removing the last element. If <i>tuple</i> has only a single
+ element, it remains unchanged since a <i>tuple </i>must have at
+ least one element.</div>
+ <div> This macro uses <b>BOOST_PP_REPEAT</b> internally. Therefore,
+ to use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>,
+ see <b>BOOST_PP_TUPLE_POP_BACK_Z</b> </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_pop_back_z.html">BOOST_PP_TUPLE_POP_BACK_Z</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/pop_back.html"><boost/preprocessor/tuple/pop_back.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/pop_back.html">boost/preprocessor/tuple/pop_back.hpp</a>>
+
+#define TUPLE (a, b, c)
+
+<a href="tuple_pop_back.html">BOOST_PP_TUPLE_POP_BACK</a>(TUPLE) // expands to (a, b)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_pop_back_z.html b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_back_z.html
new file mode 100644
index 0000000..99b26c6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_back_z.html
@@ -0,0 +1,40 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_POP_BACK_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_BACK_Z</b> macro
+ pops an element from the end of an <i>tuple</i>. It reenters <b>BOOST_PP_REPEAT</b>
+ with maximum efficiency. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_POP_BACK_Z</b>(<i>z</i>, <i>tuple</i>)
+ <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd> The next available <b>BOOST_PP_REPEAT</b> dimension. </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to pop an element from.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro returns <i>tuple</i> after removing the last
+ element. If <i>tuple</i> has only a single element, it remains
+ unchanged since a <i>tuple </i>must have at least one element.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_pop_back.html">BOOST_PP_TUPLE_POP_BACK</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/pop_back.html"><boost/preprocessor/tuple/pop_back.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_pop_front.html b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_front.html
new file mode 100644
index 0000000..ca388ce
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_front.html
@@ -0,0 +1,47 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_POP_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_FRONT</b> macro
+ pops an element from the beginning of a <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_POP_FRONT</b>(<i>tuple</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to pop an element from.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro returns <i>tuple</i> after removing the first
+ element. If <i>tuple</i> has only a single element, it remains
+ unchanged since a <i>tuple </i>must have at least one element.</div>
+ <div> This macro uses <b>BOOST_PP_REPEAT</b> internally. Therefore,
+ to use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>,
+ see <b>BOOST_PP_TUPLE_POP_FRONT_Z</b> </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_pop_front_z.html">BOOST_PP_TUPLE_POP_FRONT_Z</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/pop_front.html"><boost/preprocessor/tuple/pop_front.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/pop_front.html">boost/preprocessor/tuple/pop_front.hpp</a>>
+
+#define TUPLE (a, b, c)
+
+<a href="tuple_pop_front.html">BOOST_PP_TUPLE_POP_FRONT</a>(TUPLE) // expands to (b, c)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_pop_front_z.html b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_front_z.html
new file mode 100644
index 0000000..d65e7f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_pop_front_z.html
@@ -0,0 +1,40 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_POP_FRONT_Z</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_FRONT_Z</b>
+ macro pops an element from the beginning of a <i>tuple</i>. It
+ reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_POP_FRONT_Z</b>(<i>z</i>, <i>tuple</i>)
+ <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>z</dt>
+ <dd> The next available <b>BOOST_PP_REPEAT</b> dimension.</dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to pop an element from.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro returns <i>tuple</i> after removing the first
+ element. If <i>tuple</i> has only a single element, it remains
+ unchanged since a <i>tuple </i>must have at least one element.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_pop_front.html">BOOST_PP_TUPLE_POP_FRONT</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/pop_front.html"><boost/preprocessor/tuple/pop_front.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_push_back.html b/third_party/boostorg/preprocessor/doc/ref/tuple_push_back.html
new file mode 100644
index 0000000..3ebc99c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_push_back.html
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_PUSH_BACK</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_PUSH_BACK</b> macro
+ appends an element to the end of a <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_PUSH_BACK</b>(<i>tuple</i>, <i>elem</i>)
+ <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to append an element to.</dd>
+ <dt>elem</dt>
+ <dd> The element to append. </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/push_back.html"><boost/preprocessor/tuple/push_back.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/push_back.html">boost/preprocessor/tuple/push_back.hpp</a>>
+
+#define TUPLE (a, b, c)
+
+<a href="tuple_push_back.html">BOOST_PP_TUPLE_PUSH_BACK</a>(TUPLE, d) // expands to (a, b, c, d)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanyig file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_push_front.html b/third_party/boostorg/preprocessor/doc/ref/tuple_push_front.html
new file mode 100644
index 0000000..cfabc88
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_push_front.html
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_PUSH_FRONT</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_PUSH_FRONT</b> macro
+ appends an element to the beginning of a <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_PUSH_FRONT</b>(<i>tuple</i>, <i>elem</i>)
+ <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to append an element to.</dd>
+ <dt>elem</dt>
+ <dd> The element to append. </dd>
+ </dl>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/push_front.html"><boost/preprocessor/tuple/push_front.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/push_front.html">boost/preprocessor/tuple/push_front.hpp</a>>
+
+#define TUPLE (b, c, d)
+
+<a href="tuple_push_front.html">BOOST_PP_TUPLE_PUSH_FRONT</a>(TUPLE, a) // expands to (a, b, c, d)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_rem.html b/third_party/boostorg/preprocessor/doc/ref/tuple_rem.html
new file mode 100644
index 0000000..5392e16
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_rem.html
@@ -0,0 +1,60 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_REM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REM</b> macro expands to a macro that removes the parentheses from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_REM</b>(<i>size</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> from which the parentheses are to be removed.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version.<br>
+<br>
+For the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> the
+size may be left out
+completely so that the macro can be invoked as BOOST_PP_TUPLE_REM(); you may get a warning from some compilers, but the
+functionality will still work. If you specify a size in the variadic
+version, it will be ignored, but the warning from some compilers will
+not occur.<br>
+<br>Note: For Visual C++ 8.0 ( Visual Studio 2005 ) you must specify the correct <i>size</i> argument as in the non-variadic version.<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/tuple/rem.html"><boost/preprocessor/tuple/rem.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>><br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>(3)(x, y, z) // expands to x, y, z<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>()(x, y, z) // expands to x, y, z<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_rem_ctor.html b/third_party/boostorg/preprocessor/doc/ref/tuple_rem_ctor.html
new file mode 100644
index 0000000..e065923
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_rem_ctor.html
@@ -0,0 +1,61 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_REM_CTOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REM_CTOR</b> macro removes the parentheses from a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> from which the parentheses are to be removed.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> from which the parenthesis are removed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
+BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>).<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/tuple/rem.html"><boost/preprocessor/tuple/rem.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>><br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>(3, (x, y, z)) // expands to x, y, z<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>((x, y, z)) // expands to x, y, z<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_remove.html b/third_party/boostorg/preprocessor/doc/ref/tuple_remove.html
new file mode 100644
index 0000000..4aebc57
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_remove.html
@@ -0,0 +1,50 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_REMOVE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REMOVE</b> macro
+ removes an element from a <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_REMOVE</b>(<i>tuple</i>, <i>i</i>) <a
+ href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> from which an element is to be removed.</dd>
+ <dt>i</dt>
+ <dd> The zero-based position in <i>tuple</i> of the element to be
+ removed. Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
+ - <i>1</i>. If <i>tuple</i> has only a single element, it remains
+ unchanged since a <i>tuple </i>must have at least one element.</dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro uses <b>BOOST_PP_WHILE</b> interally. Therefore, to
+ use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_TUPLE_REMOVE_D</b>.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_remove_d.html">BOOST_PP_TUPLE_REMOVE_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/remove.html"><boost/preprocessor/tuple/remove.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/remove.html">boost/preprocessor/tuple/remove.hpp</a>>
+
+#define TUPLE (a, b, d)
+
+<a href="tuple_remove.html">BOOST_PP_TUPLE_REMOVE</a>(TUPLE, 2) // expands to (a, b)
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_remove_d.html b/third_party/boostorg/preprocessor/doc/ref/tuple_remove_d.html
new file mode 100644
index 0000000..1be3d1c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_remove_d.html
@@ -0,0 +1,41 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_REMOVE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REMOVE_D</b> macro
+ removes an element from a <i>tuple</i>. It reenters <b>BOOST_PP_WHILE</b>
+ with maximum efficiency. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_REMOVE_D</b>(<i>d</i>, <i>tuple</i>,
+ <i>i</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> from which an element is to be removed. </dd>
+ <dt>i</dt>
+ <dd> The zero-based position in <i>tuple</i> of the element to be
+ removed. Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
+ - <i>1</i>. If <i>tuple</i> has only a single element, it remains
+ unchanged since a <i>tuple </i>must have at least one element.</dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_remove.html">BOOST_PP_TUPLE_REMOVE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/remove.html"><boost/preprocessor/tuple/remove.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_replace.html b/third_party/boostorg/preprocessor/doc/ref/tuple_replace.html
new file mode 100644
index 0000000..8654ebb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_replace.html
@@ -0,0 +1,51 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_REPLACE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REPLACE</b> macro
+ replaces an element in a <i>tuple</i>.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_REPLACE</b>(<i>tuple</i>, <i>i</i>, <i>elem</i>)
+ <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>tuple</dt>
+ <dd> A <i>tuple</i> to replace an element in. </dd>
+ <dt>i</dt>
+ <dd> The zero-based position in <i>tuple</i> of the element to be
+ replaced. Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
+ - <i>1</i>.</dd>
+ <dt>elem</dt>
+ <dd> The replacement element. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro uses <b>BOOST_PP_WHILE</b> interally. Therefore, to
+ use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
+ see <b>BOOST_PP_TUPLE_REPLACE_D</b>.</div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_replace_d.html">BOOST_PP_TUPLE_REPLACE_D</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/replace.html"><boost/preprocessor/tuple/replace.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/tuple/replace.html">boost/preprocessor/tuple/replace.hpp</a>>
+
+#define TUPLE (a, x, c)
+
+<a href="tuple_replace.html">BOOST_PP_TUPLE_REPLACE</a>(TUPLE, 1, b) // expands to (a, b, c))
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_replace_d.html b/third_party/boostorg/preprocessor/doc/ref/tuple_replace_d.html
new file mode 100644
index 0000000..dc5fc4f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_replace_d.html
@@ -0,0 +1,42 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_TUPLE_REPLACE_D</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REPLACE_D</b> macro
+ replaces an element in a <i>tuple</i>. It reenters <b>BOOST_PP_WHILE</b>
+ with maximum efficiency.</div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_TUPLE_REPLACE_D</b>(<i>d</i>, <i>tuple</i>,
+ <i>i</i>, <i>elem</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
+ <dt>tuple</dt>
+ <dd> A <i>tuple</i> to replace an element in. </dd>
+ <dt>i</dt>
+ <dd> The zero-based position in <i>tuple</i> of the element to be
+ replaced. Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
+ - <i>1</i>. </dd>
+ <dt>elem</dt>
+ <dd> The replacement element. </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="tuple_replace.html">BOOST_PP_TUPLE_REPLACE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/tuple/replace.html"><boost/preprocessor/tuple/replace.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2013</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_reverse.html b/third_party/boostorg/preprocessor/doc/ref/tuple_reverse.html
new file mode 100644
index 0000000..41e95fe
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_reverse.html
@@ -0,0 +1,61 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_REVERSE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_REVERSE</b> macro reverses a <i>tuple</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_REVERSE</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_REVERSE</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be reversed.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> to be reversed.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
+BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>).<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/tuple/reverse.html"><boost/preprocessor/tuple/reverse.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <<a href="../headers/tuple/reverse.html">boost/preprocessor/tuple/reverse.hpp</a>><br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>(3, (x, y, z)) // expands to (z, y, x)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>((x, y, z)) // expands to (z, y, x)<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_size.html b/third_party/boostorg/preprocessor/doc/ref/tuple_size.html
new file mode 100644
index 0000000..b1dfec3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_size.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_TUPLE_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_SIZE</b> macro
+expands to the size of the <i>tuple</i> passed to it. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+ <dt>tuple</dt>
+ <dd> A <i>tuple</i> whose size is to be extracted. </dd>
+</dl>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <a href="../headers/tuple/size.html"><boost/preprocessor/tuple/size.hpp></a>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <<a href="../headers/tuple/size.html">boost/preprocessor/tuple/size.hpp</a>><br><br>#define TUPLE (x, y, z)<br><br><a href="tuple_size.html">BOOST_PP_TUPLE_SIZE</a>(TUPLE) // expands to 3<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_to_array.html b/third_party/boostorg/preprocessor/doc/ref/tuple_to_array.html
new file mode 100644
index 0000000..be57bac
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_to_array.html
@@ -0,0 +1,50 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_ARRAY</b>
+macro
+converts a <i>tuple</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>size,tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd> The size of the <i>tuple</i>. Valid <i>tuple</i> sizes
+range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
+ </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to be converted.</dd>
+</dl>
+<h4>Remarks</h4>
+<div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>).<a href="../headers/seq/to_array.html"></a>
+</div>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/tuple/to_array.html"><boost/preprocessor/tuple/to_array.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/tuple/to_array.html">boost/preprocessor/tuple/to_array.hpp</a>><br><br>#define TUPLE (a,b,c)<br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(3,TUPLE) // expands to (3, (a, b, c))<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(TUPLE) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011,2013</i>
+</div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_to_list.html b/third_party/boostorg/preprocessor/doc/ref/tuple_to_list.html
new file mode 100644
index 0000000..01b8dbb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_to_list.html
@@ -0,0 +1,60 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_TUPLE_TO_LIST</b> macro converts a <i>tuple</i> to a <i>list</i>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_TUPLE_TO_LIST</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be converted.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
+ </dd>
+ <dt>tuple</dt>
+ <dd>
+ The <i>tuple</i> to be converted.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>).<br>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/tuple/to_list.html"><boost/preprocessor/tuple/to_list.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>#include <<a href="../headers/tuple/to_list.html">boost/preprocessor/tuple/to_list.hpp</a>><br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>(3, (x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>((x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ <br><i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/tuple_to_seq.html b/third_party/boostorg/preprocessor/doc/ref/tuple_to_seq.html
new file mode 100644
index 0000000..28e23eb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/tuple_to_seq.html
@@ -0,0 +1,51 @@
+<html>
+ <head>
+ <title>BOOST_PP_TUPLE_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_SEQ</b> macro
+converts a <i>tuple</i> to an <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>size</i>, <i>tuple</i>)<br>
+<br>
+or<br>
+<br>
+<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+</div>
+<h4> Arguments </h4>
+<dl>
+ <dt>size</dt>
+ <dd>
+ The size of the <i>tuple</i> to be converted.
+ Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. </dd>
+ <dt>tuple</dt>
+ <dd> The <i>tuple</i> to be converted. </dd>
+</dl>
+<h4>Remarks</h4>
+<div> The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
+<br>
+You can
+invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
+BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>).<a href="../headers/tuple/to_seq.html"></a>
+</div>
+<h4>Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/tuple/to_seq.html"><boost/preprocessor/tuple/to_seq.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/tuple/to_seq.html">boost/preprocessor/tuple/to_seq.hpp</a>><br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>(3, (a, b, c)) // expands to (a)(b)(c)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>((a, b, c)) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+<br>
+<i>© Copyright Paul Mensonides 2002<br>
+</i><i>© Copyright Edward Diener 2011,2013</i><br>
+ </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/ref/update_counter.html b/third_party/boostorg/preprocessor/doc/ref/update_counter.html
new file mode 100644
index 0000000..ce49033
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/update_counter.html
@@ -0,0 +1,34 @@
+<html>
+<head>
+ <title>BOOST_PP_UPDATE_COUNTER</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_UPDATE_COUNTER</b> macro increments the current counter value.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #include <b>BOOST_PP_UPDATE_COUNTER()</b>
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="counter.html">BOOST_PP_COUNTER</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/slot/counter.html"><boost/preprocessor/slot/counter.hpp></a>
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/value.html b/third_party/boostorg/preprocessor/doc/ref/value.html
new file mode 100644
index 0000000..4659a24
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/value.html
@@ -0,0 +1,37 @@
+<html>
+<head>
+ <title>BOOST_PP_VALUE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_VALUE</b> macro is a user-defined <i>named external argument</i> to <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ #define <b>BOOST_PP_VALUE</b> <i>value</i>
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>value</dt>
+ <dd>
+ An intergral constant expression to be evaluated by <b>BOOST_PP_ASSIGN_SLOT</b>.
+ </dd>
+ </dl>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="assign_slot.html">BOOST_PP_ASSIGN_SLOT</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_elem.html b/third_party/boostorg/preprocessor/doc/ref/variadic_elem.html
new file mode 100644
index 0000000..73cffc5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_elem.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_ELEM</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_ELEM</b> variadic macro
+extracts an element from <i>variadic data</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_ELEM</b>(<i>i</i>, <i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+<h4>Arguments</h4>
+<dl><dt>i</dt>
+ <dd> The zero-based index into the <i>variadic data</i> of the element to be
+extracted. Valid values range from <i>0</i> to the size of the variadic data - 1.
+ </dd>
+ <dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> from which an element is to be extracted. </dd>
+</dl>
+<h4>Remarks</h4>
+<div>The index <i>i</i> must be less than the size of the <i>variadic data</i>. </div>
+<h4>See Also</h4>
+<ul>
+ <li><a href="limit_variadic.html">BOOST_PP_LIMIT_VARIADIC</a></li>
+</ul>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <a href="../headers/variadic/elem.html"><boost/preprocessor/variadic/elem.hpp></a>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <<a href="../headers/variadic/elem.html">boost/preprocessor/variadic/elem.hpp</a>><br><br>#define VAR_DATA a, b, c, d<br><br><a href="variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a>(0, VAR_DATA) // expands to a<br><a href="variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a>(3, VAR_DATA) // expands to d<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_seq_to_seq.html b/third_party/boostorg/preprocessor/doc/ref/variadic_seq_to_seq.html
new file mode 100644
index 0000000..ba5bdc4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_seq_to_seq.html
@@ -0,0 +1,35 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_SEQ_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SEQ_TO_SEQ</b> variadic macro
+converts a <i>variadic seq</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_SEQ_TO_SEQ</b>(<i>vseq</i>)<a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>vseq<br>
+</dt>
+ <dd> The <i>variadic seq</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/seq/variadic_seq_to_seq.html"><boost/preprocessor/seq/variadic_seq_to_seq.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/seq/variadic_seq_to_seq.html">boost/preprocessor/seq/variadic_seq_to_seq.hpp</a>><br><br>
+<a href="variadic_seq_to_seq.html">BOOST_PP_VARIADIC_SEQ_TO_SEQ</a>((1)(2, 3)(4, 5, 6)) // expands to ((1))((2, 3))((4, 5, 6))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright Paul Mensonides 2012</i>
+</div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_size.html b/third_party/boostorg/preprocessor/doc/ref/variadic_size.html
new file mode 100644
index 0000000..8986ef8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_size.html
@@ -0,0 +1,33 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_SIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SIZE</b> variadic macro
+expands to the size of the <i>variadic data </i>passed to it. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+<h4>Arguments</h4>
+<dl>
+ <dt>...<br>
+</dt>
+ <dd> <i>Variadic data </i>whose size is to be extracted. </dd>
+</dl>
+<h4>Requirements</h4>
+<div> <b>Header:</b> <a href="../headers/variadic/size.html"><boost/preprocessor/variadic/size.hpp></a>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <<a href="../headers/variadic/size.html">boost/preprocessor/variadic/size.hpp</a>><br><br>#define VAR_DATA x, y, z<br><br><a href="variadic_size.html">BOOST_PP_VARIADIC_SIZE</a>(VAR_DATA) // expands to 3<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_to_array.html b/third_party/boostorg/preprocessor/doc/ref/variadic_to_array.html
new file mode 100644
index 0000000..85304a9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_to_array.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_ARRAY</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_ARRAY</b> variadic macro
+converts <i>variadic data</i> to an <i>array</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>...</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/variadic/to_array.html"><boost/preprocessor/variadic/to_array.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/variadic/to_array.html">boost/preprocessor/variadic/to_array.hpp</a>><br><br>#define VAR_DATA a, b, c<br><br><a href="variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a>(VAR_DATA) // expands to (3, (a, b, c))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_to_list.html b/third_party/boostorg/preprocessor/doc/ref/variadic_to_list.html
new file mode 100644
index 0000000..e823373
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_to_list.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_LIST</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_LIST</b>
+variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
+<h4>Usage</h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+<h4>Arguments</h4>
+<dl><dt>...</dt>
+ <dd> The <i>variadic data</i> to be converted.<br>
+</dd>
+</dl><h4>Requirements</h4>
+<div> <b>Header:</b> <a href="../headers/variadic/to_list.html"><boost/preprocessor/variadic/to_list.hpp></a>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <<a href="../headers/variadic/to_list.html">boost/preprocessor/variadic/to_list.hpp</a>><br><br><a href="variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a>(x, y, z)<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_to_seq.html b/third_party/boostorg/preprocessor/doc/ref/variadic_to_seq.html
new file mode 100644
index 0000000..19b3b54
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_to_seq.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_SEQ</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_SEQ</b> variadic macro
+converts a <i>variadic data</i> to a <i>seq</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_SEQ</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
+ </div>
+<h4> Arguments </h4>
+<dl><dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/variadic/to_seq.html"><boost/preprocessor/variadic/to_seq.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/variadic/to_seq.html">boost/preprocessor/variadic/to_seq.hpp</a>><br><br><a href="variadic_to_seq.html">BOOST_PP_VARIADIC_TO_SEQ</a>(a, b, c) // expands to (a)(b)(c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadic_to_tuple.html b/third_party/boostorg/preprocessor/doc/ref/variadic_to_tuple.html
new file mode 100644
index 0000000..c966cab
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadic_to_tuple.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADIC_TO_TUPLE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_TUPLE</b> variadic macro
+converts <i>variadic data </i>to a <i>tuple</i>. </div>
+<h4> Usage </h4>
+<div class="code"> <b>BOOST_PP_VARIADIC_TO_TUPLE</b>(<i>...</i>)<a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> </div>
+<h4> Arguments </h4>
+<dl>
+ <dt>...<br>
+</dt>
+ <dd> The <i>variadic data</i> to be converted. </dd>
+</dl>
+<h4> Requirements </h4>
+<div> <b>Header:</b> <a href="../headers/variadic/to_tuple.html"><boost/preprocessor/variadic/to_tuple.hpp></a>
+</div>
+<h4> Sample Code </h4>
+<div>
+<pre>#include <<a href="../headers/variadic/to_tuple.html">boost/preprocessor/variadic/to_tuple.hpp</a>><br><br>#define VAR_DATA a, b, c<br><br><a href="variadic_to_tuple.html">BOOST_PP_VARIADIC_TO_TUPLE</a>(VAR_DATA) // expands to (a, b, c)<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2013</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/variadics.html b/third_party/boostorg/preprocessor/doc/ref/variadics.html
new file mode 100644
index 0000000..a08e8c5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/variadics.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <title>BOOST_PP_VARIADICS</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADICS </b>macro specifies whether variadic macro support exists.<br>
+</div>
+<h4>Usage</h4>
+<div class="code"><b>BOOST_PP_VARIADICS</b><br>
+</div><b>Remarks</b>
+<div> The macro is an <i>object-like</i> macro. It is used in internal
+code to check for the presence of variadic macro support. It can be
+used by the end-user for the same purpose. The macro equals 1 if
+variadic macros are supported and 0 if they are not. </div><b>Requirements</b>
+<div> <b>Header:</b> <a href="../headers/config/variadics.html"><boost/preprocessor/config/config.hpp></a>
+</div>
+<h4>Sample Code</h4>
+<div>
+<pre>#include <<a href="../headers/config/variadics.html">boost/preprocessor/config/config.hpp</a>><br><br>#if <a href="variadics.html">BOOST_PP_VARIADICS</a><br>#define SOME_MACRO(...) // replacement list<br>#else<br>#define SOME_MACRO(param1,param2) // replacement list<br>#endif<br></pre>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011,2014</i> </div>
+<div style="margin-left: 0px;">
+<p><small>Distributed under the Boost Software License, Version 1.0.
+(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+</div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/while.html b/third_party/boostorg/preprocessor/doc/ref/while.html
new file mode 100644
index 0000000..1b6ed00
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/while.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <title>BOOST_PP_WHILE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_WHILE</b> macro represents a looping construct.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_WHILE</b>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>pred</dt>
+ <dd>
+ A binary predicate of the form <i>pred</i>(<i>d</i>, <i>state</i>).
+ This predicate is expanded by <b>BOOST_PP_WHILE</b> with the next available
+ iteration <i>d</i> and the current <i>state</i>.
+ This predicate must expand to value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ The construct continues to loop until this predicate returns <i>0</i>.
+ When this predicate returns <i>0</i>, <b>BOOST_PP_WHILE</b> returns the current <i>state</i>.
+ </dd>
+ <dt>op</dt>
+ <dd>
+ A binary operation of the form <i>op</i>(<i>d</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_WHILE</b> with the next available
+ iteration <i>d</i> and the current <i>state</i>.
+ This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
+ </dd>
+ <dt>state</dt>
+ <dd>
+ The initial state.
+ Often this argument is a <i>tuple</i>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ This macro iterates <i>op</i>(<i>d</i>, <i>state</i>) while <i>pred</i>(<i>d</i>, <i>state</i>) is non-zero.
+ In other words expands to:
+ <div>
+ <i>op</i>(<i>d</i>, ... <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>)) ... ).
+ </div>
+ </div>
+ <div>
+ The <i>d</i> value that is passed to both <i>pred</i> and <i>op</i> represents the next available iteration.
+ Other macros that have <b>_D</b> suffix variants internally use <b>BOOST_PP_WHILE</b>--for example, <b>BOOST_PP_ADD</b> and <b>BOOST_PP_ADD_D</b>.
+ Using these <b>_D</b> versions is not strictly necessary, but passing the <i>d</i> value (that passed to <i>pred</i> or <i>op</i>) to these macros allows them to reenter <b>BOOST_PP_WHILE</b> with maximum efficiency.
+ </div>
+ <div>
+ To directly use this <i>d</i> value, rather than simply passing it to another macro, see <b>BOOST_PP_WHILE_<i>d</i></b>.
+ </div>
+ <div>
+ Previously, this macro could not be used recursively inside <b>BOOST_PP_WHILE</b>.
+ This limitation no longer exists, as the library can automatically detect the next available iteration.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="while_d.html">BOOST_PP_WHILE_<i>d</i></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/control/while.html"><boost/preprocessor/control/while.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(n, state) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, state)
+
+#define OP(d, state) \
+ OP_D( \
+ d, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 0, state), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(2, 1, state) \
+ ) \
+ /**/
+
+#define OP_D(d, res, c) \
+ ( \
+ <a href="add_d.html">BOOST_PP_ADD_D</a>( \
+ d, \
+ res, \
+ <a href="dec.html">BOOST_PP_DEC</a>(c) \
+ ), \
+ <a href="dec.html">BOOST_PP_DEC</a>(c) \
+ ) \
+ /**/
+
+#define SUMMATION(n) \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>( \
+ 2, 0, \
+ <a href="while.html">BOOST_PP_WHILE</a>(PRED, OP, (n, n)) \
+ ) \
+ /**/
+
+SUMMATION(3) // expands to 6
+SUMMATION(4) // expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/while_d.html b/third_party/boostorg/preprocessor/doc/ref/while_d.html
new file mode 100644
index 0000000..b7077da
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/while_d.html
@@ -0,0 +1,117 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_WHILE_d</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <div style="margin-left: 0px;"> The <b>BOOST_PP_WHILE_<i>d</i></b> macro
+ represents a reentry into the <b>BOOST_PP_WHILE</b> looping construct. </div>
+ <h4>Usage</h4>
+ <div class="code"> <b>BOOST_PP_WHILE_</b> ## <i>d</i>(<i>pred</i>, <i>op</i>,
+ <i>state</i>) </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>d</dt>
+ <dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
+ <dt>pred</dt>
+ <dd> A binary predicate of the form <i>pred</i>(<i>d</i>, <i>state</i>).
+ This predicate is expanded by <b>BOOST_PP_WHILE</b> with the next
+ available iteration <i>d</i> and the current <i>state</i>. This
+ predicate must expand to value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ The construct continues to loop until this predicate returns <i>0</i>.
+ When this predicate returns <i>0</i>, <b>BOOST_PP_WHILE</b> returns
+ the current <i>state</i>. </dd>
+ <dt>op</dt>
+ <dd> A binary operation of the form <i>op</i>(<i>d</i>, <i>state</i>).
+ This operation is expanded by <b>BOOST_PP_WHILE</b> with the next
+ available iteration <i>d</i> and the current <i>state</i>. This
+ macro is repeatedly applied to the <i>state</i>, each time producing a
+ new <i>state</i>, until <i>pred</i> returns <i>0</i>. </dd>
+ <dt>state</dt>
+ <dd> The initial state. Often this argument is a <i>tuple</i>. </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div> This macro iterates <i>op</i>(<i>d</i>, <i>state</i>) while <i>pred</i>(<i>d</i>,
+ <i>state</i>) is non-zero. In other words expands to:
+ <div> <i>op</i>(<i>d</i>, ... <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>))
+ ... ). </div>
+ </div>
+ <div> At certain times, it may be necessary to perform the concatenation
+ with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting
+ operator. This happens when the <i>d</i> value is a macro
+ invocation itself. It needs a delay to allow it to expand. The
+ syntax in such a scenario becomes:
+ <div> <b>BOOST_PP_CAT</b>(<b>BOOST_PP_WHILE_</b>, <i>d</i>)(<i>pred</i>,
+ <i>op</i>, <i>state</i>). </div>
+ </div>
+ <div> Previously, it was possible to concatenate <i>d</i> directly to <b>BOOST_PP_WHILE</b>
+ (without the trailing underscore). This is no longer supported. </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="cat.html">BOOST_PP_CAT</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ <li><a href="while.html">BOOST_PP_WHILE</a></li>
+ <li><a href="while_d_macros.html"><span style="color: gray;">Macros with D
+ re-entrancy forms</span></a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div> <b>Header:</b> <a href="../headers/control/while.html"><boost/preprocessor/control/while.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+ <div>
+ <pre>#include <<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>>
+#include <<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>>
+#include <<a href="../headers/array/elem.html">boost/preprocessor/array/elem.hpp</a>>
+#include <<a href="../headers/array/size.html">boost/preprocessor/array/size.hpp</a>>
+#include <<a href="../headers/control/while.html">boost/preprocessor/control/while.hpp</a>>
+#include <<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>>
+
+#define PRED(d, data) <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 1, data)
+
+#define OP(d, data) \
+ OP_D( \
+ d, \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 0, data), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 1, data), \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, 2, data) \
+ ) \
+ /**/
+
+#define OP_D(d, res, i, array) \
+ ( \
+ <a href="add_d.html">BOOST_PP_ADD_D</a>( \
+ d, res, \
+ <a href="array_elem.html">BOOST_PP_ARRAY_ELEM</a>(<a href="dec.html">BOOST_PP_DEC</a>(i), array)), \
+ <a href="dec.html">BOOST_PP_DEC</a>(i), \
+ array \
+ ) \
+ /**/
+
+#define ACCUMULATE_D(d, array) \
+ <a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>( \
+ 3, 0, \
+ <a href="while_d.html">BOOST_PP_WHILE_</a> ## d( \
+ PRED, OP, \
+ (0, <a href="array_size.html">BOOST_PP_ARRAY_SIZE</a>(array), array) \
+ ) \
+ ) \
+ /**/
+
+#define ARRAY (4, (1, 2, 3, 4))
+
+ACCUMULATE_D(1, ARRAY)// expands to 10
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright <a href="http://www.housemarque.com"
+ target="_top">Housemarque Oy</a> 2002</i> <br>
+ <i>© Copyright Paul Mensonides 2002<br>
+ </i><i>© Copyright Edward Diener 2014</i><br>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/while_d_macros.html b/third_party/boostorg/preprocessor/doc/ref/while_d_macros.html
new file mode 100644
index 0000000..a9c61f1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/while_d_macros.html
@@ -0,0 +1,89 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>BOOST_PP_WHILE_d_macros</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>This is a list, based on functionality, of the macros which have an
+ alternate <b>_<i>d</i></b> name, representing a reentry into the <b>BOOST_PP_WHILE</b>
+ looping construct:<br>
+ <br>
+ arithmetic<br>
+ <ul>
+ <li><a href="add_d.html"><span style="color: gray;">BOOST_PP_ADD_D</span></a></li>
+ <li><a href="div_d.html"><span style=" color: gray;">BOOST_PP_DIV_D</span></a></li>
+ <li><a href="div_d.html"><span
+ style=" color: gray;"></span></a><a href="mod_d.html"><span style=" color: gray;">BOOST_PP_MOD_D</span></a></li>
+ <li><a href="mod_d.html"><span
+ style=" color: gray;"></span></a><a href="mul_d.html"><span
+ style=" color: gray;">BOOST_PP_MUL_D</span></a></li>
+ <li><a href="mul_d.html"><span
+ style=" color: gray;"></span></a><a href="sub_d.html"><span
+ style=" color: gray;">BOOST_PP_SUB_D</span></a></li>
+ </ul>
+ array<br>
+ <ul>
+ <li><a href="array_insert_d.html"><span style="color: gray;">BOOST_PP_ARRAY_INSERT_D</span></a></li>
+ <li><span style=" color: gray;"><a href="array_remove_d.html">BOOST_PP_ARRAY_REMOVE_D</a></span></li>
+ <li><a href="array_replace_d.html"><span style=" color: gray;">BOOST_PP_ARRAY_REPLACE_D</span></a></li>
+ </ul>
+ comparison<br>
+ <ul>
+ <li><a href="equal_d.html"><span style=" color: gray;">BOOST_PP_EQUAL_D</span></a></li>
+ <li><a href="greater_d.html"><span style=" color: gray;">BOOST_PP_GREATER_D</span></a></li>
+ <li><a href="greater_equal_d.html"><span style=" color: gray;">BOOST_PP_GREATER_EQUAL_D</span></a></li>
+ <li><a href="less_d.html"><span style=" color: gray;">BOOST_PP_LESS_D</span></a></li>
+ <li><a href="less_equal_d.html"><span style=" color: gray;">BOOST_PP_LESS_EQUAL_D</span></a></li>
+ <li><a href="not_equal_d.html"><span style=" color: gray;">BOOST_PP_NOT_EQUAL_D</span></a></li>
+ </ul>
+ control<br>
+ <ul>
+ <li><a href="deduce_d.html"><span style=" color: gray;">BOOST_PP_DEDUCE_D</span></a></li>
+ </ul>
+ list<br>
+ <ul>
+ </ul>
+ <ul>
+ <li><a href="list_append_d.html"><span style=" color: gray;">BOOST_PP_LIST_APPEND_D</span></a></li>
+ <li><a href="list_at_d.html"><span style=" color: gray;">BOOST_PP_LIST_AT_D</span></a></li>
+ <li><a href="list_cat_d.html"><span style=" color: gray;">BOOST_PP_LIST_CAT_D</span></a></li>
+ <li><a href="list_filter_d.html"><span style=" color: gray;">BOOST_PP_LIST_FILTER_D</span></a></li>
+ <li><a href="list_first_n_d.html"><span style=" color: gray;">BOOST_PP_LIST_FIRST_N_D</span></a></li>
+ <li><a href="list_fold_left_d.html"><span style=" color: gray;">BOOST_PP_LIST_FOLD_LEFT_d</span></a></li>
+ <li><a href="list_fold_right_d.html"><span style=" color: gray;">BOOST_PP_LIST_FOLD_RIGHT_d</span></a></li>
+ <li><a href="list_rest_n_d.html"><span style=" color: gray;">BOOST_PP_LIST_REST_N_D</span></a></li>
+ <li><a href="list_reverse_d.html"><span style=" color: gray;">BOOST_PP_LIST_REVERSE_D</span></a></li>
+ <li><a href="list_size_d.html"><span style=" color: gray;">BOOST_PP_LIST_SIZE_D</span></a></li>
+ <li><a href="list_to_array_d.html"><span style=" color: gray;">BOOST_PP_LIST_TO_ARRAY_D</span></a></li>
+ <li><a href="list_transform_d.html"><span style=" color: gray;">BOOST_PP_LIST_TRANSFORM_D</span></a></li>
+ </ul>
+ selection<br>
+ <ul>
+ <li><a href="max_d.html"><span style=" color: gray;">BOOST_PP_MAX_D</span></a></li>
+ <li><a href="min_d.html"><span style=" color: gray;">BOOST_PP_MIN_D</span></a></li>
+ </ul>
+ repetition<br>
+ <ul>
+ <li><a href="repeat_from_to_d.html"><span style=" color: gray;">BOOST_PP_REPEAT_FROM_TO_D</span></a></li>
+ <li><a href="repeat_from_to_d_z.html"><span style=" color: gray;">BOOST_PP_REPEAT_FROM_TO_D_z</span></a></li>
+ </ul>
+ tuple<br>
+ <ul>
+ <li><a href="tuple_insert_d.html"><span style=" color: gray;">BOOST_PP_TUPLE_INSERT_D</span></a></li>
+ <li><a href="tuple_remove_d.html"><span style=" color: gray;">BOOST_PP_TUPLE_REMOVE_D</span></a></li>
+ <li><a href="tuple_replace_d.html"><span style=" color: gray;">BOOST_PP_TUPLE_REPLACE_D</span></a></li>
+ </ul>
+ base<br>
+ <ul>
+ <li><a href="while_d.html"><span style=" color: gray;">BOOST_PP_WHILE_D</span></a></li>
+ </ul>
+ <br>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2014</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/wstringize.html b/third_party/boostorg/preprocessor/doc/ref/wstringize.html
new file mode 100644
index 0000000..9a3c277
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/wstringize.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+ <title>BOOST_PP_WSTRINGIZE</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_WSTRINGIZE</b> macro wide stringizes its argument after it has been expanded.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_WSTRINGIZE</b>(<i>text</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>text</dt>
+ <dd>
+ The text to be converted to a wide string literal.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ The preprocessor stringizing operator (<b>#</b>) prevents arguments from expanding.
+ This macro allows its argument to expand before it is stringized.
+ </div>
+<!-- <h4>See Also</h4> -->
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/wstringize.html"><boost/preprocessor/wstringize.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/wstringize.html">boost/preprocessor/wstringize.hpp</a>>
+
+<a href="wstringize.html">BOOST_PP_WSTRINGIZE</a>(some text) // expands to L"some text"
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/ref/xor.html b/third_party/boostorg/preprocessor/doc/ref/xor.html
new file mode 100644
index 0000000..1b8c7b4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/ref/xor.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <title>BOOST_PP_XOR</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <div style="margin-left: 0px;">
+ The <b>BOOST_PP_XOR</b> macro expands to the logical <i>XOR</i> of its operands.
+ </div>
+ <h4>Usage</h4>
+ <div class="code">
+ <b>BOOST_PP_XOR</b>(<i>p</i>, <i>q</i>)
+ </div>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>p</dt>
+ <dd>
+ The left operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ <dt>q</dt>
+ <dd>
+ The right operand of the operation.
+ Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
+ </dd>
+ </dl>
+ <h4>Remarks</h4>
+ <div>
+ If either <i>p</i> or <i>q</i> is non-zero exclusively, this macro expands to <i>1</i>.
+ Otherwise, it expands to <i>0</i>.
+ </div>
+ <div>
+ This macro performs a boolean conversion on each operand before performing the logical <i>XOR</i> operation.
+ If that conversion is not necessary, use <b>BOOST_PP_BITXOR</b> instead.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="bitxor.html">BOOST_PP_BITXOR</a></li>
+ <li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
+ </ul>
+ <h4>Requirements</h4>
+ <div>
+ <b>Header:</b> <a href="../headers/logical/xor.html"><boost/preprocessor/logical/xor.hpp></a>
+ </div>
+ <h4>Sample Code</h4>
+<div><pre>
+#include <<a href="../headers/logical/xor.html">boost/preprocessor/logical/xor.hpp</a>>
+
+<a href="xor.html">BOOST_PP_XOR</a>(4, 3) // expands to 0
+<a href="xor.html">BOOST_PP_XOR</a>(5, 0) // expands to 1
+</pre></div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/styles.css b/third_party/boostorg/preprocessor/doc/styles.css
new file mode 100644
index 0000000..fe12e1f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/styles.css
@@ -0,0 +1,87 @@
+a {
+ color: black;
+ font-weight: normal;
+}
+a.na:link, a.na:visited {
+ color: #dddddd;
+ text-decoration: line-through;
+}
+a:link, a:visited, a:active {
+ color: gray;
+ text-decoration: none;
+}
+a.local {
+ font-weight: bold;
+}
+a:hover, a.na:hover {
+ color: blue;
+}
+body {
+ color: black; background-color: white;
+}
+.code {
+ color: black; background-color: #dddddd;
+ letter-spacing: 1px;
+ border: 1px solid; border-color: black;
+ padding-left: 12px; padding-right: 12px; padding-top: 5px; padding-bottom: 5px;
+ margin-left: 20px;
+}
+dd {
+ padding-left: 40px;
+ margin-left: 0px; margin-bottom: 10px;
+}
+div {
+ margin-top: 10px; margin-bottom: 10px; margin-left: 20px;
+}
+dl {
+ margin-top: 0px; margin-bottom: 0px;
+}
+dt {
+ font-style: italic;
+ padding-left: 20px;
+ margin-top: 10px;
+}
+h4, h5 {
+ margin-top: 10px; margin-bottom: 10px;
+}
+hr {
+ margin-top: 0px; margin-bottom: 0px;
+}
+.incompatibility {
+ color: red;
+}
+.indent {
+ margin-top: 0px; margin-bottom: 0px;
+}
+pre {
+ letter-spacing: 1px;
+ padding: 0px;
+ margin: 0px;
+}
+pre a:hover {
+ color: orange;
+}
+s {
+ color: #dddddd;
+}
+.sig {
+ font-style: italic;
+ color: #aaaaaa;
+ text-align: right;
+}
+span {
+ display: block;
+ margin: 0px;
+}
+ul {
+ margin-top: 10px; margin-bottom: 10px; margin-left: 20px;
+ padding-left: 17px;
+}
+
+/*
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+*/
diff --git a/third_party/boostorg/preprocessor/doc/syntax.html b/third_party/boostorg/preprocessor/doc/syntax.html
new file mode 100644
index 0000000..abc0b2a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/syntax.html
@@ -0,0 +1,307 @@
+<html>
+ <head>
+ <title>syntax.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ </head>
+ <body>
+ <h4>Identifiers for Syntax Highlighting</h4>
+ <div>
+ <!-- A -->
+ <br>BOOST_PP_ADD
+ <br>BOOST_PP_ADD_D
+ <br>BOOST_PP_AND
+ <br>BOOST_PP_APPLY
+ <br>BOOST_PP_ARRAY_DATA
+ <br>BOOST_PP_ARRAY_ELEM
+ <br>BOOST_PP_ARRAY_ENUM
+ <br>BOOST_PP_ARRAY_INSERT
+ <br>BOOST_PP_ARRAY_INSERT_D
+ <br>BOOST_PP_ARRAY_POP_BACK
+ <br>BOOST_PP_ARRAY_POP_BACK_Z
+ <br>BOOST_PP_ARRAY_POP_FRONT
+ <br>BOOST_PP_ARRAY_POP_FRONT_Z
+ <br>BOOST_PP_ARRAY_PUSH_BACK
+ <br>BOOST_PP_ARRAY_PUSH_FRONT
+ <br>BOOST_PP_ARRAY_REMOVE
+ <br>BOOST_PP_ARRAY_REMOVE_D
+ <br>BOOST_PP_ARRAY_REPLACE
+ <br>BOOST_PP_ARRAY_REPLACE_D
+ <br>BOOST_PP_ARRAY_REVERSE
+ <br>BOOST_PP_ARRAY_SIZE
+ <br>BOOST_PP_ARRAY_TO_LIST
+ <br>BOOST_PP_ARRAY_TO_SEQ
+ <br>BOOST_PP_ARRAY_TO_TUPLE
+ <br>BOOST_PP_ASSERT
+ <br>BOOST_PP_ASSERT_MSG
+ <br>BOOST_PP_ASSIGN_SLOT
+ <!-- B -->
+ <br>BOOST_PP_BITAND
+ <br>BOOST_PP_BITNOR
+ <br>BOOST_PP_BITOR
+ <br>BOOST_PP_BITXOR
+ <br>BOOST_PP_BOOL
+ <!-- C -->
+ <br>BOOST_PP_CAT
+ <br>BOOST_PP_COMMA
+ <br>BOOST_PP_COMMA_IF
+ <br>BOOST_PP_COMPL
+ <br>BOOST_PP_CONFIG_EXTENDED_LINE_INFO
+ <br>BOOST_PP_COUNTER
+ <!-- D -->
+ <br>BOOST_PP_DEC
+ <br>BOOST_PP_DEDUCE_D
+ <br>BOOST_PP_DEDUCE_R
+ <br>BOOST_PP_DEDUCE_Z
+ <br>BOOST_PP_DIV
+ <br>BOOST_PP_DIV_D
+ <!-- E -->
+ <br>BOOST_PP_EMPTY
+ <br>BOOST_PP_ENUM
+ <br>BOOST_PP_ENUM_BINARY_PARAMS
+ <br>BOOST_PP_ENUM_BINARY_PARAMS_Z
+ <br>BOOST_PP_ENUM_PARAMS
+ <br>BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT
+ <br>BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS
+ <br>BOOST_PP_ENUM_PARAMS_Z
+ <br>BOOST_PP_ENUM_SHIFTED
+ <br>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS
+ <br>BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z
+ <br>BOOST_PP_ENUM_SHIFTED_PARAMS
+ <br>BOOST_PP_ENUM_SHIFTED_PARAMS_Z
+ <br>BOOST_PP_ENUM_SHIFTED_
+ <br>BOOST_PP_ENUM_TRAILING
+ <br>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS
+ <br>BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z
+ <br>BOOST_PP_ENUM_TRAILING_PARAMS
+ <br>BOOST_PP_ENUM_TRAILING_PARAMS_Z
+ <br>BOOST_PP_ENUM_TRAILING_
+ <br>BOOST_PP_ENUM_
+ <br>BOOST_PP_EQUAL
+ <br>BOOST_PP_EQUAL_D
+ <br>BOOST_PP_EXPAND
+ <br>BOOST_PP_EXPR_IF
+ <br>BOOST_PP_EXPR_IIF
+ <!-- F -->
+ <br>BOOST_PP_FILENAME_1
+ <br>BOOST_PP_FILENAME_2
+ <br>BOOST_PP_FILENAME_3
+ <br>BOOST_PP_FILENAME_4
+ <br>BOOST_PP_FILENAME_5
+ <br>BOOST_PP_FOR
+ <br>BOOST_PP_FOR_
+ <br>BOOST_PP_FRAME_FINISH
+ <br>BOOST_PP_FRAME_FLAGS
+ <br>BOOST_PP_FRAME_ITERATION
+ <br>BOOST_PP_FRAME_START
+ <!-- G -->
+ <br>BOOST_PP_GREATER
+ <br>BOOST_PP_GREATER_D
+ <br>BOOST_PP_GREATER_EQUAL
+ <br>BOOST_PP_GREATER_EQUAL_D
+ <!-- I -->
+ <br>BOOST_PP_IDENTITY
+ <br>BOOST_PP_IF
+ <br>BOOST_PP_IIF
+ <br>BOOST_PP_INC
+ <br>BOOST_PP_INCLUDE_SELF
+ <br>BOOST_PP_INDIRECT_SELF
+ <br>BOOST_PP_INTERCEPT
+ <br>BOOST_PP_IS_ITERATING
+ <br>BOOST_PP_IS_SELFISH
+ <br>BOOST_PP_ITERATE
+ <br>BOOST_PP_ITERATION
+ <br>BOOST_PP_ITERATION_DEPTH
+ <br>BOOST_PP_ITERATION_FINISH
+ <br>BOOST_PP_ITERATION_FLAGS
+ <br>BOOST_PP_ITERATION_LIMITS
+ <br>BOOST_PP_ITERATION_PARAMS_1
+ <br>BOOST_PP_ITERATION_PARAMS_2
+ <br>BOOST_PP_ITERATION_PARAMS_3
+ <br>BOOST_PP_ITERATION_PARAMS_4
+ <br>BOOST_PP_ITERATION_PARAMS_5
+ <br>BOOST_PP_ITERATION_START
+ <!-- L -->
+ <br>BOOST_PP_LESS
+ <br>BOOST_PP_LESS_D
+ <br>BOOST_PP_LESS_EQUAL
+ <br>BOOST_PP_LESS_EQUAL_D
+ <br>BOOST_PP_LIMIT_DIM
+ <br>BOOST_PP_LIMIT_FOR
+ <br>BOOST_PP_LIMIT_ITERATION
+ <br>BOOST_PP_LIMIT_ITERATION_DIM
+ <br>BOOST_PP_LIMIT_MAG
+ <br>BOOST_PP_LIMIT_REPEAT
+ <br>BOOST_PP_LIMIT_SEQ
+ <br>BOOST_PP_LIMIT_SLOT_COUNT
+ <br>BOOST_PP_LIMIT_SLOT_SIG
+ <br>BOOST_PP_LIMIT_TUPLE
+ <br>BOOST_PP_LIMIT_VARIADIC
+ <br>BOOST_PP_LIMIT_WHILE
+ <br>BOOST_PP_LINE
+ <br>BOOST_PP_LIST_APPEND
+ <br>BOOST_PP_LIST_APPEND_D
+ <br>BOOST_PP_LIST_AT
+ <br>BOOST_PP_LIST_AT_D
+ <br>BOOST_PP_LIST_CAT
+ <br>BOOST_PP_LIST_CAT_D
+ <br>BOOST_PP_LIST_CONS
+ <br>BOOST_PP_LIST_ENUM
+ <br>BOOST_PP_LIST_ENUM_R
+ <br>BOOST_PP_LIST_FILTER
+ <br>BOOST_PP_LIST_FILTER_D
+ <br>BOOST_PP_LIST_FIRST
+ <br>BOOST_PP_LIST_FIRST_N
+ <br>BOOST_PP_LIST_FIRST_N_D
+ <br>BOOST_PP_LIST_FOLD_LEFT
+ <br>BOOST_PP_LIST_FOLD_LEFT_2ND
+ <br>BOOST_PP_LIST_FOLD_LEFT_2ND_D
+ <br>BOOST_PP_LIST_FOLD_LEFT_
+ <br>BOOST_PP_LIST_FOLD_LEFT_D
+ <br>BOOST_PP_LIST_FOLD_RIGHT
+ <br>BOOST_PP_LIST_FOLD_RIGHT_2ND
+ <br>BOOST_PP_LIST_FOLD_RIGHT_2ND_D
+ <br>BOOST_PP_LIST_FOLD_RIGHT_
+ <br>BOOST_PP_LIST_FOLD_RIGHT_D
+ <br>BOOST_PP_LIST_FOR_EACH
+ <br>BOOST_PP_LIST_FOR_EACH_I
+ <br>BOOST_PP_LIST_FOR_EACH_I_R
+ <br>BOOST_PP_LIST_FOR_EACH_PRODUCT
+ <br>BOOST_PP_LIST_FOR_EACH_PRODUCT_R
+ <br>BOOST_PP_LIST_FOR_EACH_R
+ <br>BOOST_PP_LIST_IS_CONS
+ <br>BOOST_PP_LIST_IS_NIL
+ <br>BOOST_PP_LIST_NIL
+ <br>BOOST_PP_LIST_REST
+ <br>BOOST_PP_LIST_REST_N
+ <br>BOOST_PP_LIST_REST_N_D
+ <br>BOOST_PP_LIST_REVERSE
+ <br>BOOST_PP_LIST_REVERSE_D
+ <br>BOOST_PP_LIST_SIZE
+ <br>BOOST_PP_LIST_SIZE_D
+ <br>BOOST_PP_LIST_TO_ARRAY
+ <br>BOOST_PP_LIST_TO_SEQ
+ <br>BOOST_PP_LIST_TO_TUPLE
+ <br>BOOST_PP_LIST_TO_TUPLE_R
+ <br>BOOST_PP_LIST_TRANSFORM
+ <br>BOOST_PP_LIST_TRANSFORM_D
+ <br>BOOST_PP_LOCAL_ITERATE
+ <br>BOOST_PP_LOCAL_LIMITS
+ <br>BOOST_PP_LOCAL_MACRO
+ <br>BOOST_PP_LPAREN
+ <br>BOOST_PP_LPAREN_IF
+ <!-- M -->
+ <br>BOOST_PP_MAX
+ <br>BOOST_PP_MAX_D
+ <br>BOOST_PP_MIN
+ <br>BOOST_PP_MIN_D
+ <br>BOOST_PP_MOD
+ <br>BOOST_PP_MOD_D
+ <br>BOOST_PP_MUL
+ <br>BOOST_PP_MUL_D
+ <!-- N -->
+ <br>BOOST_PP_NIL
+ <br>BOOST_PP_NOR
+ <br>BOOST_PP_NOT
+ <br>BOOST_PP_NOT_EQUAL
+ <br>BOOST_PP_NOT_EQUAL_D
+ <!-- O -->
+ <br>BOOST_PP_OR
+ <br>BOOST_PP_OVERLOAD
+ <!-- R -->
+ <br>BOOST_PP_RELATIVE_FINISH
+ <br>BOOST_PP_RELATIVE_FLAGS
+ <br>BOOST_PP_RELATIVE_ITERATION
+ <br>BOOST_PP_RELATIVE_START
+ <br>BOOST_PP_REPEAT
+ <br>BOOST_PP_REPEAT_1ST
+ <br>BOOST_PP_REPEAT_2ND
+ <br>BOOST_PP_REPEAT_3RD
+ <br>BOOST_PP_REPEAT_FROM_TO
+ <br>BOOST_PP_REPEAT_FROM_TO_1ST
+ <br>BOOST_PP_REPEAT_FROM_TO_2ND
+ <br>BOOST_PP_REPEAT_FROM_TO_3RD
+ <br>BOOST_PP_REPEAT_FROM_TO_D
+ <br>BOOST_PP_REPEAT_FROM_TO_D_
+ <br>BOOST_PP_REPEAT_FROM_TO_
+ <br>BOOST_PP_REPEAT_
+ <br>BOOST_PP_RPAREN
+ <br>BOOST_PP_RPAREN_IF
+ <!-- S -->
+ <br>BOOST_PP_SEQ_CAT
+ <br>BOOST_PP_SEQ_CAT_S
+ <br>BOOST_PP_SEQ_ELEM
+ <br>BOOST_PP_SEQ_ENUM
+ <br>BOOST_PP_SEQ_FILTER
+ <br>BOOST_PP_SEQ_FILTER_S
+ <br>BOOST_PP_SEQ_FIRST_N
+ <br>BOOST_PP_SEQ_FOLD_LEFT
+ <br>BOOST_PP_SEQ_FOLD_LEFT_
+ <br>BOOST_PP_SEQ_FOLD_RIGHT
+ <br>BOOST_PP_SEQ_FOLD_RIGHT_
+ <br>BOOST_PP_SEQ_FOR_EACH
+ <br>BOOST_PP_SEQ_FOR_EACH_I
+ <br>BOOST_PP_SEQ_FOR_EACH_I_R
+ <br>BOOST_PP_SEQ_FOR_EACH_PRODUCT
+ <br>BOOST_PP_SEQ_FOR_EACH_PRODUCT_R
+ <br>BOOST_PP_SEQ_FOR_EACH_R
+ <br>BOOST_PP_SEQ_HEAD
+ <br>BOOST_PP_SEQ_INSERT
+ <br>BOOST_PP_SEQ_NIL
+ <br>BOOST_PP_SEQ_POP_BACK
+ <br>BOOST_PP_SEQ_POP_FRONT
+ <br>BOOST_PP_SEQ_PUSH_BACK
+ <br>BOOST_PP_SEQ_PUSH_FRONT
+ <br>BOOST_PP_SEQ_REMOVE
+ <br>BOOST_PP_SEQ_REPLACE
+ <br>BOOST_PP_SEQ_REST_N
+ <br>BOOST_PP_SEQ_REVERSE
+ <br>BOOST_PP_SEQ_REVERSE_S
+ <br>BOOST_PP_SEQ_SIZE
+ <br>BOOST_PP_SEQ_SUBSEQ
+ <br>BOOST_PP_SEQ_TAIL
+ <br>BOOST_PP_SEQ_TO_ARRAY
+ <br>BOOST_PP_SEQ_TO_LIST
+ <br>BOOST_PP_SEQ_TO_TUPLE
+ <br>BOOST_PP_SEQ_TRANSFORM
+ <br>BOOST_PP_SEQ_TRANSFORM_S
+ <br>BOOST_PP_SLOT
+ <br>BOOST_PP_STRINGIZE
+ <br>BOOST_PP_SUB
+ <br>BOOST_PP_SUB_D
+ <!-- T -->
+ <br>BOOST_PP_TUPLE_EAT
+ <br>BOOST_PP_TUPLE_ELEM
+ <br>BOOST_PP_TUPLE_ENUM
+ <br>BOOST_PP_TUPLE_REM
+ <br>BOOST_PP_TUPLE_REM_CTOR
+ <br>BOOST_PP_TUPLE_REVERSE
+ <br>BOOST_PP_TUPLE_SIZE
+ <br>BOOST_PP_TUPLE_TO_ARRAY
+ <br>BOOST_PP_TUPLE_TO_LIST
+ <br>BOOST_PP_TUPLE_TO_SEQ
+ <!-- U -->
+ <br>BOOST_PP_UPDATE_COUNTER
+ <!-- V -->
+ <br>BOOST_PP_VALUE
+ <br>BOOST_PP_VARIADIC_ELEM
+ <br>BOOST_PP_VARIADIC_SIZE
+ <br>BOOST_PP_VARIADIC_TO_ARRAY
+ <br>BOOST_PP_VARIADIC_TO_LIST
+ <br>BOOST_PP_VARIADIC_TO_SEQ
+ <br>BOOST_PP_VARIADIC_TO_TUPLE
+ <!-- W -->
+ <br>BOOST_PP_WHILE
+ <br>BOOST_PP_WHILE_
+ <br>BOOST_PP_WSTRINGIZE
+ <!-- X -->
+ <br>BOOST_PP_XOR
+ </div>
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+ </body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/terms.html b/third_party/boostorg/preprocessor/doc/terms.html
new file mode 100644
index 0000000..7edfb2d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/terms.html
@@ -0,0 +1,23 @@
+<html>
+<head>
+ <title>terms.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Terminology <small><a href="contents.html" target="index">[back]</a></small></h4>
+<ul>
+ <li><a href="terms/evaluated.html">evaluated parameter</a></li>
+ <li><a href="terms/named_external.html">named external argument</a></li>
+</ul>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/terms/evaluated.html b/third_party/boostorg/preprocessor/doc/terms/evaluated.html
new file mode 100644
index 0000000..a57b183
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/terms/evaluated.html
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <title>Evaluated Parameter</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Evaluated Parameter</h4>
+ <div>
+ An <i>evaluated parameter</i> is a numeric value that is evaluated by the library as a constant expression.
+ This means that the expression can include simple arithmetic, logical, and condition expressions.
+ It also means that the value of the parameter no longer depends on the source of the parameter.
+ In other words, if the value is dependent on some macro, it will no longer be dependent on that macro after it is evaluated.
+ This disables the lazy-evaluation that the preprocessor normallly uses.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/terms/named_external.html b/third_party/boostorg/preprocessor/doc/terms/named_external.html
new file mode 100644
index 0000000..0678bcf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/terms/named_external.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <title>Named External Argument</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Named External Argument</h4>
+ <div>
+ A <i>named external argument</i> is an argument to a macro that is <i>included</i>.
+ There is no way to pass arguments to a file directly, so they must be passed to files in the form of macros with known names that are defined by the user.
+ Every time that the library uses this idiom, the file that is included automatically undefines the macro in order to better simulate <i>normal</i> parameters.
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/title.html b/third_party/boostorg/preprocessor/doc/title.html
new file mode 100644
index 0000000..ea7871e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/title.html
@@ -0,0 +1,25 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>title.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ </head>
+ <body>
+ <h4>Introduction</h4>
+ <div> The Boost Preprocessing library is a library of macros, with support
+ for preprocessor metaprogramming. The library supports both C++ and C
+ compilation. It does not depend on any other Boost libraries and therefore
+ may be used as a standalone library. </div>
+ <div> An excerpt from <i>C++ Template Metaprogramming: Concepts, Tools, and
+ Techniques from Boost and Beyond</i> by Dave Abrahams and Aleksey
+ Gurtovoy has been made <a href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html"
+ target="_top"><font color="blue"><b><u><i>available</i></u></b></font></a>.
+ This excerpt contains a basic introduction to the Preprocessor library and
+ preprocessor metaprogramming which may help users new to the library and
+ users interested in seeing some of the facilities offered by the library.
+ </div>
+ <!--
+© Copyright Housemarque Oy 2002© Copyright Paul Mensonides 2002Distributed under the Boost Software License, Version 1.0.(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)-->
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/top.html b/third_party/boostorg/preprocessor/doc/top.html
new file mode 100644
index 0000000..1676e66
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/top.html
@@ -0,0 +1,32 @@
+<html>
+ <head>
+ <title>top.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <style>
+ td { height: 60px; width: 100%; text-align: center; vertical-align: middle;
+ margin: 0px; padding: 0px; font-weight: bold; }
+ </style>
+ </head>
+ <body style="margin: 0px; padding: 0px;">
+ <table style="width: 100%;">
+ <tr align="center">
+ <td>
+ The <a href="../../../index.htm" target="_parent"><font color="blue"><b>Boost</b></font></a>
+ Library
+ <br>
+ <a href="index.html" target="_parent"><font color="green"><b>Preprocessor</b></font></a>
+ Subset for <font color="red">C/C++</font>
+ </td>
+ </tr>
+ </table>
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics.html b/third_party/boostorg/preprocessor/doc/topics.html
new file mode 100644
index 0000000..5826a58
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics.html
@@ -0,0 +1,27 @@
+<html>
+<head>
+ <title>topics.html</title>
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <base target="desc">
+</head>
+<body>
+<h4>Topics <small><a href="contents.html" target="index">[back]</a></small></h4>
+<ul>
+ <li><a href="topics/motivation.html">motivation</a></li>
+ <li><a href="topics/problems.html">known problems of the preprocessor</a> </li><li><a href="topics/techniques.html">techniques</a></li>
+ <li><a href="topics/incompatible.html">incompatibilities</a></li>
+ <li><a href="topics/reentrancy.html">reentrancy</a></li>
+ <li><a href="topics/local_iteration.html">local iteration</a></li>
+ <li><a href="topics/file_iteration.html">file iteration</a></li>
+ <li><a href="topics/evaluated_slots.html">evaluated slots</a></li>
+ <li><a href="topics/variadic_macros.html">variadic macros</a></li>
+</ul>
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/evaluated_slots.html b/third_party/boostorg/preprocessor/doc/topics/evaluated_slots.html
new file mode 100644
index 0000000..dbe2539
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/evaluated_slots.html
@@ -0,0 +1,157 @@
+<html>
+<head>
+ <title>evaluated_slots.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Evaluated Slots</h4>
+<div>
+ The evaluated slot mechanism is a tool to fully evaluate a constant integral expression and avoid the lazy evaluation normally performed by the preprocessor.
+</div>
+<h4>Tutorial</h4>
+<div>
+ In order to understand the use of such a mechanism, I will start with a simple file-iteration example.
+ Consider the following scenario....
+</div>
+<div class ="code"><pre>
+for (int i = 0; i < 10; ++i) {
+ for (int j = 0; j < i; ++j) {
+ // ... use i and j
+ }
+}
+</pre></div>
+<div>
+ The above is a simple runtime model of the following multidimensional file-iteration....
+</div>
+<div class="code"><pre>
+// file.hpp
+#if !BOOST_PP_IS_ITERATING
+ #ifndef FILE_HPP_
+ #define FILE_HPP_
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, 9, "file.hpp"))
+ #include BOOST_PP_ITERATE()
+
+ #endif // FILE_HPP_
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define I BOOST_PP_ITERATION()
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (0, I, "file.hpp"))
+ #include BOOST_PP_ITERATE()
+
+ #undef I
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+ #define J BOOST_PP_ITERATION()
+
+ // use I and J
+
+ #undef J
+#endif
+</pre></div>
+<div>
+ There is a problem with the code above.
+ The writer expected <i>I</i> to refer the previous iteration frame.
+ However, that is not the case.
+ When the user refers to <i>I</i>, he is actually referring to <b>BOOST_PP_ITERATION</b>(),
+ not the value of <b>BOOST_PP_ITERATION</b>() at the point of definition.
+ Instead, it refers to exactly the same value to which <i>J</i> refers.
+</div>
+<div>
+ The problem is that the preprocessor always evaluates everything with lazy evaluation.
+ To solve the problem, we need <i>I</i> to be <i>evaluated</i> here:
+</div>
+<div class="code"><pre>
+// ...
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define I BOOST_PP_ITERATION()
+// ...
+</pre></div>
+<div>
+ Fortunately, the library offers a mechanism to do just that: evaluated slots.
+ The following code uses this mechanism to "fix" the example above...
+</div>
+<div class="code"><pre>
+// ...
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define BOOST_PP_VALUE BOOST_PP_ITERATION()
+ #include BOOST_PP_ASSIGN_SLOT(1)
+ #define I BOOST_PP_SLOT(1)
+// ...
+</pre></div>
+<div>
+ There are two steps to the assignment of an evaluated slot.
+ First, the user must define the <i>named external argument</i> <b>BOOST_PP_VALUE</b>.
+ This value must be an integral constant expression.
+ Second, the user must <i>include</i> <b>BOOST_PP_ASSIGN_SLOT</b>(<i>x</i>), where <i>x</i> is the particular slot to be assigned to (<i>1</i> to <b>BOOST_PP_LIMIT_SLOT_COUNT</b>).
+ This will evaluate <b>BOOST_PP_VALUE</b> and assign the result to the slot at index <i>x</i>.
+</div>
+<div>
+ To retrieve a slot's value, the user must use <b>BOOST_PP_SLOT</b>(<i>x</i>).
+</div>
+<div>
+ In the case above, <i>I</i> is <i>still</i> lazily evaluated.
+ However, it now evaluates to <b>BOOST_PP_SLOT</b>(<i>1</i>).
+ This value <i>will not change</i> unless there is a subsequent call to <b>BOOST_PP_ASSIGN_SLOT</b>(<i>1</i>).
+</div>
+<h4>Advanced Techniques</h4>
+<div>
+ The slot mechanism can also be used to perform calculations:
+</div>
+<div class="code"><pre>
+#include <iostream>
+
+#include <boost/preprocessor/slot/slot.hpp>
+#include <boost/preprocessor/stringize.hpp>
+
+#define X() 4
+
+#define BOOST_PP_VALUE 1 + 2 + 3 + X()
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+#undef X
+
+int main(void) {
+ std::cout
+ << BOOST_PP_STRINGIZE(BOOST_PP_SLOT(1))
+ << &std::endl;
+ return 0;
+}
+</pre></div>
+<div>
+ In essence, anything that can be evaluated in an #if (or #elif) preprocessor directive is available <i>except</i> the <i>defined</i> operator.
+</div>
+<div>
+ It is even possible to use a particular slot itself while reassigning it:
+</div>
+<div class="code"><pre>
+#define BOOST_PP_VALUE 20
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+#define BOOST_PP_VALUE 2 * BOOST_PP_SLOT(1)
+#include BOOST_PP_ASSIGN_SLOT(1)
+
+BOOST_PP_SLOT(1) // 40
+</pre></div>
+<h4>See Also</h4>
+<ul>
+ <li><a href="../ref/assign_slot.html">BOOST_PP_ASSIGN_SLOT</a></li>
+ <li><a href="../ref/limit_slot_count.html">BOOST_PP_LIMIT_SLOT_COUNT</a></li>
+ <li><a href="../ref/slot.html">BOOST_PP_SLOT</a></li>
+ <li><a href="../ref/value.html">BOOST_PP_VALUE</a></li>
+</ul>
+<div class="sig">- Paul Mensonides</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/file_iteration.html b/third_party/boostorg/preprocessor/doc/topics/file_iteration.html
new file mode 100644
index 0000000..d3bb528
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/file_iteration.html
@@ -0,0 +1,1044 @@
+<html>
+ <head>
+ <title>file_iteration.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>
+ File Iteration
+ </h4>
+ <div>
+ File iteration is a complex, but powerful, vertical repetition construct.
+ It repeatedly includes a <i>file</i> for each number in a user-specified range.
+ </div>
+ <h4>
+ Tutorial
+ </h4>
+ <div>
+ This mechanism requires two pieces of information to operate: a range to
+ iterate over and a file to include on each iteration. It can optionally
+ take a third piece of information that represents flags used to discriminate
+ between different iterations of the same file. This information is
+ obtained by the mechanism through one or two <i>named external arguments</i>.
+ These arguments are specified as user-defined macros named <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>
+ or the combination of <b>BOOST_PP_FILENAME_<i>x</i></b> and <b>BOOST_PP_ITERATION_LIMITS</b>.
+ </div>
+ <div>
+ <b>BOOST_PP_ITERATION_LIMITS</b> specifies the range of values to iterate
+ over. It <i>must</i> expand to a <i>tuple</i> containing two elements--a
+ lower and upper bound. Both the upper and lower bounds must be numeric
+ values in the range of <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>. For
+ example, if the user wishes a file to be included for numbers ranging from <i>0</i>
+ to <i>10</i>, <b>BOOST_PP_ITERATION_LIMITS</b> would be defined like this:
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_LIMITS (0, 10)
+</pre>
+ </div>
+ <div>
+ Note that there is whitespace after the name of the macro. The macro <i>does
+ not</i> take <i>two</i> arguments. In the case above, if there was
+ no whitespace, a preprocessing error would occur because <i>0</i> and <i>10</i>
+ are invalid identifiers.
+ </div>
+ <div>
+ Both the upper and lower bounds specified in the <b>BOOST_PP_ITERATION_LIMITS</b>
+ macro are <i>evaluated parameters</i>. This implies that they can include
+ simple arithmetic or logical expressions. For instance, the above
+ definition could easily have been written like this:
+ </div>
+ <div class="code">
+ <pre>
+#define N() 5
+#define BOOST_PP_ITERATION_LIMITS (0, N() + 5)
+</pre>
+ </div>
+ <div>
+ Because of this, if the whitespace after the macro name is elided, it is
+ possible for the definition to be syntactically valid:
+ </div>
+ <div class="code">
+ <pre>
+#define A 0
+#define B 10
+#define BOOST_PP_ITERATION_LIMITS(A, B)
+ // note: no whitespace ^
+</pre>
+ </div>
+ <div>
+ If this happens, an error will occur inside the mechanism when it attempts to
+ use this macro. The error messages that result may be obscure, so always
+ remember to include the whitespace. A <i>correct</i> version of the above
+ looks like this:
+ </div>
+ <div class="code">
+ <pre>
+#define A 0
+#define B 10
+#define BOOST_PP_ITERATION_LIMITS (A, B)
+ // note: has whitespace ^
+</pre>
+ </div>
+ <div>
+ <b>BOOST_PP_FILENAME_<i>x</i></b> specifies the file to iterate over. The <i>x</i>
+ is a placeholder for the dimension of iteration. (For now, we'll assume
+ this is <i>1</i>--i.e. the first dimension, so we are actually dealing with <b>BOOST_PP_FILENAME_1</b>.)
+ This macro must expand to a valid filename--in quotes or in angle brackets
+ depending on how the file is accessed:
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_FILENAME_1 "file.h"
+// -or-
+#define BOOST_PP_FILENAME_1 <file.h>
+</pre>
+ </div>
+ <div>
+ All that we need now to perform a simple file iteration is to invoke the
+ mechanism:
+ </div>
+ <div class="code">
+ <pre>
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ (The <code>??=</code> token is a trigraph for <code>#</code>. I use the
+ trigraph to make it clear that I am <i>including</i> a file rather than
+ defining or expanding a macro, but it is not necessary. Even the digraph
+ version, <code>%:</code>, could be used. Some compilers do not readily
+ accept trigraphs and digraphs, so keep that in mind. Other than that, use
+ whichever one you prefer.)
+ </div>
+ <div>
+ So, if we wish to iterate "file.h" from <i>1</i> to <i>10</i>, we just need to
+ put the pieces together:
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_LIMITS (1, 10)
+#define BOOST_PP_FILENAME_1 "file.h"
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ The above code has the effect of including "file.h" ten times in
+ succession.
+ </div>
+ <div>
+ Alternately, both the range and the file to iterate over can be expressed in
+ one macro, <b>BOOST_PP_ITERATION_PARAMS_<i>x</i></b>. Once again, the <i>x</i>
+ is a placeholder for the dimension of iteration--which we'll assume is <i>1</i>.
+ This macro must expand to an <i>array</i> that includes the lower bound, upper
+ bound, filename, and optional flags (in that order).
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, "file.h"))
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ This has the same effect as the previous version. Only one of these two
+ ways to specify the parameters can be used at a time. (The reason that
+ there are two different methods has to do with dimensional abstraction which
+ I'll get to later.)
+ </div>
+ <div>
+ There is nothing particularly useful about including a file ten times.
+ The difference is that the current macro state changes each time. For
+ example, the current "iteration value" is available with <b>BOOST_PP_ITERATION</b>().
+ If "file.h" is defined like this...
+ </div>
+ <div class="code">
+ <pre>
+// file.h
+template<> struct sample<BOOST_PP_ITERATION()> { };
+</pre>
+ </div>
+ <div>
+ ...and it is iterated as follows...
+ </div>
+ <div class="code">
+ <pre>
+template<int> struct sample;
+
+#define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 5, "file.h"))
+??=include BOOST_PP_ITERATE()
+</pre>
+ </div>
+ <div>
+ ...the result is different each time:
+ </div>
+ <div>
+ <pre>
+template<> struct sample<1> { };
+template<> struct sample<2> { };
+template<> struct sample<3> { };
+template<> struct sample<4> { };
+template<> struct sample<5> { };
+</pre>
+ </div>
+ <div>
+ There is no reason that a file can't iterate over itself. This has the
+ advantage of keeping the code together. The problem is that you have to
+ discriminate the "regular" section of the file from the iterated section of the
+ file. The library provides the <b>BOOST_PP_IS_ITERATING</b> macro to help
+ in this regard. This macro is defined as <i>1</i> if an iteration is in
+ progress. For example, to merge the contents of "file.h" into the file
+ that iterates it:
+ </div>
+ <div class="code">
+ <pre>
+// sample.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef SAMPLE_H
+ #define SAMPLE_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ template<int> struct sample;
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 5, "sample.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // SAMPLE_H
+
+#else
+
+ template<> struct sample<BOOST_PP_ITERATION()> { };
+
+#endif
+</pre>
+ </div>
+ <div>
+ Using the same file like this raises another issue. What happens when a
+ file performs two separate file iterations over itself? This is the
+ purpose of the optional flags parameter. It is used to discriminate
+ between separate iterations.
+ </div>
+ <div class="code">
+ <pre>
+// sample.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef SAMPLE_H
+ #define SAMPLE_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+ #include <boost/preprocessor/repetition/enum_params.hpp>
+ #include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+
+ template<int> struct sample;
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, "sample.h", 1))
+ ??=include BOOST_PP_ITERATE()
+
+ template<class T, class U> struct typelist_t {
+ typedef T head;
+ typedef U tail;
+ };
+
+ template<int> struct typelist;
+ struct null_t;
+
+ template<> struct typelist<1> {
+ template<class T0> struct args {
+ typedef typelist_t<T0, null_t> type;
+ };
+ };
+
+ #ifndef TYPELIST_MAX
+ #define TYPELIST_MAX 50
+ #endif
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (4, (2, TYPELIST_MAX, "sample.h", 2))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // SAMPLE_H
+
+#elif BOOST_PP_ITERATION_FLAGS() == 1
+
+ template<> struct sample<BOOST_PP_ITERATION()> { };
+
+#elif BOOST_PP_ITERATION_FLAGS() == 2
+
+ #define N BOOST_PP_ITERATION()
+
+ template<> struct typelist<N> {
+ template<BOOST_PP_ENUM_PARAMS(N, class T)> struct args {
+ typedef typelist_t<
+ T0,
+ typename typelist<N - 1>::args<BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)>::type
+ > type;
+ };
+ };
+
+ #undef N
+
+#endif
+</pre>
+ </div>
+ <div>
+ Notice the use of the "flags" parameter (which is accessed through <b>BOOST_PP_ITERATION_FLAGS</b>()).
+ It discriminates between our recurring <code>sample</code> iteration and a
+ typelist linearization iteration.
+ </div>
+ <div>
+ The second iteration illustrates the power of the file iteration
+ mechanism. It generates typelist linearizations of the form <code>typelist<3>::args<int,
+ double, char>::type</code>.
+ </div>
+ <div>
+ Actually, to continue the typelist example, with the help of another iteration
+ we can <i>fully</i> linearize typelist creation....
+ </div>
+ <div class="code">
+ <pre>
+// extract.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef EXTRACT_H
+ #define EXTRACT_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+ #include <boost/preprocessor/repetition/enum.hpp>
+ #include <boost/preprocessor/repetition/enum_params.hpp>
+ #include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+ // certain types such as "void" can't be function argument types
+
+ template<class T> struct incomplete {
+ typedef T type;
+ };
+
+ template<class T> struct strip_incomplete {
+ typedef T type;
+ };
+
+ template<class T> struct strip_incomplete<incomplete<T> > {
+ typedef T type;
+ };
+
+ template<template<int> class output, class func_t> struct extract;
+
+ #ifndef EXTRACT_MAX
+ #define EXTRACT_MAX 50
+ #endif
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, EXTRACT_MAX, "extract.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // EXTRACT_H
+
+#else
+
+ #define N BOOST_PP_ITERATION()
+ #define STRIP(z, n, _) \
+ typename strip_incomplete<T ## n>::type \
+ /**/
+
+ template<template<int> class output, class R BOOST_PP_ENUM_TRAILING_PARAMS(N, class T)>
+ struct extract<R (BOOST_PP_ENUM_PARAMS(N, T))> {
+ typedef typename output<N>::template args<BOOST_PP_ENUM(N, STRIP, nil)>::type type;
+ };
+
+ #undef STRIP
+ #undef N
+
+#endif
+</pre>
+ </div>
+ <div>
+ Now we can define a helper macro to finish the job:
+ </div>
+ <div class="code">
+ <pre>
+#define TYPELIST(args) extract<typelist, void args>::type
+
+typedef TYPELIST((int, double, incomplete<void>)) xyz;
+</pre>
+ </div>
+ <div>
+ There are two minor caveats with this result. First, certain types like <code>void</code>
+ can't be the type of an argument, so they have to be wrapped with <code>incomplete<T></code>.
+ Second, the necessary double parenthesis is annoying. If and when C++
+ gets C99's variadic macros, <code>TYPELIST</code> can be redefined:
+ </div>
+ <div class="code">
+ <pre>
+#define TYPELIST(...) extract<typelist, void (__VA_ARGS__)>::type
+
+typedef TYPELIST(int, double, short) xyz;
+</pre>
+ </div>
+ <div>
+ Note also that both the lower and upper bounds of an iteration are also
+ accessible inside an iteration with <b>BOOST_PP_ITERATION_START</b>() and <b>BOOST_PP_ITERATION_FINISH</b>().
+ </div>
+ <div>
+ It is my hope that the explanation and examples presented here demonstrate the
+ power of file iteration. Even so, this is just the beginning. The
+ file iteration mechanism also defines a full suite of facilities to support
+ multidimensional iteration.
+ </div>
+ <h4>
+ Multiple Dimensions
+ </h4>
+ <div>
+ The file iteration mechanism supports up to <b>BOOST_PP_LIMIT_ITERATION_DIM</b>
+ dimensions. The first dimension (i.e. the outermost) we have already used
+ above. In order to use the second dimension (inside the first), we simply
+ have to replace the placeholder <i>x</i> with <i>2</i> instead of <i>1</i>.
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_ITERATION_PARAMS_2 /* ... */
+ ^
+</pre>
+ </div>
+ <div>
+ ...or...
+ </div>
+ <div class="code">
+ <pre>
+#define BOOST_PP_FILENAME_2 /* ... */
+ ^
+</pre>
+ </div>
+ <div>
+ Each dimension must be used <i>in order</i> starting with <i>1</i>.
+ Therefore, the above can <i>only</i> be valid immediately inside the first
+ dimension.
+ </div>
+ <div>
+ At this point, further explanation is necessary regarding <b>BOOST_PP_ITERATION</b>,
+ <b>BOOST_PP_ITERATION_START</b>, and <b>BOOST_PP_ITERATION_FINISH</b>. <b>BOOST_PP_ITERATION</b>()
+ expands to the iteration value of the <i>current</i> dimension--regardless of
+ what dimension that is. Likewise, <b>BOOST_PP_ITERATION_START</b>() and <b>BOOST_PP_ITERATION_FINISH</b>()
+ expand to the lower and upper bounds of the <i>current</i> dimension.
+ Using the following pseudo-code as reference:
+ </div>
+ <div class="code">
+ <pre>
+for (int i = start(1); i <= finish(1); ++i) {
+ // A
+ for (int j = start(2); j <= finish(2); ++j) {
+ // B
+ }
+ // C
+}
+</pre>
+ </div>
+ <div>
+ At point <i>A</i>, <b>BOOST_PP_ITERATION</b>() refers to <code>i</code>. <b>BOOST_PP_ITERATION_START</b>()
+ and <b>BOOST_PP_ITERATION_FINISH</b>() refer to <code>start(1)</code> and <code>finish(1)</code>
+ respectively. At point <i>B</i>, however, <b>BOOST_PP_ITERATION</b>()
+ refers to <code>j</code>--the <i>current</i> iteration value at point <i>B</i>.
+ The same is true for <b>BOOST_PP_ITERATION_START</b>() which refers to <code>start(2)</code>,
+ etc..
+ </div>
+ <div>
+ If separate files are used for each dimension, then there are no major
+ problems, and using multiple dimensions is straightforward. However, if
+ more than one dimension is located in the same file, they need to be
+ distinguished from one another. The file iteration mechanism provides the
+ macro <b>BOOST_PP_ITERATION_DEPTH</b> for this purpose:
+ </div>
+ <div class="code">
+ <pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H
+ #define FILE_H
+
+ #include <boost/preprocessor/iteration/iterate.hpp>
+
+ #define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 2, "file.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #endif // FILE_H
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ // A
+ + BOOST_PP_ITERATION()
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (1, 2, "file.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ // C
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+ // B
+ - BOOST_PP_ITERATION()
+
+#endif
+</pre>
+ </div>
+ <div>
+ This will result to the following:
+ </div>
+ <div>
+ <pre>
++ 1
+- 1
+- 2
++ 2
+- 1
+- 2
+</pre>
+ </div>
+ <div>
+ Multiple dimensions raise another question. How does one access the state
+ of dimensions <i>other</i> than the current dimension? In other words,
+ how does one access <code>i</code> at point <i>A</i>? Because of the
+ preprocessor's lazy evaluation, this <i>doesn't</i> work....
+ </div>
+ <div class="code">
+ <pre>
+// ...
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ #define I BOOST_PP_ITERATION()
+
+ #define BOOST_PP_ITERATION_PARAMS_2 (3, (1, 2, "file.h"))
+ ??=include BOOST_PP_ITERATE()
+
+ #undef I
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+ #define J BOOST_PP_ITERATION()
+
+ // use I and J
+
+ #undef I
+
+#endif
+</pre>
+ </div>
+ <div>
+ The problem here is that <code>I</code> refers to <b>BOOST_PP_ITERATION</b>(),
+ not to the <i>value</i> of <b>BOOST_PP_ITERATION</b>() at the point of <code>I</code>'s
+ definition.
+ </div>
+ <div>
+ The library provides macros to access these values in two ways--absolutely or
+ relatively. The first variety accesses a value of a specific iteration
+ frame (i.e. dimension). To access the iteration value of the first
+ dimension--from <i>any</i> dimension--<b>BOOST_PP_FRAME_ITERATION</b>(<i>1</i>)
+ is used. To access the iteration value of the second dimension, <b>BOOST_PP_FRAME_ITERATION</b>(<i>2</i>)
+ is used, and so on.
+ </div>
+ <div>
+ There are also frame versions to access the lower bound, the upper bound, and
+ the flags of a dimension: <b>BOOST_PP_FRAME_START</b>, <b>BOOST_PP_FRAME_FINISH</b>,
+ and <b>BOOST_PP_FRAME_FLAGS</b>.
+ </div>
+ <div>
+ So, to fix the last example, we modify the definition of <code>I</code>....
+ </div>
+ <div class="code">
+ <pre>
+// ...
+
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+ #define I BOOST_PP_FRAME_ITERATION(1)
+
+// ...
+</pre>
+ </div>
+ <div>
+ The library also provides macros to access values in dimensions <i>relative</i>
+ to the current dimension (e.g. the <i>previous</i> dimension). These
+ macros take an argument that is interpreted as an offset from the current
+ frame. For example, <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>1</i>) always
+ refers to the outer dimension immediately previous to the current
+ dimension. An argument of <i>0</i> is interpreted as an offset of <i>0</i>
+ which causes <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>0</i>) to be equivalent to <b>BOOST_PP_ITERATION</b>().
+ <b>BOOST_PP_RELATIVE_ITERATION</b>(<i>2</i>) refers to the iteration value of
+ the dimension immediately preceding the dimension that precedes the current
+ dimension.
+ </div>
+ <div>
+ The lower and upper bounds of a dimension can be accessed in this fashion as
+ well with <b>BOOST_PP_RELATIVE_START</b> and <b>BOOST_PP_RELATIVE_FINISH</b>.
+ The flags of a relative dimension can be accessed with <b>BOOST_PP_RELATIVE_FLAGS</b>.
+ </div>
+ <h4>
+ Relativity
+ </h4>
+ <div>
+ I mentioned earlier that there is a reason that there are two ways to
+ parametize the mechanism. The reason is dimensional abstraction. In
+ certain situations the dimension is unknown by the code that is being
+ iterated--possibly because the code is reused at multiple, different
+ dimensions. If that code needs to iterate again, it has to define the
+ right parameters (based on the dimension) for the mechanism to consume.
+ </div>
+ <div>
+ All of the macro state maintained by the mechanism can be referred to in an
+ indirect way relative to a dimension. This is the purpose of the <b>BOOST_PP_RELATIVE_</b>
+ accessors.
+ </div>
+ <div>
+ Likewise, the user-defined <i>named external arguments</i> can be defined this
+ way as well--<i>except</i> the name of the file to iterate. Because the
+ lower and upper boundaries are <i>evaluated</i> by the mechanism, the
+ implementation no longer needs the macro <b>BOOST_PP_ITERATION_LIMITS</b>, and
+ the identifier can be reused for each dimension of iteration.
+ </div>
+ <div>
+ Unfortunately, the filename is a different story. The library has no way
+ to evaluate the quoted (or angle-bracketed) text. Therefore, it has to
+ use a different macro for each dimension. That is the purpose of the <b>BOOST_PP_FILENAME_<i>x</i></b>
+ macros. They exist to isolate the only non-abstractable piece of data
+ required by the mechanism.
+ </div>
+ <div>
+ In order to define the filename in an abstract fashion, you need to do
+ something like this:
+ </div>
+ <div class="code">
+ <pre>
+#define UNIQUE_TO_FILE "some_file.h"
+
+#if BOOST_PP_ITERATION_DEPTH() == 0
+ #define BOOST_PP_FILENAME_1 UNIQUE_TO_FILE
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+ #define BOOST_PP_FILENAME_2 UNIQUE_TO_FILE
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+ #define BOOST_PP_FILENAME_3 UNIQUE_TO_FILE
+
+// ... up to BOOST_PP_LIMIT_ITERATION_DIM
+
+#endif
+</pre>
+ </div>
+ <div>
+ The intent is to avoid having to do this for anything but the filename.
+ If this needs to be done more than once in a file (<b>BOOST_PP_FILENAME_<i>x</i></b>
+ is undefined by the mechanism after it is used.), consider using a separate
+ file to make the proper definition:
+ </div>
+ <div class="code">
+ <pre>
+# // detail/define_file_h.h
+# ifndef FILE_H
+# error FILE_H is not defined
+# endif
+#
+# if BOOST_PP_ITERATION_DEPTH() == 0
+# define BOOST_PP_FILENAME_1 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 1
+# define BOOST_PP_FILENAME_2 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 2
+# define BOOST_PP_FILENAME_3 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 3
+# define BOOST_PP_FILENAME_4 FILE_H
+# elif BOOST_PP_ITERATION_DEPTH() == 4
+# define BOOST_PP_FILENAME_5 FILE_H
+# else
+# error unsupported iteration dimension
+# endif
+</pre>
+ </div>
+ <div>
+ And then use it like this....
+ </div>
+ <div class="code">
+ <pre>
+// file.h
+#if !BOOST_PP_IS_ITERATING
+
+ #ifndef FILE_H
+ #define FILE_H "file.h"
+
+ #define BOOST_PP_ITERATION_LIMITS (1, 10)
+ #include "detail/define_file_h.h"
+
+ ??=include BOOST_PP_ITERATE()
+
+#endif // FILE_H
+
+#else
+ // iterated portion
+#endif
+</pre>
+ </div>
+ <div>
+ With a little effort like this, it is possible to maintain the abstraction
+ without the code bloat that would otherwise be required. Unfortunately,
+ this is not a completely general solution as it would need to be done for each
+ unique filename, but it is better than nothing.
+ </div>
+ <h4>
+ Conclusion
+ </h4>
+ <div>
+ That about covers the facilities that are available from the mechanism.
+ Using these facilities, let's implement a <code>function_traits</code> template
+ to demonstrate a full-fledge use of the mechanism.
+ </div>
+ <h4>
+ Function Traits - An Involved Example
+ </h4>
+ <div>
+ Implementing a comprehensive <code>function_traits</code> template metafunction
+ requires the use of every major part of the file iteration mechanism.
+ </div>
+ <div>
+ (This example makes no attempt of work around compiler deficiencies and exists
+ only to illustrate the mechanism.)
+ </div>
+ <div>
+ The result should have the following features:
+ </div>
+ <ul>
+ <li>
+ return type</li>
+ <li>
+ number and types of parameters</li>
+ <li>
+ whether or not the type is a pointer-to-function, reference-to-function,
+ pointer-to-member-function, or a plain function type</li>
+ <li>
+ whether the type has an ellipsis</li>
+ <li>
+ if not a pointer-to-member-function, the equivalent pointer-to-function,
+ reference-to-function, and function type</li>
+ <li>
+ otherwise, the pointer-to-member type, the class type to which it refers, and
+ whether it is const and/or volatile qualified</li>
+ </ul>
+ <div>
+ There are a myriad of ways that this can be implemented. I'll give a
+ brief summary here of what is happening in the implementation below.
+ </div>
+ <div>
+ The implementation inherently has to deal with function arity. Therefore,
+ at minimum, we need to iterate over function arities and define partial
+ specializations of the primary template <code>function_traits</code>. The
+ situation is further complicated by variadic functions (i.e. functions with an
+ ellipsis). Therefore, for every arity, we need a variadic version as
+ well.
+ </div>
+ <div>
+ We also need to handle pointers-to-member-functions. This implies that we
+ have to handle not just arity and variadics, but also cv-qualifications.
+ </div>
+ <div>
+ For the sake of clarity, the implementation below handles function types and
+ pointers-to-member-functions separately. They could be merged, but the
+ result would be significantly messier.
+ </div>
+ <div>
+ To handle function types, the implementation below iterates over function
+ arities. For each arity, it iterates over each parameter to provide
+ access to each individually. It then re-includes itself to define a
+ variadic specialization of the same arity. It performs the rough
+ equivalent of the following pseudo-code:
+ </div>
+ <div class="code">
+ <pre>
+void make_spec(int i, bool variadic) {
+ :open function_traits<i, variadic>
+ for (int j = 0; j < i; ++j) {
+ :parameter<j>
+ }
+ :close
+ if (!variadic) {
+ make_spec(i, true);
+ }
+ return;
+}
+
+void function_types(int max_arity) {
+ for (int i = 0; i <= max_arity; ++i) {
+ make_spec(i, false);
+ }
+ return;
+}
+</pre>
+ </div>
+ <div>
+ The implementation of pointers-to-member-functions is a bit different.
+ First, it iterates over cv-qualifiers. For each cv-qualifier, it iterates
+ over function arities. For each function arity, it iterates again over
+ each parameter. It then re-includes itself to define a variadic
+ specialization of the same arity....
+ </div>
+ <div class="code">
+ <pre>
+void make_spec(int j, const char* cv, bool variadic) {
+ :open function_traits<j, cv, variadic>
+ for (int k = 0; k < j; ++k) {
+ parameter<k>
+ }
+ :close
+ if (!variadic) {
+ make_spec(j, cv, true);
+ }
+ return;
+}
+
+void gen_arities(const char* cv, int max_arity) {
+ for (int j = 0; j <= max_arity; ++j) {
+ make_spec(j, cv, false);
+ }
+ return;
+}
+
+void pointers_to_members(int max_arity) {
+ static const char* cv_qualifiers[] = { "", "const", "volatile", "const volatile" };
+ for (int i = 0; i < 4; ++i) {
+ gen_arities(cv_qualifiers[i], max_arity);
+ }
+ return;
+}
+</pre>
+ </div>
+ <div>
+ Here is the complete implementation. This example represents the power of
+ the file iteration mechanism as well as the library in general, so follow it
+ carefully if you wish to fully understand what the mechanism does....
+ </div>
+ <div class="code">
+ <pre>
+// function_traits.hpp
+
+#if !BOOST_PP_IS_ITERATING
+
+#ifndef FUNCTION_TRAITS_HPP
+#define FUNCTION_TRAITS_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/facilities/apply.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/iteration/self.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+// enable user-expansion
+#ifndef FUNCTION_TRAITS_MAX_ARITY
+ #define FUNCTION_TRAITS_MAX_ARITY 15
+#endif
+
+namespace detail {
+
+// avoid replication of "default" values
+struct function_traits_base {
+ static const bool is_plain = false;
+ static const bool is_pointer = false;
+ static const bool is_reference = false;
+ static const bool is_member = false;
+};
+
+} // detail
+
+// no definition
+template<class> struct function_traits;
+
+// extract ellipsis state
+#define ELLIPSIS(n) \
+ BOOST_PP_APPLY( \
+ BOOST_PP_TUPLE_ELEM(2, n, ELLIPSIS_I) \
+ ) \
+ /**/
+
+// iterate over function arities for function types
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (4, (0, FUNCTION_TRAITS_MAX_ARITY, "function_traits.hpp", 0)) \
+ /**/
+??=include BOOST_PP_ITERATE()
+
+// obtain a cv-qualifier by index
+#define QUALIFIER(n) \
+ BOOST_PP_APPLY( \
+ BOOST_PP_TUPLE_ELEM( \
+ 4, n, \
+ (BOOST_PP_NIL, (const), (volatile), (const volatile)) \
+ ) \
+ ) \
+ /**/
+
+// iterate over cv-qualifiers for pointers-to-members
+#define BOOST_PP_ITERATION_PARAMS_1 \
+ (4, (0, 3, "function_traits.hpp", 1)) \
+ /**/
+??=include BOOST_PP_ITERATE()
+
+// remove temporary macros
+#undef QUALIFIER
+#undef ELLIPSIS
+
+// overriding jumper for pointers-to-functions
+template<class T> struct function_traits<T*> : function_traits<T> {
+ static const bool is_plain = false;
+ static const bool is_pointer = true;
+};
+
+// overriding jumper for references-to-functions
+template<class T> struct function_traits<T&> : function_traits<T> {
+ static const bool is_plain = false;
+ static const bool is_reference = true;
+};
+
+// eof
+#endif // FUNCTION_TRAITS_HPP
+
+// specializations for function types
+#elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0 \
+ /**/
+
+ // define ellipsis state
+ #if BOOST_PP_IS_SELFISH
+ #define ELLIPSIS_I ((true), (...))
+ #else
+ #define ELLIPSIS_I ((false), BOOST_PP_NIL)
+ #endif
+
+ #define N BOOST_PP_ITERATION()
+
+ template<class R BOOST_PP_ENUM_TRAILING_PARAMS(N, class T)>
+ struct function_traits<R (BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1))>
+ : detail::function_traits_base {
+ static const bool is_plain = true;
+ typedef R function_type(BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1));
+ typedef function_type* pointer_type;
+ typedef function_type& reference_type;
+ static const bool has_ellipsis = ELLIPSIS(0);
+ typedef R return_type;
+ static const int parameter_count = N;
+ template<int, class D = int> struct parameter;
+ #if N
+ // iterate over parameters
+ #define BOOST_PP_ITERATION_PARAMS_2 \
+ (3, (0, N - 1, "function_traits.hpp")) \
+ /**/
+ ??=include BOOST_PP_ITERATE()
+ #endif
+ };
+
+ #undef N
+ #undef ELLIPSIS_I
+
+ // re-include this section for an ellipsis variant
+ #if !BOOST_PP_IS_SELFISH
+ #define BOOST_PP_INDIRECT_SELF "function_traits.hpp"
+ ??=include BOOST_PP_INCLUDE_SELF()
+ #endif
+
+// iteration over cv-qualifiers
+#elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 1 \
+ /**/
+
+ #define BOOST_PP_ITERATION_PARAMS_2 \
+ (3, (0, FUNCTION_TRAITS_MAX_ARITY, "function_traits.hpp")) \
+ /**/
+ ??=include BOOST_PP_ITERATE()
+
+// generate specializations for pointers-to-members
+#elif BOOST_PP_ITERATION_DEPTH() == 2 \
+ && BOOST_PP_FRAME_FLAGS(1) == 1 \
+
+ // define ellipsis state
+ #if BOOST_PP_IS_SELFISH
+ #define ELLIPSIS_I ((true), (...))
+ #else
+ #define ELLIPSIS_I ((false), BOOST_PP_NIL)
+ #endif
+
+ #define N BOOST_PP_ITERATION()
+ #define Q QUALIFIER(BOOST_PP_FRAME_ITERATION(1))
+
+ template<class R, class O BOOST_PP_ENUM_TRAILING_PARAMS(N, class T)>
+ struct function_traits<R (O::*)(BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1)) Q>
+ : detail::function_traits_base {
+ static const bool is_member = true;
+ typedef R (O::* pointer_to_member_type)(BOOST_PP_ENUM_PARAMS(N, T) ELLIPSIS(1)) Q;
+ typedef O class_type;
+ typedef Q O qualified_class_type;
+ static const bool has_ellipsis = ELLIPSIS(0);
+ static const bool is_const =
+ BOOST_PP_FRAME_ITERATION(1) == 1 || BOOST_PP_FRAME_ITERATION(1) == 3;
+ static const bool is_volatile =
+ BOOST_PP_FRAME_ITERATION(1) == 2 || BOOST_PP_FRAME_ITERATION(1) == 3;
+ typedef R return_type;
+ static const int parameter_count = N;
+ template<int, class D = int> struct parameter;
+ #if N
+ // iterate over parameters
+ #define BOOST_PP_ITERATION_PARAMS_3 \
+ (3, (0, N - 1, "function_traits.hpp")) \
+ /**/
+ ??=include BOOST_PP_ITERATE()
+ #endif
+ };
+
+ #undef Q
+ #undef N
+ #undef ELLIPSIS_I
+
+ // re-include this section for an ellipsis variant
+ #if !BOOST_PP_IS_SELFISH
+ #define BOOST_PP_INDIRECT_SELF "function_traits.hpp"
+ ??=include BOOST_PP_INCLUDE_SELF()
+ #endif
+
+// parameter specializations
+#else
+
+ #define X BOOST_PP_ITERATION()
+
+ template<class D> struct parameter<X, D> {
+ typedef BOOST_PP_CAT(T, X) type;
+ };
+
+ #undef X
+
+#endif
+</pre>
+ </div>
+ <div>
+ One problem that still exists is the lack of support for <code>throw</code> specifications.
+ There is no way that we can completely handle it anyway because we cannot
+ partially specialize on <code>throw</code> specifications. However, we
+ could accurately report the "actual" function type, etc., including the <code>throw</code>
+ specification (which the above implementation doesn't do, as it reconstructs
+ those types). If you like, you can figure out how to do that on your own
+ as an exercise.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li>
+ <a href="../ref/iterate.html">BOOST_PP_ITERATE</a></li>
+ </ul>
+ <div class="sig">
+ - Paul Mensonides
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/incompatible.html b/third_party/boostorg/preprocessor/doc/topics/incompatible.html
new file mode 100644
index 0000000..7fb3762
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/incompatible.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <title>incompatible.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+ <h4>Incompatibilities</h4>
+ <div>
+ There are several incompatibilities with the previous Boost release (1.28).
+ These fall into roughly three categories:
+ </div>
+ <ul>
+ <li>the horizontal repetition primitives based on <b>BOOST_PP_REPEAT</b></li>
+ <li>the reentrancy syntax</li>
+ <li><i>list</i> folding</li>
+ </ul>
+ <h4>Repetition Targets</h4>
+ <div>
+ First, and probably the most commonly used, is the target macros passed into <b>BOOST_PP_REPEAT</b> and the horizontal repetition contructs that use <b>BOOST_PP_REPEAT</b>.
+ This includes all of the <b>BOOST_PP_REPEAT_</b>* primitives and all of the <b>BOOST_PP_ENUM_</b>* primitives that require a target macro.
+ </div>
+ <div>
+ The incompatiblity is trivial, but it will require that the source be updated.
+ </div>
+ <div>
+ These target macros must now except a <i>third</i> parameter.
+ This extra parameter becomes the <i>first</i> parameter in every target macro.
+ It represents the next repetition dimension and brings <b>BOOST_PP_REPEAT</b> inline with rest of the library.
+ </div>
+ <div>
+ So, what once was:
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>n</i>, <i>data</i>) ...<br>
+ <b>BOOST_PP_REPEAT</b>(<i>5</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <div>
+ ...is now:
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>) ...<br>
+ <b>BOOST_PP_REPEAT</b>(<i>5</i>, <i>macro</i>, <i>data</i>)
+ </div>
+ <div>
+ This parameter can be used for highly efficient reentrance into the <b>BOOST_PP_REPEAT</b> mechanism.
+ However, it is not necessary to use it as the library can automatically detect the next available repetition dimension.
+ </div>
+ <h4>Dimensional Ordering</h4>
+ <div>
+ Because of this detection, however, it is unsafe to use <b>BOOST_PP_REPEAT_1ST</b>, <b>BOOST_PP_REPEAT_2ND</b>, and <b>BOOST_PP_REPEAT_3RD</b> out of order.
+ These macros bypass the <i>automatic-recursion</i> mechanism, and the <i>automatic-recursion</i> mechanism relies on macros being used in the proper order.
+ To clarify, if you use these bypass macros, the outer-most repetition <i>must</i> be <b>BOOST_PP_REPEAT_1ST</b>, then <b>BOOST_PP_REPEAT_2ND</b>, and finally <b>BOOST_PP_REPEAT_3RD</b>.
+ Any other usage is not supported by the library.
+ Sometimes it may work, and other times it won't.
+ </div>
+ <h4>Reentrancy Syntax</h4>
+ <div>
+ <i>Automatic-recursion</i> brings with it another issue as well. Previously, the reentrancy syntax for <b>BOOST_PP_WHILE</b> (and similarly for <b>BOOST_PP_FOR</b>) was:
+ </div>
+ <div class="code">
+ <b>BOOST_PP_WHILE</b> ## <i>d</i>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <div>
+ ...or:
+ </div>
+ <div class="code">
+ <b>BOOST_PP_CAT</b>(<b>BOOST_PP_WHILE</b>, <i>d</i>)(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <div>
+ Under the <i>automatic-recursion</i> model, the <b>BOOST_PP_CAT</b> version breaks.
+ This is because <b>BOOST_PP_CAT</b> allows its arguments to expand prior to concatenation,
+ and <b>BOOST_PP_WHILE</b> is a macro that expands without arguments.
+ The library makes it appear that it takes three parameters, but that is the trick of <i>automatic-recursion</i>.
+ It works similarly to the following:
+ </div>
+ <div class="code">
+ #define A(x, y) ...<br>
+ #define B A<br>
+ // ...<br>
+ B(2, 3)
+ </div>
+ <div>
+ The syntax makes it look like the <i>B</i> macro above takes two arguments, but it doesn't.
+ The <i>automatic-recursion</i> mechanism works in this fashion, except that the "<i>B</i>" macro deduces the next available "<i>A</i>" macro.
+ </div>
+ <div>
+ Because some preprocessors are still slow, direct reentrancy (sans <i>automatic-recursion</i>) is still necessary in non-trivial cases.
+ Consequently, the library uses a new syntax to handle reentrancy:
+ </div>
+ <div class="code">
+ <b>BOOST_PP_FOR_</b> ## <i>r</i>(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)<br>
+ <b>BOOST_PP_REPEAT_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)<br>
+ <b>BOOST_PP_WHILE_</b> ## <i>d</i>(<i>pred</i>, <i>op</i>, <i>state</i>)
+ </div>
+ <h4>Folding</h4>
+ <div>
+ Previously, the <b>BOOST_PP_LIST_FOLD_RIGHT</b> macros' arguments were the reverse of <b>BOOST_PP_LIST_FOLD_LEFT</b>.
+ Also, the accumulation macro passed into <b>BOOST_PP_LIST_FOLD_RIGHT</b> was called with reversed parameters as well.
+ This discrepancy has been eliminated.
+ </div>
+ <div>
+ To illustrate, <b>BOOST_PP_LIST_FOLD_RIGHT</b> used to be used like this:
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>d</i>, <u><i>elem</i></u>, <u><i>state</i></u>)<br>
+ <b>BOOST_PP_LIST_FOLD_RIGHT</b>(<i>macro</i>, <u><i>list</i></u>, <u><i>state</i></u>)
+ </div>
+ <div>
+ This signature has been replaced by...
+ </div>
+ <div class="code">
+ #define <i>macro</i>(<i>d</i>, <u><i>state</i></u>, <u><i>elem</i></u>)<br>
+ <b>BOOST_PP_LIST_FOLD_RIGHT</b>(<i>macro</i>, <u><i>state</i></u>, <u><i>list</i></u>)
+ </div>
+ <h4>Summary</h4>
+ <div>
+ The library has many new features not present in the 1.28 release, and this list does not attempt to enumerate them.
+ This is simply a list of things that <i>must</i> change for code to be compatible with this new release.
+ </div>
+ <h4>See Also</h4>
+ <ul>
+ <li><a href="../ref/for.html">BOOST_PP_FOR</a></li>
+ <li><a href="../ref/list_fold_right.html">BOOST_PP_LIST_FOLD_RIGHT</a></li>
+ <li><a href="../ref/repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="../ref/while.html">BOOST_PP_WHILE</a></li>
+ </ul>
+ <div class="sig">- Paul Mensonides</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/local_iteration.html b/third_party/boostorg/preprocessor/doc/topics/local_iteration.html
new file mode 100644
index 0000000..5f75430
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/local_iteration.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+ <title>local_iteration.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Local Iteration</h4>
+<div>
+ Local iteration is a simple vertical repetition construct.
+ It expands a macro with each number in a user-specified range.
+ Each expansion is on a separate line.
+</div>
+<h4>Tutorial</h4>
+<div>
+ This mechanism requires two pieces of information to operate:
+ a range to iterate over and a macro to expand on each iteration.
+ This information is obtained by the mechanism through two <i>named external arguments</i>.
+ These arguments are specified as user-defined macros named <b>BOOST_PP_LOCAL_LIMITS</b> and <b>BOOST_PP_LOCAL_MACRO</b>.
+</div>
+<div>
+ <b>BOOST_PP_LOCAL_LIMITS</b> specifies a range of values to iterate over.
+ It <i>must</i> expand to a <i>tuple</i> containing two elements--a lower and upper bound.
+ Both the upper and lower bounds must be numeric values in the range of <i>0</i> to <b>BOOST_PP_LIMIT_ITERATION</b>.
+ For example, if the user wishes a macro to be expanded with numbers ranging from <i>0</i> to <i>10</i>,
+ <b>BOOST_PP_LOCAL_LIMITS</b> would be defined like this:
+</div>
+<div class="code"><pre>
+#define BOOST_PP_LOCAL_LIMITS (0, 10)
+</pre></div>
+<div>
+ Note that there is whitespace after the name of the macro.
+ The macro <i>does not</i> take <i>two</i> arguments.
+ In the case above, if there was no whitespace, a preprocessing error would occur because <i>0</i> and <i>10</i> are invalid identifiers.
+</div>
+<div>
+ Both the upper and lower bounds specified in the <b>BOOST_PP_LOCAL_LIMITS</b> macro are <i>evaluated parameters</i>.
+ This implies that they can include simple arithmetic or logical expressions.
+ For instance, the above definition could easily have been written like this:
+</div>
+<div class="code"><pre>
+#define N() 5
+#define BOOST_PP_LOCAL_LIMITS (0, N() + 5)
+</pre></div>
+<div>
+ Because of this, if the whitespace after the macro name is elided, it is possible for the definition to be syntactically valid:
+</div>
+<div class="code"><pre>
+#define A 0
+#define B 10
+#define BOOST_PP_LOCAL_LIMITS(A, B)
+ // note: no whitespace ^
+</pre></div>
+<div>
+ If this happens, an error will occur inside the mechanism when it attempts to use this macro.
+ The error messages that result may be obscure, so always remember to include the whitespace.
+ A <i>correct</i> version of the above looks like this:
+</div>
+<div class="code"><pre>
+#define A 0
+#define B 10
+#define BOOST_PP_LOCAL_LIMITS (A, B)
+ // note: has whitespace ^
+</pre></div>
+<div>
+ <b>BOOST_PP_LOCAL_MACRO</b> is the macro that is expanded by the mechanism.
+ This macro is expanded on each iteration with the current number of the iteration.
+ It must defined as a unary macro <i>or</i> result in a macro that can be called with one argument:
+</div>
+<div class="code"><pre>
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { }; \
+ /**/
+</pre></div>
+<div>
+ ...or...
+</div>
+<div class="code"><pre>
+#define SAMPLE(n) \
+ template<> struct sample<n> { }; \
+ /**/
+
+#define BOOST_PP_LOCAL_MACRO SAMPLE
+</pre></div>
+<div>
+ Once these two macros are defined, the local iteration is initiated by <i>including</i> <b>BOOST_PP_LOCAL_ITERATE</b>().
+</div>
+<div class="code"><pre>
+??=include BOOST_PP_LOCAL_ITERATE()
+</pre></div>
+<div>
+ (The <code>??=</code> token is a trigraph for <code>#</code>.
+ I use the trigraph to make it clear that I am <i>including</i> a file rather than defining or expanding a macro, but it is not necessary.
+ Even the digraph version, <code>%:</code>, could be used.
+ Some compilers do not readily accept trigraphs and digraphs, so keep that in mind.
+ Other than that, use whichever one you prefer.)
+</div>
+<div>
+ In order to repeat the <code>sample</code> specialization, the pieces must be put together....
+</div>
+<div class="code"><pre>
+#define BOOST_PP_LOCAL_MACRO(n) \
+ template<> struct sample<n> { }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS (0, 10)
+??=include BOOST_PP_LOCAL_ITERATE()
+</pre></div>
+<div>
+ This will result in a specialization of <code>sample</code> for each number in the range of <i>0</i> to <i>10</i>.
+ The output will look something like this:
+</div>
+<div class="code"><pre>
+template<> struct sample<0> { };
+template<> struct sample<1> { };
+template<> struct sample<2> { };
+
+// ...
+
+template<> struct sample<10> { };
+</pre></div>
+<div>
+ After the local-iteration is complete, both <b>BOOST_PP_LOCAL_LIMITS</b> and <b>BOOST_PP_LOCAL_MACRO</b> are automatically undefined.
+ If the values need to be retained for a future local-iteration, they must be defined indirectly:
+</div>
+<div class="code"><pre>
+#define LIMITS (0, 10)
+
+#define SAMPLE(n) \
+ template<> struct sample<n> { }; \
+ /**/
+
+#define BOOST_PP_LOCAL_LIMITS LIMITS
+#define BOOST_PP_LOCAL_MACRO(n) SAMPLE(n)
+
+??=include BOOST_PP_LOCAL_ITERATE()
+</pre></div>
+<h4>See Also</h4>
+<ul>
+ <li><a href="../ref/local_iterate.html">BOOST_PP_LOCAL_ITERATE</a></li>
+ <li><a href="../ref/local_limits.html">BOOST_PP_LOCAL_LIMITS</a></li>
+ <li><a href="../ref/local_macro.html">BOOST_PP_LOCAL_MACRO</a></li>
+</ul>
+<div class="sig">- Paul Mensonides</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/doc/topics/motivation.html b/third_party/boostorg/preprocessor/doc/topics/motivation.html
new file mode 100644
index 0000000..eee5120
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/motivation.html
@@ -0,0 +1,119 @@
+<html>
+<head>
+ <title>motivation.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Motivation</h4>
+<div>
+ The C++ function and template parameter lists are special syntactic constructs, and it is impossible to directly
+ manipulate or generate them using C++ constructs.
+ This leads to unnecessary code repetition.
+</div>
+<div>
+ Consider the implementation of the <code>is_function<></code> metafunction is Boost.
+ The implementation uses an overloaded <code>is_function_tester()</code> function that is used for testing if a type is convertible
+ to a pointer to a function.
+ Because of the special treatment of parameter lists, it is not possible to directly match a function with an arbitrary parameter list.
+ Instead, the <code>is_function_tester()</code> must be overloaded for every distinct number of parameters that is to be supported.
+ For example:
+</div>
+<div class="code"><pre>
+template<class R>
+yes_type is_function_tester(R (*)());
+
+template<class R, class A0>
+yes_type is_function_tester(R (*)(A0));
+
+template<class R, class A0, class A1>
+yes_type is_function_tester(R (*)(A0, A1));
+
+template<class R, class A0, class A1, class A2>
+yes_type is_function_tester(R (*)(A0, A1, A2));
+
+// ...
+</pre></div>
+<div>
+ The need for this kind of repetition occurs particularly frequently while implementing generic components or metaprogramming facilities,
+ but the need also manifests itself in many far simpler situations.
+</div>
+<h4>Typical Solutions</h4>
+<div>
+ Typically the repetition is done manually.
+ Manual code repetition is highly unproductive, but sometimes more readable to the untrained eye.
+</div>
+<div>
+ Another solution is to write an external program for generating the repeated code or use some other extra linguistic means such as a smart editor.
+ Unfortunately, using external code generators has many disadvantages:
+ <ul>
+ <li>Writing the generator takes time. (This could be helped by using a standard generator.)</li>
+ <li>It is no longer productive to manipulate C++ code directly.</li>
+ <li>Invoking the generator may be difficult.</li>
+ <li>Automating the invocation of the generator can be difficult in certain environments. (Automatic invocation is desirable for active libraries.)</li>
+ <li>Porting and distributing the generator may be difficult or simply takes precious time.</li>
+ </ul>
+</div>
+<h4>What about the preprocessor?</h4>
+<div>
+ Because C++ comes with a preprocessor, one would assume that it would support these kinds of needs directly.
+ Using the preprocessor in this case is highly desirable because:
+ <ul>
+ <li>The preprocessor is highly portable.</li>
+ <li>The preprocessor is automatically invoked as part of the compilation process.</li>
+ <li>Preprocessor metacode can be directly embedded into the C++ source code.</li>
+ <li>Compilers generally allow viewing or outputting the preprocessed code, which can be used for debugging or to copy and paste the generated code.</li>
+ </ul>
+</div>
+<div>
+ Most unfortunately, the preprocessor is a very low level preprocessor that specifically does not support repetition or recursive macros.
+ Library support is needed!
+</div>
+<div>
+ <i>For detailed information on the capabilities and limitations of the preprocessor, please refer to the C++ standard <a href="../bibliography.html#std">[Std]</a>.</i>
+</div>
+<h4>The Motivation Example Revisited</h4>
+<div>
+ Using the primitives of the preprocessor library, the <code>is_function_tester()</code>'s could be implemented like this:
+</div>
+<div class="code"><pre>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/repetition.hpp>
+
+#ifndef MAX_IS_FUNCTION_TESTER_PARAMS
+#define MAX_IS_FUNCTION_TESTER_PARAMS 15
+#endif
+
+#define IS_FUNCTION_TESTER(Z, N, _) \
+ template<class R BOOST_PP_COMMA_IF(N) BOOST_PP_ENUM_PARAMS(N, class A)> \
+ yes_type is_function_tester(R (*)(BOOST_PP_ENUM_PARAMS(N, A))); \
+ /**/
+
+BOOST_PP_REPEAT(BOOST_PP_INC(MAX_IS_FUNCTION_TESTER_PARAMS), IS_FUNCTION_TESTER, _)
+
+#undef IS_FUNCTION_TESTER
+</pre></div>
+<div>
+ In order to change the maximum number of function parameters supported, you now simply change the <code>MAX_IS_FUNCTION_TESTER_PARAMS</code> definition and recompile.
+</div>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+</div>
+<div style="margin-left: 0px;">
+Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.
+This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
+</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/problems.html b/third_party/boostorg/preprocessor/doc/topics/problems.html
new file mode 100644
index 0000000..43e0059
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/problems.html
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <title>problems.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+</head>
+<body>
+<h4>Known Problems of the C/C++ Preprocessor</h4>
+<div>
+ Preprocessor metaprogramming is subject to heated discussions.
+ Part of this is caused by bad experiences with dangerous techniques,
+ such as defining inline functions using macros.
+ As a rule of thumb, if you can find a clean and manageable way to do something
+ without the preprocessor, then you should do it that way.
+</div>
+<div>
+ Let's survey some of the widely known problems of the preprocessor in a problem/solution format.
+</div>
+<h4>Problem #1</h4>
+<div>
+ The preprocessor does not respect scope, therefore macros can accidentally and sometimes silently replace code.
+</div>
+<div>
+ <b>Solution A</b>
+ <div>
+ Use all caps identifiers for macros and only macros.
+ This practically eliminates the possibility that a macro might replace other kinds of code accidentally.
+ </div>
+</div>
+<div>
+ <b>Solution B</b>
+ <div>
+ Use the local macro idiom:
+ </div>
+<div class="code"><pre>
+#define MACRO ...
+// use MACRO
+#undef MACRO
+</pre></div>
+ <div>
+ This makes sure that a macro cannot accidentally replace code outside of the scope of the local macro.
+ </div>
+ <div>
+ A problem with this solution is that the #undef cannot be automated and may be forgotten.
+ Experienced programmers generally write the #undef either immediately before (in time)
+ or immediately after writing the macro definition.
+ </div>
+</div>
+<div>
+ <b>Solution C</b>
+ <div>
+ Use the unique macro prefix idiom.
+ </div>
+<div class="code"><pre>
+#define UMP_MACRO
+// use UMP_MACRO
+</pre></div>
+ <div>
+ This makes accidental substitution and collisions highly unlikely.
+ Problems with this solution include:
+ </div>
+ <ul>
+ <li>There can still be naming collisions inside a large project.</li>
+ <li>Macros still pollute the global namespace.</li>
+ </ul>
+ <i>By combining all solutions, whenever possible, the scope problem can be largely avoided.</i>
+</div>
+<h4>Problem #2</h4>
+<div>
+ Preprocessor code is difficult to read.
+ It requires an understanding of the basic process of how the preprocessor recursively expands macros,
+ finding macro definitions, and mentally substituting the parameters of the macro.
+</div>
+<div>
+ <b>Solution</b>
+ <div>
+ Any kind of programming requires a basic understanding of how the code is executed.
+ Any parameterization technique, including simple functions and templates requires finding
+ the definition and mentally substituting parameters.
+ </div>
+ <div>
+ However, it is good to know a few techniques:
+ </div>
+ <ul>
+ <li>By using as many local macros as reasonable, the bulk of the searching process can be eliminated.</li>
+ <li>Code browsers and text search tools make it easier to find the definitions.</li>
+ <li>The compiler can be used for generating the preprocessed source code in order to look for bugs.</li>
+ <li>
+ Before turning something into a preprocessor metaprogram, first implement a small scale version
+ of it without the preprocessor.
+ The work bottom-up, replacing hand-written constructs by using the preprocessor.
+ This way you can test the code incrementally.
+ Experienced programmers often skip many stages, but if something proves too complex to write
+ directly, it is always possible to fall back to incremental methods.
+ </li>
+ <li>
+ If you insert a special symbol into the preprocessor code in places where there should be a line break,
+ you can make code readable after preprocessing simply by using a search and replace tool.
+ </li>
+ </ul>
+ <i>An especially important thing to remember is to limit the use of the preprocessor to
+ structured, well-understood, and safe methods.
+ Structure helps to understand complex systems <a href="../bibliography.html#mcconnell">[McConnell]</a>.</i>
+</div>
+<h4>Problem #3</h4>
+<div>
+ "I'd like to see Cpp abolished." - <i>Bjarne Stroustrup</i> in <a href="../bibliography.html#stroustrup">[Stroustrup]</a>.
+</div>
+<div>
+ <b>Solution</b>
+ <div>
+ The C/C++ preprocessor will be here for a long time.
+ </div>
+ <i>In practice, preprocessor metaprogramming is far simpler and more portable than template metaprogramming <a href="../bibliography.html#czarnecki">[Czarnecki]</a>.</i>
+</div>
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+</div>
+<div style="margin-left: 0px;">
+Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.
+This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
+</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/reentrancy.html b/third_party/boostorg/preprocessor/doc/topics/reentrancy.html
new file mode 100644
index 0000000..b8f2cbc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/reentrancy.html
@@ -0,0 +1,298 @@
+<html>
+ <head>
+ <title>reentrancy.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ </head>
+ <body>
+ <h4>
+ Reentrancy
+ </h4>
+ <div>
+ Macro expansion in the preprocessor is entirely functional. Therefore,
+ there is no iteration. Unfortunately, the preprocessor also disallows
+ recursion. This means that the library must fake iteration or recursion
+ by defining sets of macros that are implemented similarly.
+ </div>
+ <div>
+ To illustrate, here is a simple concatenation macro:
+ </div>
+ <div class="code">
+ <pre>
+#define CONCAT(a, b) CONCAT_D(a, b)
+#define CONCAT_D(a, b) a ## b
+
+CONCAT(a, CONCAT(b, c)) // abc
+</pre>
+ </div>
+ <div>
+ This is fine for a simple case like the above, but what happens in a scenario
+ like the following:
+ </div>
+ <div class="code">
+ <pre>
+#define AB(x, y) CONCAT(x, y)
+
+CONCAT(A, B(p, q)) // CONCAT(p, q)
+</pre>
+ </div>
+ <div>
+ Because there is no recursion, the example above expands to <code>CONCAT(p, q)</code>
+ rather than <code>pq</code>.
+ </div>
+ <div>
+ There are only two ways to "fix" the above. First, it can be documented
+ that <code>AB</code> uses <code>CONCAT</code> and disallow usage similar to the
+ above. Second, multiple concatenation macros can be provided....
+ </div>
+ <div class="code">
+ <pre>
+#define CONCAT_1(a, b) CONCAT_1_D(a, b)
+#define CONCAT_1_D(a, b) a ## b
+
+#define CONCAT_2(a, b) CONCAT_2_D(a, b)
+#define CONCAT_2_D(a, b) a ## b
+
+#define AB(x, y) CONCAT_2(x, y)
+
+CONCAT_1(A, B(p, q)) // pq
+</pre>
+ </div>
+ <div>
+ This solves the problem. However, it is now necessary to know that <code>AB</code>
+ uses, not only <i>a</i> concatenation macro, but <code>CONCAT_2</code> specifically.
+ </div>
+ <div>
+ A better solution is to abstract <i>which</i> concatenation macro is used....
+ </div>
+ <div class="code">
+ <pre>
+#define AB(c, x, y) CONCAT_ ## c(x, y)
+
+CONCAT_1(A, B(2, p, q)) // pq
+</pre>
+ </div>
+ <div>
+ This is an example of <i>generic reentrance</i>, in this case, into a fictional
+ set of concatenation macros. The <code>c</code> parameter represents the
+ "state" of the concatenation construct, and as long as the user keeps track of
+ this state, <code>AB</code> can be used inside of a concatenation macro.
+ </div>
+ <div>
+ The library has the same choices. It either has to disallow a construct
+ being inside itself or provide multiple, equivalent definitions of a construct
+ and provide a uniform way to <i>reenter</i> that construct. There are
+ several contructs that <i>require</i> recursion (such as <b>BOOST_PP_WHILE</b>).
+ Consequently, the library chooses to provide several sets of macros with
+ mechanisms to reenter the set at a macro that has not already been used.
+ </div>
+ <div>
+ In particular, the library must provide reentrance for <b>BOOST_PP_FOR</b>, <b>BOOST_PP_REPEAT</b>,
+ and <b>BOOST_PP_WHILE</b>. There are two mechanisms that are used to
+ accomplish this: state parameters (like the above concatenation example)
+ and <i>automatic recursion</i>.
+ </div>
+ <h4>
+ State Parameters
+ </h4>
+ <div>
+ Each of the above constructs (<b>BOOST_PP_FOR</b>, <b>BOOST_PP_REPEAT</b>, and <b>BOOST_PP_WHILE</b>)
+ has an associated state. This state provides the means to reenter the
+ respective construct.
+ </div>
+ <div>
+ Several user-defined macros are passed to each of these constructs (for use as
+ predicates, operations, etc.). Every time a user-defined macro is
+ invoked, it is passed the current state of the construct that invoked it so
+ that the macro can reenter the respective set if necessary.
+ </div>
+ <div>
+ These states are used in one of two ways--either by concatenating to or passing
+ to another macro.
+ </div>
+ <div>
+ There are three types of macros that use these state parameters. First,
+ the set itself which is reentered through concatenation. Second,
+ corresponding sets that act like they are a part of the the primary set.
+ These are also reentered through concatenation. And third, macros that
+ internally use the first or second type of macro. These macros take the
+ state as an additional argument.
+ </div>
+ <div>
+ The state of <b>BOOST_PP_WHILE</b> is symbolized by the letter <i>D</i>.
+ Two user-defined macros are passed to <b>BOOST_PP_WHILE</b>--a predicate and an
+ operation. When <b>BOOST_PP_WHILE</b> expands these macros, it passes
+ along its state so that these macros can reenter the <b>BOOST_PP_WHILE</b> set.
+ </div>
+ <div>
+ Consider the following multiplication implementation that illustrates this
+ technique:
+ </div>
+ <div class="code">
+ <pre>
+// The addition interface macro.
+// The _D signifies that it reenters
+// BOOST_PP_WHILE with concatenation.
+
+#define ADD_D(d, x, y) \
+ BOOST_PP_TUPLE_ELEM( \
+ 2, 0, \
+ BOOST_PP_WHILE_ ## d(ADD_P, ADD_O, (x, y)) \
+ ) \
+ /**/
+
+// The predicate that is passed to BOOST_PP_WHILE.
+// It returns "true" until "y" becomes zero.
+
+#define ADD_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+
+// The operation that is passed to BOOST_PP_WHILE.
+// It increments "x" and decrements "y" which will
+// eventually cause "y" to equal zero and therefore
+// cause the predicate to return "false."
+
+#define ADD_O(d, xy) \
+ ( \
+ BOOST_PP_INC( \
+ BOOST_PP_TUPLE_ELEM(2, 0, xy) \
+ ), \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(2, 1, xy) \
+ ) \
+ ) \
+ /**/
+
+// The multiplication interface macro.
+
+#define MUL(x, y) \
+ BOOST_PP_TUPLE_ELEM( \
+ 3, 0, \
+ BOOST_PP_WHILE(MUL_P, MUL_O, (0, x, y)) \
+ ) \
+ /**/
+
+// The predicate that is passed to BOOST_PP_WHILE.
+// It returns "true" until "y" becomes zero.
+
+#define MUL_P(d, rxy) BOOST_PP_TUPLE_ELEM(3, 2, rxy)
+
+// The operation that is passed to BOOST_PP_WHILE.
+// It adds "x" to "r" and decrements "y" which will
+// eventually cause "y" to equal zero and therefore
+// cause the predicate to return "false."
+
+#define MUL_O(d, rxy) \
+ ( \
+ ADD_D( \
+ d, /* pass the state on to ADD_D */ \
+ BOOST_PP_TUPLE_ELEM(3, 0, rxy), \
+ BOOST_PP_TUPLE_ELEM(3, 1, rxy) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(3, 1, rxy), \
+ BOOST_PP_DEC( \
+ BOOST_PP_TUPLE_ELEM(3, 2, rxy) \
+ ) \
+ ) \
+ /**/
+
+MUL(3, 2) // expands to 6
+</pre>
+ </div>
+ <div>
+ There are a couple things to note in the above implementation. First,
+ note how <code>ADD_D</code> reenters <b>BOOST_PP_WHILE</b> using the <i>d</i> state
+ parameter. Second, note how <code>MUL</code>'s operation, which is
+ expanded by <b>BOOST_PP_WHILE</b>, passes the state on to <code>ADD_D</code>.
+ This illustrates state reentrance by both argument and concatenation.
+ </div>
+ <div>
+ For every macro in the library that uses <b>BOOST_PP_WHILE</b>, there is a
+ state reentrant variant. If that variant uses an argument rather than
+ concatenation, it is suffixed by <code>_D</code> to symbolize its method of
+ reentrance. Examples or this include the library's own <b>BOOST_PP_ADD_D</b>
+ and <b>BOOST_PP_MUL_D</b>. If the variant uses concatenation, it is
+ suffixed by an underscore. It is completed by concatenation of the
+ state. This includes <b>BOOST_PP_WHILE</b> itself with <b>BOOST_PP_WHILE_</b>
+ ## <i>d</i> and, for example, <b>BOOST_PP_LIST_FOLD_LEFT</b> with <b>BOOST_PP_LIST_FOLD_LEFT_</b>
+ ## <i>d</i>.
+ </div>
+ <div>
+ The same set of conventions are used for <b>BOOST_PP_FOR</b> and <b>BOOST_PP_REPEAT</b>,
+ but with the letters <i>R</i> and <i>Z</i>, respectively, to symbolize their
+ states.
+ </div>
+ <div>
+ Also note that the above <code>MUL</code> implementation, though not
+ immediately obvious, is using <i>all three</i> types of reentrance. Not
+ only is it using both types of <i>state</i> reentrance, it is also using <i>automatic
+ recursion</i>....
+ </div>
+ <h4>
+ Automatic Recursion
+ </h4>
+ <div>
+ Automatic recursion is a technique that vastly simplifies the use of reentrant
+ constructs. It is used by simply <i>not</i> using any state parameters at
+ all.
+ </div>
+ <div>
+ The <code>MUL</code> example above uses automatic recursion when it uses <b>BOOST_PP_WHILE</b>
+ by itself. In other words, <code>MUL</code> can <i>still</i> be used
+ inside <b>BOOST_PP_WHILE</b> even though it doesn't reenter <b>BOOST_PP_WHILE</b>
+ by concatenating the state to <b>BOOST_PP_WHILE_</b>.
+ </div>
+ <div>
+ To accomplish this, the library uses a "trick." Despite what it looks
+ like, the macro <b>BOOST_PP_WHILE</b> does not take three arguments. In
+ fact, it takes no arguments at all. Instead, the <b>BOOST_PP_WHILE</b> macro
+ expands <i>to</i> a macro that takes three arguments. It simply detects
+ what the next available <b>BOOST_PP_WHILE_</b> ## <i>d</i> macro is and returns
+ it. This detection process is somewhat involved, so I won't go into <i>how</i>
+ it works here, but suffice to say it <i>does</i> work.
+ </div>
+ <div>
+ Using automatic recursion to reenter various sets of macros is obviously much
+ simpler. It completely hides the underlying implementation details.
+ So, if it is so much easier to use, why do the state parameters still
+ exist? The reason is simple as well. When state parameters are
+ used, the state is <i>known</i> at all times. This is not the case when
+ automatic recursion is used. The automatic recursion mechanism has to <i>deduce</i>
+ the state at each point that it is used. This implies a cost in macro
+ complexity that in some situations--notably at deep macro depths--will slow
+ some preprocessors to a crawl.
+ </div>
+ <h4>
+ Conclusion
+ </h4>
+ <div>
+ It is really a tradeoff whether to use state parameters or automatic recursion
+ for reentrancy. The strengths of automatic recursion are ease of use and
+ implementation encapsulation. These come at a performance cost on some
+ preprocessors in some situations. The primary strength of state
+ parameters, on the other hand, is efficiency. Use of the state parameters
+ is the only way to achieve <i>maximum</i> efficiency. This efficiency
+ comes at the cost of both code complexity and exposition of implementation.
+ </div>
+ <h4>
+ See Also
+ </h4>
+ <ul>
+ <li><a href="../ref/for.html">BOOST_PP_FOR</a></li>
+ <li><a href="../ref/repeat.html">BOOST_PP_REPEAT</a></li>
+ <li><a href="../ref/while.html">BOOST_PP_WHILE</a></li>
+ </ul>
+ <div class="sig">
+ - Paul Mensonides
+ </div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+ </body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/techniques.html b/third_party/boostorg/preprocessor/doc/topics/techniques.html
new file mode 100644
index 0000000..feb487c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/techniques.html
@@ -0,0 +1,350 @@
+<html>
+<head>
+ <title>techniques.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ <style>
+ u { font-weight: normal; text-decoration: none; }
+ </style>
+</head>
+<body>
+<h4>Techniques</h4>
+<div>
+ The preprocessor metaprogramming techniques are presented in example format.
+</div>
+
+<h4>Example<u> - Use a local macro to avoid small scale repetition.</u></h4>
+<div class="code"><pre>
+#define BOOST_PP_DEF(op) /* ..................................... */ \
+ template<class T, int n> \
+ vec<T, n> operator op ## =(vec<T, n> lhs, const vec<T, n>& rhs) { \
+ for (int i = 0; i < n; ++i) { \
+ lhs(i) op ## = rhs(i); \
+ } \
+ } \
+ /**/
+
+BOOST_PP_DEF(+)
+BOOST_PP_DEF(-)
+BOOST_PP_DEF(*)
+BOOST_PP_DEF(/)
+
+#undef BOOST_PP_DEF
+</pre></div>
+<div>
+ <b>Tip:</b> It is usually okay to use a standard macro name like <code>BOOST_PP_DEF</code> for this kind of code
+ because the macro is both defined and undefined in the immediate site of its use.
+</div>
+<div>
+ <b>Tip:</b> It is easier to verify proper use of the line continuation operator when they are aligned.
+</div>
+<div>
+ <b>Notes:</b> You can extend this example by defining more and different kinds of operators.
+ Before doing so, consider using the <i>algebraic categories</i> technique introduced in <a href="../bibliography.html#barton">[Barton]</a>
+ or a <i>layered architecture</i> (see for instance <a href="../bibliography.html#czarnecki">[Czarnecki]</a>).
+ However, at some point you must type the operator tokens <code>*</code>, <code>/</code>, <code>+</code>, <code>-</code>, etc.,
+ because it is impossible to generate them using templates.
+ The resulting <i>categorical repetition</i> of tokens can be eliminated by using preprocessor metaprogramming.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_EMPTY as an unused parameter in local macro instantiations.</u></h4>
+<div class="code"><pre>
+#define BOOST_PP_DEF(cv) /* ... */ \
+ template<class base> \
+ cv() typename implement_subscript_using_begin_subscript<base>::value_type& \
+ implement_subscript_using_begin_subscript<base>::operator[](index_type i) cv() { \
+ return base::begin()[i]; \
+ } \
+ /**/
+
+ BOOST_PP_DEF(BOOST_PP_EMPTY)
+ BOOST_PP_DEF(BOOST_PP_IDENTITY(const))
+</pre></div>
+<div>
+ <b>How:</b> BOOST_PP_EMPTY() expands to nothing and can be used as an unused parameter.
+</div>
+<div>
+ <b>Note:</b> BOOST_PP_EMPTY with the () never gets expanded.
+ The () is necessary to invoke a function-like macro.
+</div>
+<div>
+ <b>Caveat:</b> You cannot safely use concatenation while using BOOST_PP_EMPTY().
+</div>
+<div>
+ <b>Tip:</b> Occasionally, one or two lines are considerably longer than the rest.
+ It can often save some work to <i>not</i> align all the line continuation operators without making the code too unreadable.
+</div>
+<div>
+ <b>Tip:</b> Use syntax highlighting on preprocessor metaprogramming macro identifiers such as:
+ <ul>
+ <li>BOOST_PP_DEF</li>
+ <li>BOOST_PP_EMPTY</li>
+ <li>BOOST_PP_REPEAT</li>
+ <li>...</li>
+ </ul>
+ It can greatly improve readability.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_CAT instead of ## when necessary.</u></h4>
+<div class="code"><pre>
+#define STATIC_ASSERT(expr) \
+ enum { BOOST_PP_CAT(static_check_, __LINE__) = (expr) ? 1 : -1 }; \
+ typedef char \
+ BOOST_PP_CAT(static_assert_, __LINE__)[BOOST_PP_CAT(static_check_, __LINE__)] \
+ /**/
+
+// ...
+
+STATIC_ASSERT(sizeof(int) <= sizeof(long));
+</pre></div>
+<div>
+ <b>Why:</b> Macro expansion proceeds recursively in "layers."
+ Token pasting prevents the preprocessor from performing macro expansion,
+ therefore it is often necessary to delay token concatenation.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_STRINGIZE instead of # whenever necessary.</u></h4>
+<div class="code"><pre>
+#define NOTE(str) \
+ message(__FILE__ "(" BOOST_PP_STRINGIZE(__LINE__) ") : " str) \
+ /**/
+
+// ...
+
+#pragma NOTE("TBD!")
+</pre></div>
+<div>
+ <b>Why:</b> Macro expansion proceeds recursively in "layers."
+ Stringization prevents the preprocessor from performing macro expansion, therefore it is often necessary to delay stringization.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_ENUM_PARAMS (and its variants) or BOOST_PP_REPEAT and BOOST_PP_COMMA_IF to avoid <i>O</i>(<i>n</i>) repetition on lists in general.</u></h4>
+<div class="code"><pre>
+struct make_type_list_end;
+
+template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ MAKE_TYPE_LIST_MAX_LENGTH,
+ class T,
+ make_type_list_end
+ )
+>
+struct make_type_list {
+ private:
+ enum { end = is_same<T0, make_type_list_end>::value };
+ public:
+ typedef typename type_if<
+ end, type_cons_empty,
+ type_cons<
+ T0,
+ typename type_inner_if<
+ end, type_identity<end>,
+ make_type_list<
+ BOOST_PP_ENUM_SHIFTED_PARAMS(
+ MAKE_TYPE_LIST_MAX_LENGTH,
+ T
+ )
+ >
+ >::type
+ >
+ >::type type;
+};
+</pre></div>
+<div>
+ <b>How:</b> BOOST_PP_REPEAT uses simulated recursion (pseudo code):
+</div>
+<div><pre>
+#define BOOST_PP_REPEAT(n, m, p) BOOST_PP_REPEAT ## n(m, p)
+
+#define BOOST_PP_REPEAT0(m, p)
+#define BOOST_PP_REPEAT1(m, p) m(0, p)
+#define BOOST_PP_REPEAT2(m, p) m(0, p) m(1, p)
+#define BOOST_PP_REPEAT3(m, p) BOOST_PP_REPEAT2(m, p) m(2, p)
+#define BOOST_PP_REPEAT4(m, p) BOOST_PP_REPEAT3(m, p) m(3, p)
+// ...
+</pre></div>
+<div>
+ <i>Note: This is no longer how BOOST_PP_REPEAT is implemented, so the code above is illustrative only! </i>
+</div>
+<div>
+ BOOST_PP_ENUM_PARAMS and its variations use BOOST_PP_REPEAT.
+ BOOST_PP_COMMA_IF(I) expands to a comma if I != 0.
+ BOOST_PP_INC(I) essentially expands to "I+1," and BOOST_PP_DEC(I) essentially expands to "I-1.".
+</div>
+
+<h4>Example<u> - Use a <i>conditional macro definition</i> to enable user configuration of code repetition based on need rather than some "reasonable" upper limit.</u></h4>
+<div class="code"><pre>
+#ifndef MAKE_TYPE_LIST_MAX_LENGTH
+#define MAKE_TYPE_LIST_MAX_LENGTH 8
+#endif
+</pre></div>
+<div>
+ Now the user can configure the <code>make_type_list</code> primitive without modifying library code.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_REPEAT and a <i>token look-up function</i> to eliminate categorical repetition.</u></h4>
+<div class="code"><pre>
+// CAVEAT: My compiler is not standard on arithmetic types.
+#define ARITHMETIC_TYPE(I) ARITHMETIC_TYPE ## I
+
+#define ARITHMETIC_TYPE0 bool
+#define ARITHMETIC_TYPE1 char
+#define ARITHMETIC_TYPE2 signed char
+#define ARITHMETIC_TYPE3 unsigned char
+#define ARITHMETIC_TYPE4 short
+#define ARITHMETIC_TYPE5 unsigned short
+#define ARITHMETIC_TYPE6 int
+#define ARITHMETIC_TYPE7 unsigned int
+#define ARITHMETIC_TYPE8 long
+#define ARITHMETIC_TYPE9 unsigned long
+#define ARITHMETIC_TYPE10 float
+#define ARITHMETIC_TYPE11 double
+#define ARITHMETIC_TYPE12 long double
+
+#define ARITHMETIC_TYPE_CNT 13
+
+// ...
+
+#define BOOST_PP_DEF(z, I, _) /* ... */ \
+ catch (ARITHMETIC_TYPE(I) t) { \
+ report_typeid(t); \
+ report_value(t); \
+ } \
+ /**/
+
+BOOST_PP_REPEAT(ARITHMETIC_TYPE_CNT, BOOST_PP_DEF, _)
+
+#undef BOOST_PP_DEF
+</pre></div>
+<div>
+ <b>Note:</b> The repetition of the above example can be eliminated using template metaprogramming <a href="../bibliography.html#czarnecki">[Czarnecki]</a> as well.
+ However categorical repetition of operator tokens cannot be completely eliminated by using template metaprogramming.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_REPEAT to avoid <i>O</i>(<i>n</i>*<i>n</i>) repetition.</u></h4>
+<div class="code"><pre>
+#ifndef MAX_VEC_ARG_CNT
+#define MAX_VEC_ARG_CNT 8
+#endif
+
+// ...
+
+#define ARG_FUN(z, i, _) BOOST_PP_COMMA_IF(i) T a ## i
+#define ASSIGN_FUN(z, i, ) (*this)[i] = a ## i;
+
+#define DEF_VEC_CTOR_FUN(z, i, _) /* ... */ \
+ vec(BOOST_PP_REPEAT(i, ARG_FUN, _)) { \
+ BOOST_PP_REPEAT(i, ASSIGN_FUN, _) \
+ } \
+ /**/
+
+BOOST_PP_REPEAT(BOOST_PP_INC(MAX_VEC_ARG_CNT), DEF_VEC_CTOR_FUN, _)
+
+#undef ARG_FUN
+#undef ASSIGN_FUN
+#undef DEF_VEC_CTOR_FUN
+
+// ...
+</pre></div>
+<div>
+ <b>How:</b> BOOST_PP_REPEAT is implemented is a special way to enable <i>automatic recursion</i>.
+</div>
+
+<h4>Example<u> - Use BOOST_PP_IF to implement special case for the first element.</u></h4>
+<div class="code"><pre>
+#define COMMA_IF(c) \
+ BOOST_PP_IF(c, BOOST_PP_COMMA, BOOST_PP_EMPTY)() \
+ /**/
+
+BOOST_PP_IF(0, true, false) == false;
+BOOST_PP_IF(1, true, false) == true;
+</pre></div>
+<div>
+ BOOST_PP_IF enables convenient generation of lists using BOOST_PP_REPEAT.
+</div>
+<div>
+ <b>Note:</b> <i>THEN</i> and <i>ELSE</i> don't have to be macros.
+ However, if at least one of them is a function-like macro, and you want it be expanded conditionally,
+ you have to make the other parameter a function-like macro too.
+ This can often be done using BOOST_PP_IDENTITY.
+ Consider the following example (by Aleksey Gurtovoy):
+</div>
+<div><pre>
+#define NUMBERED_EXPRESSION(i, x) /* ... */ \
+ BOOST_PP_IF( \
+ i, \
+ BOOST_PP_IDENTITY(x ## i) \
+ BOOST_PP_EMPTY \
+ )() \
+ /**/
+</pre></div>
+<div>
+ <b>Note:</b> Like in the above implementation of COMMA_IF, the result of BOOST_PP_IF is often invoked and not the <i>THEN</i> and <i>ELSE</i> parameters.
+ If the parameters were invoked, the code would not expand correctly, because the BOOST_PP_EMPTY parameter would get expanded
+ to nothing before the <b>BOOST_PP_IF</b> would be properly expanded.
+</div>
+<div>
+ <b>How:</b> BOOST_PP_IF is defined for the entire repeat range (psuedo code):
+</div>
+<div><pre>
+#define BOOST_PP_IF(c, THEN, ELSE) BOOST_PP_IF ## c(THEN, ELSE)
+
+#define BOOST_PP_IF0(THEN, ELSE) ELSE
+#define BOOST_PP_IF1(THEN, ELSE) THEN
+#define BOOST_PP_IF1(THEN, ELSE) THEN
+// ...
+</pre></div>
+
+<h4>Example:<u> Use arithmetic, logical, and comparison operations when necessary.</u></h4>
+<div class="code"><pre>
+#define SPECIAL_NUMBERED_LIST(n, i, elem, special) \
+ BOOST_PP_ASSERT_MSG( \
+ BOOST_PP_LESS(i, n), \
+ bad params for SPECIAL_NUMBERED_LIST! \
+ ) \
+ BOOST_PP_ENUM_PARAMS(i, elem) \
+ BOOST_PP_COMMA_IF(i) special \
+ BOOST_PP_REPEAT( \
+ BOOST_PP_SUB(BOOST_PP_DEC(n), i), \
+ SPECIAL_NUMBERED_LIST_HELPER, \
+ (elem, i) \
+ ) \
+ /**/
+
+#define SPECIAL_NUMBERED_LIST_HELPER(z, i, elem_base) \
+ , \
+ BOOST_PP_CAT( \
+ BOOST_PP_TUPLE_ELEM(2, 0, elem_base), \
+ BOOST_PP_ADD( \
+ i, \
+ BOOST_PP_TUPLE_ELEM(2, 1, elem_base) \
+ ) \
+ ) \
+ /**/
+
+SPECIAL_NUMBERED_LIST(3, 0, E, S)
+SPECIAL_NUMBERED_LIST(3, 1, E, S)
+SPECIAL_NUMBERED_LIST(3, 2, E, S)
+SPECIAL_NUMBERED_LIST(3, 3, E, S)
+</pre></div>
+
+<hr size="1">
+<div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+</div>
+<div style="margin-left: 0px;">
+Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies.
+This document is provided "as is" without express or implied warranty and with no claim as to its suitability for any purpose.
+</div>
+ <hr size="1">
+ <div style="margin-left: 0px;">
+ <i>© Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
+ </br><i>© Copyright Paul Mensonides 2002</i>
+ </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License, Version 1.0. (See
+ accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+ copy at <a href=
+ "http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+</body>
+</html>
diff --git a/third_party/boostorg/preprocessor/doc/topics/variadic_macros.html b/third_party/boostorg/preprocessor/doc/topics/variadic_macros.html
new file mode 100644
index 0000000..985b9eb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/doc/topics/variadic_macros.html
@@ -0,0 +1,262 @@
+<html>
+ <head>
+ <meta content="text/html; charset=windows-1252" http-equiv="content-type">
+ <title>variadic_macros.html</title>
+ <link rel="stylesheet" type="text/css" href="../styles.css">
+ <style>
+ u { font-weight: normal; text-decoration: none; }
+ </style>
+ </head>
+ <body>
+ <h4>Variadic Macros</h4>
+ <div> Variadic macros are supported by a number of compilers. They are
+ macros of the form: </div>
+ <div class="code">
+ <pre>#define SOME_MACRO(ZeroOrMoreParameters,...) macro expansion possible specifying __VA_ARGS__</pre>
+ </div>
+ <div> The '...' in the parameter list represents the variadic data when the
+ macro is invoked and the __VA_ARGS__ in the expansion represents the
+ variadic data in the expansion of the macro. Variadic data is of the form
+ of 1 or more preprocessor tokens separated by commas.<br>
+ <br>
+ The '...' must be the last parameter in the macro definition and there may
+ be 0 or more non-variadic parameters preceding it.<br>
+ <br>
+ In the expansion of the macro __VA_ARGS__ may be specified 0 or more times
+ to represent the variadic data. The variadic data in the expansion is a
+ comma separated list of preprocessor tokens representing the variadic data
+ which the invoker of the macro enters as the last arguments to the macro.<br>
+ </div>
+ <h4>Example<u> - Creating and invoking a variadic macro.</u></h4>
+ <div class="code">
+ <pre>#define INITIALIZE_INT_ARRAY(array_name,...) \ <br> static int array_name[] = { __VA_ARGS__ }; \ <br> /**/<br><br> INITIALIZE_INT_ARRAY(myname,45,789,33510,9346,2)</pre>
+ </div>
+ <u> <span style="font-weight: bold;">Preprocessor
+ Library Support<br>
+ </span></u>
+ <div>The library offers support for variadic macros for those
+ compilers
+ which support the feature. The library can automatically detect whether
+ a compiler supports variadic macros and sets the macro
+ BOOST_PP_VARIADICS accordingly to 1 if the compiler supports variadic
+ macros or 0 if the compiler does not support variadic macros.<br>
+ <br>
+ The end-user can #define BOOST_PP_VARIADICS to 1 or 0 himself in a
+ translation unit, before including any preprocessor header files, to
+ prevent the library from attempting to detect whether the compiler
+ supports variadic macros. This has the effect of manually turning on or
+ off variadic macro support in the library. Of course if one manually
+ turns on variadic macro support in the library, and one's compiler does
+ not support variadic macros, functionality in the library which uses
+ variadic macros will fail with error messages from the compiler.<br>
+ <br>
+ When BOOST_PP_VARIADICS is 1, the library offers some extended
+ functionality
+ by using variadic macros, and also offers extended support for working
+ with variadic data.<br><br>
+ <a name="vmvcquirk"></a>Visual C++ has a
+ few quirks related to variadic macros which require the end-user to code
+ slightly differently. When BOOST_PP_VARIADICS is 1 and Visual C++ is the
+ compiler BOOST_PP_VARIADICS_MSVC is 1, else when BOOST_PP_VARIADICS is 1
+ and Visual C++ is not the compiler BOOST_PP_VARIADICS_MSVC is 0. When
+ BOOST_PP_VARIADICS is 0 then BOOST_PP_VARIADICS_MSVC is not defined.
+ In this way the end-user, when using variadic macros, can test for the
+ presence of Visual C++ as the compiler and code accordingly.<br>
+ <br>
+ Support for working with variadic
+ data is largely centered on being able to convert variadic data to
+ other library data types, since the
+ functionality for working with those Boost preprocessor library data
+ types is much greater than that for working with variadic data directly.<br>
+ </div>
+ <a name="VNotation"></a>
+ <h4>Notation For Variadic Macros<br>
+ </h4>
+ <div>In the documentation, headers which have variadic macros,
+ and
+ variadic macros themselves, have a notation of '(v)' appended to them.
+ For the variadic macros themselves this signifies that
+ BOOST_PP_VARIADICS must be 1 for those variadic macros to be usable.
+ For variadic macros which have a non-variadic equivalent, the
+ non-variadic equivalent will be used if BOOST_PP_VARIADICS is set to 0.
+ </div>
+ <h4>Extended Functionality Using Variadic Macros<br>
+ </h4>
+ <div>Some macros in the library offer extended
+ functionality through the use of variadic macros.<br>
+ <br>
+ The variadic macro version offers the same functionality
+ as the non-variadic version, but because of the ability of the variadic
+ parameters to encompass a variable number of arguments, it also offers
+ an enhanced syntax using the same macro name.<br>
+ <br>
+ The macros in the library which offer this enhanced functionality are
+ all
+ centered on <i>tuple</i> manipulation. With variadic
+ macros it is
+ possible to
+ manipulate tuples without having to know the size of the tuple. So
+ while the invoker can still specify the size when using tuple macro
+ functionality, there are variadic versions of each of the tuple macros,
+ with the exact same name as the non-variadic macro, where the size need
+ not be specified.<br>
+ </div>
+ <h4>Extended Support For Variadic Data</h4>
+ <div>The library offers extended support for working with
+ variadic data
+ which goes beyond the functionality offered by the C++ specification
+ for variadic macros. It does this through preprocessor programming and
+ by using some of the other functionality in the library itself. Header
+ and macro names
+ in the library which offer extended support for working with variadic
+ data, and need the compiler to support variadic macros, are marked with
+ a (v)<sup> </sup>to indicate a variadic macro.<br>
+ <br>
+ The form of the functionality which the library offers is centered on
+ two macros which work with variadic data itself, and a set of macros
+ which convert between variadic data and other library data
+ types.<br>
+ <br>
+ The two macros are BOOST_PP_VARIADIC_ELEM and BOOST_PP_VARIADIC_SIZE,
+ which respectively return a particular token of variadic data and the
+ number of tokens of variadic data.<br>
+ <br>
+ The macros for converting variadic data to the library's data types are
+ BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
+ BOOST_PP_VARIADIC_TO_SEQ, and BOOST_PP_VARIADIC_TO_TUPLE.<br>
+ <br>
+ All of these macros need compiler support for variadic data and only
+ exist if BOOST_PP_VARIADICS is 1. <br>
+ <br>
+ The remaining four macros, which convert from a library data type
+ to comma-separated preprocessor tokens, which is the form of
+ variadic data, do not need compiler support for variadic
+ macros. These functions are BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM,
+ BOOST_PP_SEQ_ENUM, and BOOST_PP_TUPLE_ENUM. However if one wishes to
+ use this variadic data reliably as arguments to other macros, one needs
+ variadic macro support.<br>
+ </div>
+ <u style="font-weight: bold;"> Using a Tuple Instead of an Array<br>
+ </u>
+ <div>An array as a preprocessor data type is a two-element tuple where the
+ first element is the array size and the second element is a tuple which
+ constitutes the array data. Because a tuple knows its own size when the
+ compiler supports variadic macros, there is no reason to use the array preprocessor
+ data type as opposed to the tuple preprocessor data type; the tuple data
+ type now has all of the functionality which the array data type has and is
+ syntactically easier to use. With variadic macro support, which is now
+ officially part of the latest C++ standard, the preprocessor array data
+ type is essentially obsolete for conforming C++ compilers. Only if your
+ compiler does not support variadic macros is the preprocessor array data
+ type still useful.</div>
+ <u style="font-weight: bold;">Using Variadic Data</u>
+ <div>Variadic data exists in the
+ form of comma-separated preprocessor tokens. This is the case whether
+ the variadic data comes from the __VA_ARGS__ of a variadic macro, from
+ the conversion of a library's data type to variadic data, or the
+ manual construction of comma-separated preprocessing tokens by the
+ programmer writing a macro.<br>
+ <br>
+ The easiest way to work with
+ variadic data internally is to convert it to a library data type.
+ Library data types, whether an <i>array</i>, <i>list</i>,
+ <i>sequence</i>,
+ or <i>tuple</i>, have a rich set of functionality for
+ manipulating
+ data whereas
+ variadic data functionality in the library only allows one to access
+ the variadic data as a whole or to access a single token of the
+ variadic data at a time.<br>
+ <br>
+ The user of the library still may
+ choose to pass variadic data back into internal macros rather than
+ convert it to other library data types. There is no problem passing
+ variadic data as a whole to variadic macros as the last parameter of
+ the macro. However: <br>
+ <br>
+ <span style="font-weight: bold;">Attempting to pass
+ variadic data as a
+ whole directly into a non-variadic macro is not guaranteed to work and
+ may fail.<br>
+ </span><br>
+ This occurs because of a preprocessor weakness in a number
+ of compilers, currently most notably Visual C++. Even passing variadic
+ data as arguments to a non-variadic macro, when it is not represented
+ in
+ the form of __VA_ARGS__, may fail with certain compilers.<br>
+ <br>
+ What follows are very simple examples, showing how variadic data can be
+ passed to a non-variadic macro.<br>
+ <br>
+ First an example of what NOT to do.<br>
+ </div>
+ <h4>Example<u> - Passing variadic data as a whole to a
+ non-variadic
+ macro. DO NOT DO.</u></h4>
+ <div class="code">
+ <pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span
+ style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));</pre>
+ </div>
+ <div> There are two ways to pass variadic data to a non-variadic
+ macro.
+ The
+ first of these is to pass the individual tokens of the variadic data
+ separately to the non-variadic macro using the BOOST_PP_VARIADIC_ELEM
+ macro in the library.<br>
+ </div>
+ <h4>Example<u> - Passing individual variadic data tokens to
+ a
+ non-variadic macro.<br>
+ </u></h4>
+ <div class="code">
+ <pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = MACRO_ARG_2<br> (<br> BOOST_PP_VARIADIC_ELEM(0,VAR_MACRO(2,3)),<br> BOOST_PP_VARIADIC_ELEM(1,VAR_MACRO(2,3))<br> );</pre>
+ </div>
+ <div>The second way is to use a macro in the library called
+ BOOST_PP_OVERLOAD.
+ This macro allows one to "overload" a variadic macro to non-variadic
+ macros of different numbers of parameters, using a common prefix.
+ </div>
+ <h4>Example<u> - Passing variadic data as a whole to
+ BOOST_PP_OVERLOAD
+ and on to a non-variadic macro.<br>
+ </u></h4>
+ <div class="code">
+ <pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++ it is necessary to do this */<br><br>int xx = <br>BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());</pre>
+ </div>
+ <br>
+ <div>Although these techniques will work when passing variadic
+ data to
+ non-variadic macros, it is much better and less problematical to
+ work internally with the existing library data types and to only use
+ variadic
+ macros as an interface for end-users when there is a need to have a
+ macro which takes a
+ variable number of parameters.<br>
+ </div>
+ <b>See</b> <b>Also</b><br>
+ <ul>
+ <li><a href="../ref/variadics.html">BOOST_PP_VARIADICS</a></li>
+ <li><a href="../headers/tuple.html">Tuple Macros</a><br>
+ </li>
+ <li><a href="../headers/variadic.html">Variadic
+ Macros<br>
+ </a></li>
+ <li><a href="../ref/array_enum.html">BOOST_PP_ARRAY_ENUM</a></li>
+ <li><a href="../ref/list_enum_r.html">BOOST_PP_LIST_ENUM</a></li>
+ <li><a href="../ref/seq_enum.html">BOOST_PP_SEQ_ENUM</a></li>
+ <li><a href="../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a></li>
+ <li><a href="../ref/overload.html">BOOST_PP_OVERLOAD</a></li>
+ </ul>
+ <hr size="1">
+ <div style="margin-left: 0px;"> <i>© Copyright
+ Edward Diener
+ 2011,2013,2016</i> </div>
+ <div style="margin-left: 0px;">
+ <p><small>Distributed under the Boost Software License,
+ Version 1.0.
+ (See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
+ or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
+ </div>
+
+
+</body></html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor.hpp
new file mode 100644
index 0000000..b5c928e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor.hpp
@@ -0,0 +1,19 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org/libs/preprocessor for documentation. */
+#
+# ifndef BOOST_PREPROCESSOR_HPP
+# define BOOST_PREPROCESSOR_HPP
+#
+# include <boost/preprocessor/library.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic.hpp
new file mode 100644
index 0000000..b1be781
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic.hpp
@@ -0,0 +1,25 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_HPP
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/div.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/arithmetic/mod.hpp>
+# include <boost/preprocessor/arithmetic/mul.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/add.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/add.hpp
new file mode 100644
index 0000000..5a29f55
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/add.hpp
@@ -0,0 +1,51 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ADD */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ADD(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# else
+# define BOOST_PP_ADD(x, y) BOOST_PP_ADD_I(x, y)
+# define BOOST_PP_ADD_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# endif
+#
+# define BOOST_PP_ADD_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I xy
+# else
+# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define BOOST_PP_ADD_O_I(x, y) (BOOST_PP_INC(x), BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_ADD_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# else
+# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_ADD_D_I(d, x, y)
+# define BOOST_PP_ADD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/dec.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/dec.hpp
new file mode 100644
index 0000000..23dd0a3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/dec.hpp
@@ -0,0 +1,289 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_DEC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_DEC */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_DEC(x) BOOST_PP_DEC_I(x)
+# else
+# define BOOST_PP_DEC(x) BOOST_PP_DEC_OO((x))
+# define BOOST_PP_DEC_OO(par) BOOST_PP_DEC_I ## par
+# endif
+#
+# define BOOST_PP_DEC_I(x) BOOST_PP_DEC_ ## x
+#
+# define BOOST_PP_DEC_0 0
+# define BOOST_PP_DEC_1 0
+# define BOOST_PP_DEC_2 1
+# define BOOST_PP_DEC_3 2
+# define BOOST_PP_DEC_4 3
+# define BOOST_PP_DEC_5 4
+# define BOOST_PP_DEC_6 5
+# define BOOST_PP_DEC_7 6
+# define BOOST_PP_DEC_8 7
+# define BOOST_PP_DEC_9 8
+# define BOOST_PP_DEC_10 9
+# define BOOST_PP_DEC_11 10
+# define BOOST_PP_DEC_12 11
+# define BOOST_PP_DEC_13 12
+# define BOOST_PP_DEC_14 13
+# define BOOST_PP_DEC_15 14
+# define BOOST_PP_DEC_16 15
+# define BOOST_PP_DEC_17 16
+# define BOOST_PP_DEC_18 17
+# define BOOST_PP_DEC_19 18
+# define BOOST_PP_DEC_20 19
+# define BOOST_PP_DEC_21 20
+# define BOOST_PP_DEC_22 21
+# define BOOST_PP_DEC_23 22
+# define BOOST_PP_DEC_24 23
+# define BOOST_PP_DEC_25 24
+# define BOOST_PP_DEC_26 25
+# define BOOST_PP_DEC_27 26
+# define BOOST_PP_DEC_28 27
+# define BOOST_PP_DEC_29 28
+# define BOOST_PP_DEC_30 29
+# define BOOST_PP_DEC_31 30
+# define BOOST_PP_DEC_32 31
+# define BOOST_PP_DEC_33 32
+# define BOOST_PP_DEC_34 33
+# define BOOST_PP_DEC_35 34
+# define BOOST_PP_DEC_36 35
+# define BOOST_PP_DEC_37 36
+# define BOOST_PP_DEC_38 37
+# define BOOST_PP_DEC_39 38
+# define BOOST_PP_DEC_40 39
+# define BOOST_PP_DEC_41 40
+# define BOOST_PP_DEC_42 41
+# define BOOST_PP_DEC_43 42
+# define BOOST_PP_DEC_44 43
+# define BOOST_PP_DEC_45 44
+# define BOOST_PP_DEC_46 45
+# define BOOST_PP_DEC_47 46
+# define BOOST_PP_DEC_48 47
+# define BOOST_PP_DEC_49 48
+# define BOOST_PP_DEC_50 49
+# define BOOST_PP_DEC_51 50
+# define BOOST_PP_DEC_52 51
+# define BOOST_PP_DEC_53 52
+# define BOOST_PP_DEC_54 53
+# define BOOST_PP_DEC_55 54
+# define BOOST_PP_DEC_56 55
+# define BOOST_PP_DEC_57 56
+# define BOOST_PP_DEC_58 57
+# define BOOST_PP_DEC_59 58
+# define BOOST_PP_DEC_60 59
+# define BOOST_PP_DEC_61 60
+# define BOOST_PP_DEC_62 61
+# define BOOST_PP_DEC_63 62
+# define BOOST_PP_DEC_64 63
+# define BOOST_PP_DEC_65 64
+# define BOOST_PP_DEC_66 65
+# define BOOST_PP_DEC_67 66
+# define BOOST_PP_DEC_68 67
+# define BOOST_PP_DEC_69 68
+# define BOOST_PP_DEC_70 69
+# define BOOST_PP_DEC_71 70
+# define BOOST_PP_DEC_72 71
+# define BOOST_PP_DEC_73 72
+# define BOOST_PP_DEC_74 73
+# define BOOST_PP_DEC_75 74
+# define BOOST_PP_DEC_76 75
+# define BOOST_PP_DEC_77 76
+# define BOOST_PP_DEC_78 77
+# define BOOST_PP_DEC_79 78
+# define BOOST_PP_DEC_80 79
+# define BOOST_PP_DEC_81 80
+# define BOOST_PP_DEC_82 81
+# define BOOST_PP_DEC_83 82
+# define BOOST_PP_DEC_84 83
+# define BOOST_PP_DEC_85 84
+# define BOOST_PP_DEC_86 85
+# define BOOST_PP_DEC_87 86
+# define BOOST_PP_DEC_88 87
+# define BOOST_PP_DEC_89 88
+# define BOOST_PP_DEC_90 89
+# define BOOST_PP_DEC_91 90
+# define BOOST_PP_DEC_92 91
+# define BOOST_PP_DEC_93 92
+# define BOOST_PP_DEC_94 93
+# define BOOST_PP_DEC_95 94
+# define BOOST_PP_DEC_96 95
+# define BOOST_PP_DEC_97 96
+# define BOOST_PP_DEC_98 97
+# define BOOST_PP_DEC_99 98
+# define BOOST_PP_DEC_100 99
+# define BOOST_PP_DEC_101 100
+# define BOOST_PP_DEC_102 101
+# define BOOST_PP_DEC_103 102
+# define BOOST_PP_DEC_104 103
+# define BOOST_PP_DEC_105 104
+# define BOOST_PP_DEC_106 105
+# define BOOST_PP_DEC_107 106
+# define BOOST_PP_DEC_108 107
+# define BOOST_PP_DEC_109 108
+# define BOOST_PP_DEC_110 109
+# define BOOST_PP_DEC_111 110
+# define BOOST_PP_DEC_112 111
+# define BOOST_PP_DEC_113 112
+# define BOOST_PP_DEC_114 113
+# define BOOST_PP_DEC_115 114
+# define BOOST_PP_DEC_116 115
+# define BOOST_PP_DEC_117 116
+# define BOOST_PP_DEC_118 117
+# define BOOST_PP_DEC_119 118
+# define BOOST_PP_DEC_120 119
+# define BOOST_PP_DEC_121 120
+# define BOOST_PP_DEC_122 121
+# define BOOST_PP_DEC_123 122
+# define BOOST_PP_DEC_124 123
+# define BOOST_PP_DEC_125 124
+# define BOOST_PP_DEC_126 125
+# define BOOST_PP_DEC_127 126
+# define BOOST_PP_DEC_128 127
+# define BOOST_PP_DEC_129 128
+# define BOOST_PP_DEC_130 129
+# define BOOST_PP_DEC_131 130
+# define BOOST_PP_DEC_132 131
+# define BOOST_PP_DEC_133 132
+# define BOOST_PP_DEC_134 133
+# define BOOST_PP_DEC_135 134
+# define BOOST_PP_DEC_136 135
+# define BOOST_PP_DEC_137 136
+# define BOOST_PP_DEC_138 137
+# define BOOST_PP_DEC_139 138
+# define BOOST_PP_DEC_140 139
+# define BOOST_PP_DEC_141 140
+# define BOOST_PP_DEC_142 141
+# define BOOST_PP_DEC_143 142
+# define BOOST_PP_DEC_144 143
+# define BOOST_PP_DEC_145 144
+# define BOOST_PP_DEC_146 145
+# define BOOST_PP_DEC_147 146
+# define BOOST_PP_DEC_148 147
+# define BOOST_PP_DEC_149 148
+# define BOOST_PP_DEC_150 149
+# define BOOST_PP_DEC_151 150
+# define BOOST_PP_DEC_152 151
+# define BOOST_PP_DEC_153 152
+# define BOOST_PP_DEC_154 153
+# define BOOST_PP_DEC_155 154
+# define BOOST_PP_DEC_156 155
+# define BOOST_PP_DEC_157 156
+# define BOOST_PP_DEC_158 157
+# define BOOST_PP_DEC_159 158
+# define BOOST_PP_DEC_160 159
+# define BOOST_PP_DEC_161 160
+# define BOOST_PP_DEC_162 161
+# define BOOST_PP_DEC_163 162
+# define BOOST_PP_DEC_164 163
+# define BOOST_PP_DEC_165 164
+# define BOOST_PP_DEC_166 165
+# define BOOST_PP_DEC_167 166
+# define BOOST_PP_DEC_168 167
+# define BOOST_PP_DEC_169 168
+# define BOOST_PP_DEC_170 169
+# define BOOST_PP_DEC_171 170
+# define BOOST_PP_DEC_172 171
+# define BOOST_PP_DEC_173 172
+# define BOOST_PP_DEC_174 173
+# define BOOST_PP_DEC_175 174
+# define BOOST_PP_DEC_176 175
+# define BOOST_PP_DEC_177 176
+# define BOOST_PP_DEC_178 177
+# define BOOST_PP_DEC_179 178
+# define BOOST_PP_DEC_180 179
+# define BOOST_PP_DEC_181 180
+# define BOOST_PP_DEC_182 181
+# define BOOST_PP_DEC_183 182
+# define BOOST_PP_DEC_184 183
+# define BOOST_PP_DEC_185 184
+# define BOOST_PP_DEC_186 185
+# define BOOST_PP_DEC_187 186
+# define BOOST_PP_DEC_188 187
+# define BOOST_PP_DEC_189 188
+# define BOOST_PP_DEC_190 189
+# define BOOST_PP_DEC_191 190
+# define BOOST_PP_DEC_192 191
+# define BOOST_PP_DEC_193 192
+# define BOOST_PP_DEC_194 193
+# define BOOST_PP_DEC_195 194
+# define BOOST_PP_DEC_196 195
+# define BOOST_PP_DEC_197 196
+# define BOOST_PP_DEC_198 197
+# define BOOST_PP_DEC_199 198
+# define BOOST_PP_DEC_200 199
+# define BOOST_PP_DEC_201 200
+# define BOOST_PP_DEC_202 201
+# define BOOST_PP_DEC_203 202
+# define BOOST_PP_DEC_204 203
+# define BOOST_PP_DEC_205 204
+# define BOOST_PP_DEC_206 205
+# define BOOST_PP_DEC_207 206
+# define BOOST_PP_DEC_208 207
+# define BOOST_PP_DEC_209 208
+# define BOOST_PP_DEC_210 209
+# define BOOST_PP_DEC_211 210
+# define BOOST_PP_DEC_212 211
+# define BOOST_PP_DEC_213 212
+# define BOOST_PP_DEC_214 213
+# define BOOST_PP_DEC_215 214
+# define BOOST_PP_DEC_216 215
+# define BOOST_PP_DEC_217 216
+# define BOOST_PP_DEC_218 217
+# define BOOST_PP_DEC_219 218
+# define BOOST_PP_DEC_220 219
+# define BOOST_PP_DEC_221 220
+# define BOOST_PP_DEC_222 221
+# define BOOST_PP_DEC_223 222
+# define BOOST_PP_DEC_224 223
+# define BOOST_PP_DEC_225 224
+# define BOOST_PP_DEC_226 225
+# define BOOST_PP_DEC_227 226
+# define BOOST_PP_DEC_228 227
+# define BOOST_PP_DEC_229 228
+# define BOOST_PP_DEC_230 229
+# define BOOST_PP_DEC_231 230
+# define BOOST_PP_DEC_232 231
+# define BOOST_PP_DEC_233 232
+# define BOOST_PP_DEC_234 233
+# define BOOST_PP_DEC_235 234
+# define BOOST_PP_DEC_236 235
+# define BOOST_PP_DEC_237 236
+# define BOOST_PP_DEC_238 237
+# define BOOST_PP_DEC_239 238
+# define BOOST_PP_DEC_240 239
+# define BOOST_PP_DEC_241 240
+# define BOOST_PP_DEC_242 241
+# define BOOST_PP_DEC_243 242
+# define BOOST_PP_DEC_244 243
+# define BOOST_PP_DEC_245 244
+# define BOOST_PP_DEC_246 245
+# define BOOST_PP_DEC_247 246
+# define BOOST_PP_DEC_248 247
+# define BOOST_PP_DEC_249 248
+# define BOOST_PP_DEC_250 249
+# define BOOST_PP_DEC_251 250
+# define BOOST_PP_DEC_252 251
+# define BOOST_PP_DEC_253 252
+# define BOOST_PP_DEC_254 253
+# define BOOST_PP_DEC_255 254
+# define BOOST_PP_DEC_256 255
+# define BOOST_PP_DEC_257 256
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/detail/div_base.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/detail/div_base.hpp
new file mode 100644
index 0000000..106632a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/detail/div_base.hpp
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_DIV_BASE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_DIV_BASE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_DIV_BASE(x, y) BOOST_PP_WHILE(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# else
+# define BOOST_PP_DIV_BASE(x, y) BOOST_PP_DIV_BASE_I(x, y)
+# define BOOST_PP_DIV_BASE_I(x, y) BOOST_PP_WHILE(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_DIV_BASE_P(d, rxy) BOOST_PP_DIV_BASE_P_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
+# define BOOST_PP_DIV_BASE_P_IM(d, im) BOOST_PP_DIV_BASE_P_I(d, im)
+# else
+# define BOOST_PP_DIV_BASE_P(d, rxy) BOOST_PP_DIV_BASE_P_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define BOOST_PP_DIV_BASE_P_I(d, r, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_DIV_BASE_O(d, rxy) BOOST_PP_DIV_BASE_O_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
+# define BOOST_PP_DIV_BASE_O_IM(d, im) BOOST_PP_DIV_BASE_O_I(d, im)
+# else
+# define BOOST_PP_DIV_BASE_O(d, rxy) BOOST_PP_DIV_BASE_O_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define BOOST_PP_DIV_BASE_O_I(d, r, x, y) (BOOST_PP_INC(r), BOOST_PP_SUB_D(d, x, y), y)
+#
+# /* BOOST_PP_DIV_BASE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_DIV_BASE_D(d, x, y) BOOST_PP_WHILE_ ## d(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# else
+# define BOOST_PP_DIV_BASE_D(d, x, y) BOOST_PP_DIV_BASE_D_I(d, x, y)
+# define BOOST_PP_DIV_BASE_D_I(d, x, y) BOOST_PP_WHILE_ ## d(BOOST_PP_DIV_BASE_P, BOOST_PP_DIV_BASE_O, (0, x, y))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/div.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/div.hpp
new file mode 100644
index 0000000..277596c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/div.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
+#
+# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_DIV */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_DIV(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y))
+# else
+# define BOOST_PP_DIV(x, y) BOOST_PP_DIV_I(x, y)
+# define BOOST_PP_DIV_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y))
+# endif
+#
+# /* BOOST_PP_DIV_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_DIV_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
+# else
+# define BOOST_PP_DIV_D(d, x, y) BOOST_PP_DIV_D_I(d, x, y)
+# define BOOST_PP_DIV_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/inc.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/inc.hpp
new file mode 100644
index 0000000..1597ab8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/inc.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_INC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_INC */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
+# else
+# define BOOST_PP_INC(x) BOOST_PP_INC_OO((x))
+# define BOOST_PP_INC_OO(par) BOOST_PP_INC_I ## par
+# endif
+#
+# define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
+#
+# define BOOST_PP_INC_0 1
+# define BOOST_PP_INC_1 2
+# define BOOST_PP_INC_2 3
+# define BOOST_PP_INC_3 4
+# define BOOST_PP_INC_4 5
+# define BOOST_PP_INC_5 6
+# define BOOST_PP_INC_6 7
+# define BOOST_PP_INC_7 8
+# define BOOST_PP_INC_8 9
+# define BOOST_PP_INC_9 10
+# define BOOST_PP_INC_10 11
+# define BOOST_PP_INC_11 12
+# define BOOST_PP_INC_12 13
+# define BOOST_PP_INC_13 14
+# define BOOST_PP_INC_14 15
+# define BOOST_PP_INC_15 16
+# define BOOST_PP_INC_16 17
+# define BOOST_PP_INC_17 18
+# define BOOST_PP_INC_18 19
+# define BOOST_PP_INC_19 20
+# define BOOST_PP_INC_20 21
+# define BOOST_PP_INC_21 22
+# define BOOST_PP_INC_22 23
+# define BOOST_PP_INC_23 24
+# define BOOST_PP_INC_24 25
+# define BOOST_PP_INC_25 26
+# define BOOST_PP_INC_26 27
+# define BOOST_PP_INC_27 28
+# define BOOST_PP_INC_28 29
+# define BOOST_PP_INC_29 30
+# define BOOST_PP_INC_30 31
+# define BOOST_PP_INC_31 32
+# define BOOST_PP_INC_32 33
+# define BOOST_PP_INC_33 34
+# define BOOST_PP_INC_34 35
+# define BOOST_PP_INC_35 36
+# define BOOST_PP_INC_36 37
+# define BOOST_PP_INC_37 38
+# define BOOST_PP_INC_38 39
+# define BOOST_PP_INC_39 40
+# define BOOST_PP_INC_40 41
+# define BOOST_PP_INC_41 42
+# define BOOST_PP_INC_42 43
+# define BOOST_PP_INC_43 44
+# define BOOST_PP_INC_44 45
+# define BOOST_PP_INC_45 46
+# define BOOST_PP_INC_46 47
+# define BOOST_PP_INC_47 48
+# define BOOST_PP_INC_48 49
+# define BOOST_PP_INC_49 50
+# define BOOST_PP_INC_50 51
+# define BOOST_PP_INC_51 52
+# define BOOST_PP_INC_52 53
+# define BOOST_PP_INC_53 54
+# define BOOST_PP_INC_54 55
+# define BOOST_PP_INC_55 56
+# define BOOST_PP_INC_56 57
+# define BOOST_PP_INC_57 58
+# define BOOST_PP_INC_58 59
+# define BOOST_PP_INC_59 60
+# define BOOST_PP_INC_60 61
+# define BOOST_PP_INC_61 62
+# define BOOST_PP_INC_62 63
+# define BOOST_PP_INC_63 64
+# define BOOST_PP_INC_64 65
+# define BOOST_PP_INC_65 66
+# define BOOST_PP_INC_66 67
+# define BOOST_PP_INC_67 68
+# define BOOST_PP_INC_68 69
+# define BOOST_PP_INC_69 70
+# define BOOST_PP_INC_70 71
+# define BOOST_PP_INC_71 72
+# define BOOST_PP_INC_72 73
+# define BOOST_PP_INC_73 74
+# define BOOST_PP_INC_74 75
+# define BOOST_PP_INC_75 76
+# define BOOST_PP_INC_76 77
+# define BOOST_PP_INC_77 78
+# define BOOST_PP_INC_78 79
+# define BOOST_PP_INC_79 80
+# define BOOST_PP_INC_80 81
+# define BOOST_PP_INC_81 82
+# define BOOST_PP_INC_82 83
+# define BOOST_PP_INC_83 84
+# define BOOST_PP_INC_84 85
+# define BOOST_PP_INC_85 86
+# define BOOST_PP_INC_86 87
+# define BOOST_PP_INC_87 88
+# define BOOST_PP_INC_88 89
+# define BOOST_PP_INC_89 90
+# define BOOST_PP_INC_90 91
+# define BOOST_PP_INC_91 92
+# define BOOST_PP_INC_92 93
+# define BOOST_PP_INC_93 94
+# define BOOST_PP_INC_94 95
+# define BOOST_PP_INC_95 96
+# define BOOST_PP_INC_96 97
+# define BOOST_PP_INC_97 98
+# define BOOST_PP_INC_98 99
+# define BOOST_PP_INC_99 100
+# define BOOST_PP_INC_100 101
+# define BOOST_PP_INC_101 102
+# define BOOST_PP_INC_102 103
+# define BOOST_PP_INC_103 104
+# define BOOST_PP_INC_104 105
+# define BOOST_PP_INC_105 106
+# define BOOST_PP_INC_106 107
+# define BOOST_PP_INC_107 108
+# define BOOST_PP_INC_108 109
+# define BOOST_PP_INC_109 110
+# define BOOST_PP_INC_110 111
+# define BOOST_PP_INC_111 112
+# define BOOST_PP_INC_112 113
+# define BOOST_PP_INC_113 114
+# define BOOST_PP_INC_114 115
+# define BOOST_PP_INC_115 116
+# define BOOST_PP_INC_116 117
+# define BOOST_PP_INC_117 118
+# define BOOST_PP_INC_118 119
+# define BOOST_PP_INC_119 120
+# define BOOST_PP_INC_120 121
+# define BOOST_PP_INC_121 122
+# define BOOST_PP_INC_122 123
+# define BOOST_PP_INC_123 124
+# define BOOST_PP_INC_124 125
+# define BOOST_PP_INC_125 126
+# define BOOST_PP_INC_126 127
+# define BOOST_PP_INC_127 128
+# define BOOST_PP_INC_128 129
+# define BOOST_PP_INC_129 130
+# define BOOST_PP_INC_130 131
+# define BOOST_PP_INC_131 132
+# define BOOST_PP_INC_132 133
+# define BOOST_PP_INC_133 134
+# define BOOST_PP_INC_134 135
+# define BOOST_PP_INC_135 136
+# define BOOST_PP_INC_136 137
+# define BOOST_PP_INC_137 138
+# define BOOST_PP_INC_138 139
+# define BOOST_PP_INC_139 140
+# define BOOST_PP_INC_140 141
+# define BOOST_PP_INC_141 142
+# define BOOST_PP_INC_142 143
+# define BOOST_PP_INC_143 144
+# define BOOST_PP_INC_144 145
+# define BOOST_PP_INC_145 146
+# define BOOST_PP_INC_146 147
+# define BOOST_PP_INC_147 148
+# define BOOST_PP_INC_148 149
+# define BOOST_PP_INC_149 150
+# define BOOST_PP_INC_150 151
+# define BOOST_PP_INC_151 152
+# define BOOST_PP_INC_152 153
+# define BOOST_PP_INC_153 154
+# define BOOST_PP_INC_154 155
+# define BOOST_PP_INC_155 156
+# define BOOST_PP_INC_156 157
+# define BOOST_PP_INC_157 158
+# define BOOST_PP_INC_158 159
+# define BOOST_PP_INC_159 160
+# define BOOST_PP_INC_160 161
+# define BOOST_PP_INC_161 162
+# define BOOST_PP_INC_162 163
+# define BOOST_PP_INC_163 164
+# define BOOST_PP_INC_164 165
+# define BOOST_PP_INC_165 166
+# define BOOST_PP_INC_166 167
+# define BOOST_PP_INC_167 168
+# define BOOST_PP_INC_168 169
+# define BOOST_PP_INC_169 170
+# define BOOST_PP_INC_170 171
+# define BOOST_PP_INC_171 172
+# define BOOST_PP_INC_172 173
+# define BOOST_PP_INC_173 174
+# define BOOST_PP_INC_174 175
+# define BOOST_PP_INC_175 176
+# define BOOST_PP_INC_176 177
+# define BOOST_PP_INC_177 178
+# define BOOST_PP_INC_178 179
+# define BOOST_PP_INC_179 180
+# define BOOST_PP_INC_180 181
+# define BOOST_PP_INC_181 182
+# define BOOST_PP_INC_182 183
+# define BOOST_PP_INC_183 184
+# define BOOST_PP_INC_184 185
+# define BOOST_PP_INC_185 186
+# define BOOST_PP_INC_186 187
+# define BOOST_PP_INC_187 188
+# define BOOST_PP_INC_188 189
+# define BOOST_PP_INC_189 190
+# define BOOST_PP_INC_190 191
+# define BOOST_PP_INC_191 192
+# define BOOST_PP_INC_192 193
+# define BOOST_PP_INC_193 194
+# define BOOST_PP_INC_194 195
+# define BOOST_PP_INC_195 196
+# define BOOST_PP_INC_196 197
+# define BOOST_PP_INC_197 198
+# define BOOST_PP_INC_198 199
+# define BOOST_PP_INC_199 200
+# define BOOST_PP_INC_200 201
+# define BOOST_PP_INC_201 202
+# define BOOST_PP_INC_202 203
+# define BOOST_PP_INC_203 204
+# define BOOST_PP_INC_204 205
+# define BOOST_PP_INC_205 206
+# define BOOST_PP_INC_206 207
+# define BOOST_PP_INC_207 208
+# define BOOST_PP_INC_208 209
+# define BOOST_PP_INC_209 210
+# define BOOST_PP_INC_210 211
+# define BOOST_PP_INC_211 212
+# define BOOST_PP_INC_212 213
+# define BOOST_PP_INC_213 214
+# define BOOST_PP_INC_214 215
+# define BOOST_PP_INC_215 216
+# define BOOST_PP_INC_216 217
+# define BOOST_PP_INC_217 218
+# define BOOST_PP_INC_218 219
+# define BOOST_PP_INC_219 220
+# define BOOST_PP_INC_220 221
+# define BOOST_PP_INC_221 222
+# define BOOST_PP_INC_222 223
+# define BOOST_PP_INC_223 224
+# define BOOST_PP_INC_224 225
+# define BOOST_PP_INC_225 226
+# define BOOST_PP_INC_226 227
+# define BOOST_PP_INC_227 228
+# define BOOST_PP_INC_228 229
+# define BOOST_PP_INC_229 230
+# define BOOST_PP_INC_230 231
+# define BOOST_PP_INC_231 232
+# define BOOST_PP_INC_232 233
+# define BOOST_PP_INC_233 234
+# define BOOST_PP_INC_234 235
+# define BOOST_PP_INC_235 236
+# define BOOST_PP_INC_236 237
+# define BOOST_PP_INC_237 238
+# define BOOST_PP_INC_238 239
+# define BOOST_PP_INC_239 240
+# define BOOST_PP_INC_240 241
+# define BOOST_PP_INC_241 242
+# define BOOST_PP_INC_242 243
+# define BOOST_PP_INC_243 244
+# define BOOST_PP_INC_244 245
+# define BOOST_PP_INC_245 246
+# define BOOST_PP_INC_246 247
+# define BOOST_PP_INC_247 248
+# define BOOST_PP_INC_248 249
+# define BOOST_PP_INC_249 250
+# define BOOST_PP_INC_250 251
+# define BOOST_PP_INC_251 252
+# define BOOST_PP_INC_252 253
+# define BOOST_PP_INC_253 254
+# define BOOST_PP_INC_254 255
+# define BOOST_PP_INC_255 256
+# define BOOST_PP_INC_256 256
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/mod.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/mod.hpp
new file mode 100644
index 0000000..62489d1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/mod.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
+#
+# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_MOD */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MOD(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
+# else
+# define BOOST_PP_MOD(x, y) BOOST_PP_MOD_I(x, y)
+# define BOOST_PP_MOD_I(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
+# endif
+#
+# /* BOOST_PP_MOD_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MOD_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
+# else
+# define BOOST_PP_MOD_D(d, x, y) BOOST_PP_MOD_D_I(d, x, y)
+# define BOOST_PP_MOD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/mul.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/mul.hpp
new file mode 100644
index 0000000..f3d9ffc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/mul.hpp
@@ -0,0 +1,53 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_MUL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MUL(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# else
+# define BOOST_PP_MUL(x, y) BOOST_PP_MUL_I(x, y)
+# define BOOST_PP_MUL_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# endif
+#
+# define BOOST_PP_MUL_P(d, rxy) BOOST_PP_TUPLE_ELEM(3, 2, rxy)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_MUL_O(d, rxy) BOOST_PP_MUL_O_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
+# define BOOST_PP_MUL_O_IM(d, im) BOOST_PP_MUL_O_I(d, im)
+# else
+# define BOOST_PP_MUL_O(d, rxy) BOOST_PP_MUL_O_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
+# endif
+#
+# define BOOST_PP_MUL_O_I(d, r, x, y) (BOOST_PP_ADD_D(d, r, x), x, BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_MUL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MUL_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# else
+# define BOOST_PP_MUL_D(d, x, y) BOOST_PP_MUL_D_I(d, x, y)
+# define BOOST_PP_MUL_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/sub.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/sub.hpp
new file mode 100644
index 0000000..5262cda
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/arithmetic/sub.hpp
@@ -0,0 +1,50 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
+# define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SUB */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SUB(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# else
+# define BOOST_PP_SUB(x, y) BOOST_PP_SUB_I(x, y)
+# define BOOST_PP_SUB_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# endif
+#
+# define BOOST_PP_SUB_P(d, xy) BOOST_PP_TUPLE_ELEM(2, 1, xy)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I xy
+# else
+# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
+# endif
+#
+# define BOOST_PP_SUB_O_I(x, y) (BOOST_PP_DEC(x), BOOST_PP_DEC(y))
+#
+# /* BOOST_PP_SUB_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# else
+# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_SUB_D_I(d, x, y)
+# define BOOST_PP_SUB_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array.hpp
new file mode 100644
index 0000000..3b6a771
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_HPP
+# define BOOST_PREPROCESSOR_ARRAY_HPP
+#
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/enum.hpp>
+# include <boost/preprocessor/array/insert.hpp>
+# include <boost/preprocessor/array/pop_back.hpp>
+# include <boost/preprocessor/array/pop_front.hpp>
+# include <boost/preprocessor/array/push_back.hpp>
+# include <boost/preprocessor/array/push_front.hpp>
+# include <boost/preprocessor/array/remove.hpp>
+# include <boost/preprocessor/array/replace.hpp>
+# include <boost/preprocessor/array/reverse.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/array/to_list.hpp>
+# include <boost/preprocessor/array/to_seq.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/data.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/data.hpp
new file mode 100644
index 0000000..10c926a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/data.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_DATA_HPP
+# define BOOST_PREPROCESSOR_ARRAY_DATA_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_DATA */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_TUPLE_ELEM(2, 1, array)
+# else
+# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_ARRAY_DATA_I(array)
+# define BOOST_PP_ARRAY_DATA_I(array) BOOST_PP_ARRAY_DATA_II array
+# define BOOST_PP_ARRAY_DATA_II(size, data) data
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/detail/get_data.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/detail/get_data.hpp
new file mode 100644
index 0000000..15ae740
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/detail/get_data.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP
+# define BOOST_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/facilities/is_1.hpp>
+#
+# /* BOOST_PP_ARRAY_DETAIL_GET_DATA */
+#
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE(size, data)
+
+# if BOOST_PP_VARIADICS && !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400)
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT(size, data) BOOST_PP_TUPLE_REM(size) data
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT(size, data) BOOST_PP_TUPLE_REM_CAT(size) data
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_IS_1(size), \
+ BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT, \
+ BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT \
+ ) \
+ (size,data) \
+/**/
+# else
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data
+# endif
+# else
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data
+# endif
+
+# define BOOST_PP_ARRAY_DETAIL_GET_DATA(size, data) \
+ BOOST_PP_IF \
+ ( \
+ size, \
+ BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY, \
+ BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE \
+ ) \
+ (size,data) \
+/**/
+#
+# endif /* BOOST_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/elem.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/elem.hpp
new file mode 100644
index 0000000..105ba24
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/elem.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_ELEM_HPP
+# define BOOST_PREPROCESSOR_ARRAY_ELEM_HPP
+#
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_ELEM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
+# else
+# define BOOST_PP_ARRAY_ELEM(i, array) BOOST_PP_ARRAY_ELEM_I(i, array)
+# define BOOST_PP_ARRAY_ELEM_I(i, array) BOOST_PP_TUPLE_ELEM(BOOST_PP_ARRAY_SIZE(array), i, BOOST_PP_ARRAY_DATA(array))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/enum.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/enum.hpp
new file mode 100644
index 0000000..9710f9c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/enum.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_ENUM_HPP
+# define BOOST_PREPROCESSOR_ARRAY_ENUM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ARRAY_ENUM */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_ARRAY_ENUM_I(BOOST_PP_TUPLE_REM_CTOR, array)
+# define BOOST_PP_ARRAY_ENUM_I(m, args) BOOST_PP_ARRAY_ENUM_II(m, args)
+# define BOOST_PP_ARRAY_ENUM_II(m, args) BOOST_PP_CAT(m ## args,)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_ARRAY_ENUM_I(array)
+# define BOOST_PP_ARRAY_ENUM_I(array) BOOST_PP_TUPLE_REM_CTOR ## array
+# else
+# define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_TUPLE_REM_CTOR array
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/insert.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/insert.hpp
new file mode 100644
index 0000000..b8fe5b8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/insert.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_INSERT_HPP
+# define BOOST_PREPROCESSOR_ARRAY_INSERT_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/push_back.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/control/deduce_d.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_INSERT */
+#
+# define BOOST_PP_ARRAY_INSERT(array, i, elem) BOOST_PP_ARRAY_INSERT_I(BOOST_PP_DEDUCE_D(), array, i, elem)
+# define BOOST_PP_ARRAY_INSERT_I(d, array, i, elem) BOOST_PP_ARRAY_INSERT_D(d, array, i, elem)
+#
+# /* BOOST_PP_ARRAY_INSERT_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_INSERT_D(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_INSERT_P, BOOST_PP_ARRAY_INSERT_O, (0, i, elem, (0, ()), array)))
+# else
+# define BOOST_PP_ARRAY_INSERT_D(d, array, i, elem) BOOST_PP_ARRAY_INSERT_D_I(d, array, i, elem)
+# define BOOST_PP_ARRAY_INSERT_D_I(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_INSERT_P, BOOST_PP_ARRAY_INSERT_O, (0, i, elem, (0, ()), array)))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ARRAY_INSERT_P(d, state) BOOST_PP_ARRAY_INSERT_P_I state
+# else
+# define BOOST_PP_ARRAY_INSERT_P(d, state) BOOST_PP_ARRAY_INSERT_P_I(nil, nil, nil, BOOST_PP_TUPLE_ELEM(5, 3, state), BOOST_PP_TUPLE_ELEM(5, 4, state))
+# endif
+#
+# define BOOST_PP_ARRAY_INSERT_P_I(_i, _ii, _iii, res, arr) BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), BOOST_PP_INC(BOOST_PP_ARRAY_SIZE(arr)))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ARRAY_INSERT_O(d, state) BOOST_PP_ARRAY_INSERT_O_I state
+# else
+# define BOOST_PP_ARRAY_INSERT_O(d, state) BOOST_PP_ARRAY_INSERT_O_I(BOOST_PP_TUPLE_ELEM(5, 0, state), BOOST_PP_TUPLE_ELEM(5, 1, state), BOOST_PP_TUPLE_ELEM(5, 2, state), BOOST_PP_TUPLE_ELEM(5, 3, state), BOOST_PP_TUPLE_ELEM(5, 4, state))
+# endif
+#
+# define BOOST_PP_ARRAY_INSERT_O_I(n, i, elem, res, arr) (BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), i), BOOST_PP_INC(n), n), i, elem, BOOST_PP_ARRAY_PUSH_BACK(res, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), i), BOOST_PP_ARRAY_ELEM(n, arr), elem)), arr)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/pop_back.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/pop_back.hpp
new file mode 100644
index 0000000..29d2a45
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/pop_back.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_POP_BACK_HPP
+# define BOOST_PREPROCESSOR_ARRAY_POP_BACK_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/repetition/enum.hpp>
+# include <boost/preprocessor/repetition/deduce_z.hpp>
+#
+# /* BOOST_PP_ARRAY_POP_BACK */
+#
+# define BOOST_PP_ARRAY_POP_BACK(array) BOOST_PP_ARRAY_POP_BACK_Z(BOOST_PP_DEDUCE_Z(), array)
+#
+# /* BOOST_PP_ARRAY_POP_BACK_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_POP_BACK_Z(z, array) BOOST_PP_ARRAY_POP_BACK_I(z, BOOST_PP_ARRAY_SIZE(array), array)
+# else
+# define BOOST_PP_ARRAY_POP_BACK_Z(z, array) BOOST_PP_ARRAY_POP_BACK_Z_D(z, array)
+# define BOOST_PP_ARRAY_POP_BACK_Z_D(z, array) BOOST_PP_ARRAY_POP_BACK_I(z, BOOST_PP_ARRAY_SIZE(array), array)
+# endif
+#
+# define BOOST_PP_ARRAY_POP_BACK_I(z, size, array) (BOOST_PP_DEC(size), (BOOST_PP_ENUM_ ## z(BOOST_PP_DEC(size), BOOST_PP_ARRAY_POP_BACK_M, array)))
+# define BOOST_PP_ARRAY_POP_BACK_M(z, n, data) BOOST_PP_ARRAY_ELEM(n, data)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/pop_front.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/pop_front.hpp
new file mode 100644
index 0000000..7d9069c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/pop_front.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_POP_FRONT_HPP
+# define BOOST_PREPROCESSOR_ARRAY_POP_FRONT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/repetition/enum.hpp>
+# include <boost/preprocessor/repetition/deduce_z.hpp>
+#
+# /* BOOST_PP_ARRAY_POP_FRONT */
+#
+# define BOOST_PP_ARRAY_POP_FRONT(array) BOOST_PP_ARRAY_POP_FRONT_Z(BOOST_PP_DEDUCE_Z(), array)
+#
+# /* BOOST_PP_ARRAY_POP_FRONT_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_POP_FRONT_Z(z, array) BOOST_PP_ARRAY_POP_FRONT_I(z, BOOST_PP_ARRAY_SIZE(array), array)
+# else
+# define BOOST_PP_ARRAY_POP_FRONT_Z(z, array) BOOST_PP_ARRAY_POP_FRONT_Z_D(z, array)
+# define BOOST_PP_ARRAY_POP_FRONT_Z_D(z, array) BOOST_PP_ARRAY_POP_FRONT_I(z, BOOST_PP_ARRAY_SIZE(array), array)
+# endif
+#
+# define BOOST_PP_ARRAY_POP_FRONT_I(z, size, array) (BOOST_PP_DEC(size), (BOOST_PP_ENUM_ ## z(BOOST_PP_DEC(size), BOOST_PP_ARRAY_POP_FRONT_M, array)))
+# define BOOST_PP_ARRAY_POP_FRONT_M(z, n, data) BOOST_PP_ARRAY_ELEM(BOOST_PP_INC(n), data)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/push_back.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/push_back.hpp
new file mode 100644
index 0000000..5dce9e0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/push_back.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_PUSH_BACK_HPP
+# define BOOST_PREPROCESSOR_ARRAY_PUSH_BACK_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/array/detail/get_data.hpp>
+#
+# /* BOOST_PP_ARRAY_PUSH_BACK */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_PUSH_BACK(array, elem) BOOST_PP_ARRAY_PUSH_BACK_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem)
+# else
+# define BOOST_PP_ARRAY_PUSH_BACK(array, elem) BOOST_PP_ARRAY_PUSH_BACK_D(array, elem)
+# define BOOST_PP_ARRAY_PUSH_BACK_D(array, elem) BOOST_PP_ARRAY_PUSH_BACK_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem)
+# endif
+#
+# define BOOST_PP_ARRAY_PUSH_BACK_I(size, data, elem) (BOOST_PP_INC(size), (BOOST_PP_ARRAY_DETAIL_GET_DATA(size,data) BOOST_PP_COMMA_IF(size) elem))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/push_front.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/push_front.hpp
new file mode 100644
index 0000000..a6c6dc7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/push_front.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_PUSH_FRONT_HPP
+# define BOOST_PREPROCESSOR_ARRAY_PUSH_FRONT_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/array/detail/get_data.hpp>
+#
+# /* BOOST_PP_ARRAY_PUSH_FRONT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_PUSH_FRONT(array, elem) BOOST_PP_ARRAY_PUSH_FRONT_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem)
+# else
+# define BOOST_PP_ARRAY_PUSH_FRONT(array, elem) BOOST_PP_ARRAY_PUSH_FRONT_D(array, elem)
+# define BOOST_PP_ARRAY_PUSH_FRONT_D(array, elem) BOOST_PP_ARRAY_PUSH_FRONT_I(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array), elem)
+# endif
+#
+# define BOOST_PP_ARRAY_PUSH_FRONT_I(size, data, elem) (BOOST_PP_INC(size), (elem BOOST_PP_COMMA_IF(size) BOOST_PP_ARRAY_DETAIL_GET_DATA(size,data)))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/remove.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/remove.hpp
new file mode 100644
index 0000000..0260900
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/remove.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_REMOVE_HPP
+# define BOOST_PREPROCESSOR_ARRAY_REMOVE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/push_back.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/control/deduce_d.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_REMOVE */
+#
+# define BOOST_PP_ARRAY_REMOVE(array, i) BOOST_PP_ARRAY_REMOVE_I(BOOST_PP_DEDUCE_D(), array, i)
+# define BOOST_PP_ARRAY_REMOVE_I(d, array, i) BOOST_PP_ARRAY_REMOVE_D(d, array, i)
+#
+# /* BOOST_PP_ARRAY_REMOVE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
+# else
+# define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_ARRAY_REMOVE_D_I(d, array, i)
+# define BOOST_PP_ARRAY_REMOVE_D_I(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
+# endif
+#
+# define BOOST_PP_ARRAY_REMOVE_P(d, st) BOOST_PP_NOT_EQUAL(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_ELEM(4, 3, st)))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I st
+# else
+# define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_TUPLE_ELEM(4, 1, st), BOOST_PP_TUPLE_ELEM(4, 2, st), BOOST_PP_TUPLE_ELEM(4, 3, st))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, res BOOST_PP_TUPLE_EAT_2)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
+# else
+# define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, BOOST_PP_TUPLE_ELEM_2_0)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/replace.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/replace.hpp
new file mode 100644
index 0000000..10a1f09
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/replace.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_REPLACE_HPP
+# define BOOST_PREPROCESSOR_ARRAY_REPLACE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/push_back.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/deduce_d.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_REPLACE */
+#
+# define BOOST_PP_ARRAY_REPLACE(array, i, elem) BOOST_PP_ARRAY_REPLACE_I(BOOST_PP_DEDUCE_D(), array, i, elem)
+# define BOOST_PP_ARRAY_REPLACE_I(d, array, i, elem) BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem)
+#
+# /* BOOST_PP_ARRAY_REPLACE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REPLACE_P, BOOST_PP_ARRAY_REPLACE_O, (0, i, elem, (0, ()), array)))
+# else
+# define BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem) BOOST_PP_ARRAY_REPLACE_D_I(d, array, i, elem)
+# define BOOST_PP_ARRAY_REPLACE_D_I(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REPLACE_P, BOOST_PP_ARRAY_REPLACE_O, (0, i, elem, (0, ()), array)))
+# endif
+#
+# define BOOST_PP_ARRAY_REPLACE_P(d, state) BOOST_PP_NOT_EQUAL(BOOST_PP_TUPLE_ELEM(5, 0, state), BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_ELEM(5, 4, state)))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ARRAY_REPLACE_O(d, state) BOOST_PP_ARRAY_REPLACE_O_I state
+# else
+# define BOOST_PP_ARRAY_REPLACE_O(d, state) BOOST_PP_ARRAY_REPLACE_O_I(BOOST_PP_TUPLE_ELEM(5, 0, state), BOOST_PP_TUPLE_ELEM(5, 1, state), BOOST_PP_TUPLE_ELEM(5, 2, state), BOOST_PP_TUPLE_ELEM(5, 3, state), BOOST_PP_TUPLE_ELEM(5, 4, state))
+# endif
+#
+# define BOOST_PP_ARRAY_REPLACE_O_I(n, i, elem, res, arr) (BOOST_PP_INC(n), i, elem, BOOST_PP_ARRAY_PUSH_BACK(res, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_ELEM(n, arr), elem)), arr)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/reverse.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/reverse.hpp
new file mode 100644
index 0000000..a6a4f75
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/reverse.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_REVERSE_HPP
+# define BOOST_PREPROCESSOR_ARRAY_REVERSE_HPP
+#
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/reverse.hpp>
+#
+# /* BOOST_PP_ARRAY_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_REVERSE(array) (BOOST_PP_ARRAY_SIZE(array), BOOST_PP_TUPLE_REVERSE(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array)))
+# else
+# define BOOST_PP_ARRAY_REVERSE(array) BOOST_PP_ARRAY_REVERSE_I(array)
+# define BOOST_PP_ARRAY_REVERSE_I(array) (BOOST_PP_ARRAY_SIZE(array), BOOST_PP_TUPLE_REVERSE(BOOST_PP_ARRAY_SIZE(array), BOOST_PP_ARRAY_DATA(array)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/size.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/size.hpp
new file mode 100644
index 0000000..3f370ee
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/size.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_SIZE_HPP
+# define BOOST_PREPROCESSOR_ARRAY_SIZE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ARRAY_SIZE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_TUPLE_ELEM(2, 0, array)
+# else
+# define BOOST_PP_ARRAY_SIZE(array) BOOST_PP_ARRAY_SIZE_I(array)
+# define BOOST_PP_ARRAY_SIZE_I(array) BOOST_PP_ARRAY_SIZE_II array
+# define BOOST_PP_ARRAY_SIZE_II(size, data) size
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_list.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_list.hpp
new file mode 100644
index 0000000..4cb45b6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_list.hpp
@@ -0,0 +1,47 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_TO_LIST_HPP
+# define BOOST_PREPROCESSOR_ARRAY_TO_LIST_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* BOOST_PP_ARRAY_TO_LIST */
+#
+# define BOOST_PP_ARRAY_TO_LIST(array) \
+ BOOST_PP_IF \
+ ( \
+ BOOST_PP_ARRAY_SIZE(array), \
+ BOOST_PP_ARRAY_TO_LIST_DO, \
+ BOOST_PP_ARRAY_TO_LIST_EMPTY \
+ ) \
+ (array) \
+/**/
+#
+# define BOOST_PP_ARRAY_TO_LIST_EMPTY(array) BOOST_PP_NIL
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_ARRAY_TO_LIST_DO(array) BOOST_PP_ARRAY_TO_LIST_I(BOOST_PP_TUPLE_TO_LIST, array)
+# define BOOST_PP_ARRAY_TO_LIST_I(m, args) BOOST_PP_ARRAY_TO_LIST_II(m, args)
+# define BOOST_PP_ARRAY_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_ARRAY_TO_LIST_DO(array) BOOST_PP_ARRAY_TO_LIST_I(array)
+# define BOOST_PP_ARRAY_TO_LIST_I(array) BOOST_PP_TUPLE_TO_LIST ## array
+# else
+# define BOOST_PP_ARRAY_TO_LIST_DO(array) BOOST_PP_TUPLE_TO_LIST array
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_seq.hpp
new file mode 100644
index 0000000..7303f34
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_seq.hpp
@@ -0,0 +1,46 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_TO_SEQ_HPP
+# define BOOST_PREPROCESSOR_ARRAY_TO_SEQ_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/to_seq.hpp>
+#
+# /* BOOST_PP_ARRAY_TO_SEQ */
+#
+# define BOOST_PP_ARRAY_TO_SEQ(array) \
+ BOOST_PP_IF \
+ ( \
+ BOOST_PP_ARRAY_SIZE(array), \
+ BOOST_PP_ARRAY_TO_SEQ_DO, \
+ BOOST_PP_ARRAY_TO_SEQ_EMPTY \
+ ) \
+ (array) \
+/**/
+# define BOOST_PP_ARRAY_TO_SEQ_EMPTY(array)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_ARRAY_TO_SEQ_DO(array) BOOST_PP_ARRAY_TO_SEQ_I(BOOST_PP_TUPLE_TO_SEQ, array)
+# define BOOST_PP_ARRAY_TO_SEQ_I(m, args) BOOST_PP_ARRAY_TO_SEQ_II(m, args)
+# define BOOST_PP_ARRAY_TO_SEQ_II(m, args) BOOST_PP_CAT(m ## args,)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_ARRAY_TO_SEQ_DO(array) BOOST_PP_ARRAY_TO_SEQ_I(array)
+# define BOOST_PP_ARRAY_TO_SEQ_I(array) BOOST_PP_TUPLE_TO_SEQ ## array
+# else
+# define BOOST_PP_ARRAY_TO_SEQ_DO(array) BOOST_PP_TUPLE_TO_SEQ array
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_tuple.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_tuple.hpp
new file mode 100644
index 0000000..0d8defa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/array/to_tuple.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ARRAY_TO_TUPLE_HPP
+# define BOOST_PREPROCESSOR_ARRAY_TO_TUPLE_HPP
+#
+# include <boost/preprocessor/array/data.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/control/if.hpp>
+#
+# /* BOOST_PP_ARRAY_TO_TUPLE */
+#
+# define BOOST_PP_ARRAY_TO_TUPLE(array) \
+ BOOST_PP_IF \
+ ( \
+ BOOST_PP_ARRAY_SIZE(array), \
+ BOOST_PP_ARRAY_DATA, \
+ BOOST_PP_ARRAY_TO_TUPLE_EMPTY \
+ ) \
+ (array) \
+/**/
+# define BOOST_PP_ARRAY_TO_TUPLE_EMPTY(array)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/assert_msg.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/assert_msg.hpp
new file mode 100644
index 0000000..924dba1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/assert_msg.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ASSERT_MSG_HPP
+# define BOOST_PREPROCESSOR_ASSERT_MSG_HPP
+#
+# include <boost/preprocessor/debug/assert.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/cat.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/cat.hpp
new file mode 100644
index 0000000..52a3892
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/cat.hpp
@@ -0,0 +1,35 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CAT_HPP
+# define BOOST_PREPROCESSOR_CAT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_CAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_I(a, b)
+# else
+# define BOOST_PP_CAT(a, b) BOOST_PP_CAT_OO((a, b))
+# define BOOST_PP_CAT_OO(par) BOOST_PP_CAT_I ## par
+# endif
+#
+# if (~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700)
+# define BOOST_PP_CAT_I(a, b) a ## b
+# else
+# define BOOST_PP_CAT_I(a, b) BOOST_PP_CAT_II(~, a ## b)
+# define BOOST_PP_CAT_II(p, res) res
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comma.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comma.hpp
new file mode 100644
index 0000000..6e02fb6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comma.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMMA_HPP
+# define BOOST_PREPROCESSOR_COMMA_HPP
+#
+# include <boost/preprocessor/punctuation/comma.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comma_if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comma_if.hpp
new file mode 100644
index 0000000..9ceb079
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comma_if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMMA_IF_HPP
+# define BOOST_PREPROCESSOR_COMMA_IF_HPP
+#
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison.hpp
new file mode 100644
index 0000000..b09ac8f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison.hpp
@@ -0,0 +1,24 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_HPP
+#
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/comparison/greater.hpp>
+# include <boost/preprocessor/comparison/greater_equal.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/equal.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/equal.hpp
new file mode 100644
index 0000000..d299efe
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/equal.hpp
@@ -0,0 +1,34 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_EQUAL_HPP
+#
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_EQUAL(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y))
+# else
+# define BOOST_PP_EQUAL(x, y) BOOST_PP_EQUAL_I(x, y)
+# define BOOST_PP_EQUAL_I(x, y) BOOST_PP_COMPL(BOOST_PP_NOT_EQUAL(x, y))
+# endif
+#
+# /* BOOST_PP_EQUAL_D */
+#
+# define BOOST_PP_EQUAL_D(d, x, y) BOOST_PP_EQUAL(x, y)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/greater.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/greater.hpp
new file mode 100644
index 0000000..83d2fcf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/greater.hpp
@@ -0,0 +1,38 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
+#
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_GREATER */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_GREATER(x, y) BOOST_PP_LESS(y, x)
+# else
+# define BOOST_PP_GREATER(x, y) BOOST_PP_GREATER_I(x, y)
+# define BOOST_PP_GREATER_I(x, y) BOOST_PP_LESS(y, x)
+# endif
+#
+# /* BOOST_PP_GREATER_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_LESS_D(d, y, x)
+# else
+# define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_GREATER_D_I(d, x, y)
+# define BOOST_PP_GREATER_D_I(d, x, y) BOOST_PP_LESS_D(d, y, x)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/greater_equal.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/greater_equal.hpp
new file mode 100644
index 0000000..beaeaff
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/greater_equal.hpp
@@ -0,0 +1,38 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_GREATER_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_LESS_EQUAL(y, x)
+# else
+# define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_GREATER_EQUAL_I(x, y)
+# define BOOST_PP_GREATER_EQUAL_I(x, y) BOOST_PP_LESS_EQUAL(y, x)
+# endif
+#
+# /* BOOST_PP_GREATER_EQUAL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
+# else
+# define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_GREATER_EQUAL_D_I(d, x, y)
+# define BOOST_PP_GREATER_EQUAL_D_I(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/less.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/less.hpp
new file mode 100644
index 0000000..d91ea3d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/less.hpp
@@ -0,0 +1,46 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_LESS */
+#
+# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
+# define BOOST_PP_LESS(x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL(x, y))
+# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
+# else
+# define BOOST_PP_LESS(x, y) BOOST_PP_LESS_I(x, y)
+# define BOOST_PP_LESS_I(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
+# endif
+#
+# /* BOOST_PP_LESS_D */
+#
+# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
+# define BOOST_PP_LESS_D(d, x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D(d, x, y))
+# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_D(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
+# else
+# define BOOST_PP_LESS_D(d, x, y) BOOST_PP_LESS_D_I(d, x, y)
+# define BOOST_PP_LESS_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/less_equal.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/less_equal.hpp
new file mode 100644
index 0000000..1302d54
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/less_equal.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_LESS_EQUAL_HPP
+#
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+#
+# /* BOOST_PP_LESS_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# else
+# define BOOST_PP_LESS_EQUAL(x, y) BOOST_PP_LESS_EQUAL_I(x, y)
+# define BOOST_PP_LESS_EQUAL_I(x, y) BOOST_PP_NOT(BOOST_PP_SUB(x, y))
+# endif
+#
+# /* BOOST_PP_LESS_EQUAL_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# else
+# define BOOST_PP_LESS_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D_I(d, x, y)
+# define BOOST_PP_LESS_EQUAL_D_I(d, x, y) BOOST_PP_NOT(BOOST_PP_SUB_D(d, x, y))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/not_equal.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/not_equal.hpp
new file mode 100644
index 0000000..b4b0eae
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/comparison/not_equal.hpp
@@ -0,0 +1,814 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_NOT_EQUAL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_I(x, y)
+# else
+# define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_OO((x, y))
+# define BOOST_PP_NOT_EQUAL_OO(par) BOOST_PP_NOT_EQUAL_I ## par
+# endif
+#
+# define BOOST_PP_NOT_EQUAL_I(x, y) BOOST_PP_CAT(BOOST_PP_NOT_EQUAL_CHECK_, BOOST_PP_NOT_EQUAL_ ## x(0, BOOST_PP_NOT_EQUAL_ ## y))
+#
+# /* BOOST_PP_NOT_EQUAL_D */
+#
+# define BOOST_PP_NOT_EQUAL_D(d, x, y) BOOST_PP_NOT_EQUAL(x, y)
+#
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_0(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_2(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_3(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_4(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_5(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_6(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_7(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_8(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_9(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_10(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_11(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_12(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_13(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_14(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_15(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_16(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_17(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_18(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_19(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_20(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_21(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_22(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_23(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_24(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_25(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_26(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_27(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_28(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_29(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_30(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_31(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_32(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_33(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_34(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_35(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_36(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_37(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_38(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_39(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_40(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_41(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_42(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_43(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_44(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_45(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_46(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_47(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_48(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_49(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_50(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_51(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_52(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_53(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_54(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_55(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_56(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_57(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_58(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_59(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_60(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_61(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_62(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_63(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_64(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_65(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_66(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_67(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_68(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_69(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_70(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_71(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_72(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_73(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_74(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_75(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_76(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_77(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_78(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_79(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_80(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_81(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_82(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_83(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_84(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_85(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_86(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_87(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_88(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_89(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_90(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_91(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_92(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_93(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_94(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_95(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_96(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_97(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_98(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_99(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_100(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_101(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_102(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_103(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_104(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_105(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_106(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_107(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_108(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_109(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_110(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_111(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_112(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_113(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_114(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_115(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_116(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_117(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_118(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_119(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_120(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_121(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_122(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_123(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_124(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_125(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_126(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_127(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_128(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_129(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_130(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_131(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_132(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_133(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_134(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_135(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_136(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_137(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_138(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_139(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_140(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_141(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_142(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_143(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_144(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_145(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_146(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_147(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_148(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_149(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_150(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_151(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_152(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_153(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_154(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_155(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_156(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_157(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_158(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_159(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_160(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_161(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_162(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_163(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_164(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_165(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_166(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_167(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_168(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_169(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_170(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_171(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_172(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_173(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_174(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_175(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_176(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_177(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_178(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_179(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_180(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_181(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_182(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_183(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_184(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_185(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_186(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_187(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_188(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_189(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_190(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_191(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_192(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_193(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_194(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_195(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_196(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_197(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_198(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_199(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_200(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_201(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_202(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_203(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_204(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_205(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_206(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_207(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_208(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_209(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_210(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_211(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_212(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_213(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_214(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_215(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_216(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_217(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_218(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_219(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_220(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_221(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_222(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_223(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_224(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_225(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_226(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_227(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_228(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_229(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_230(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_231(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_232(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_233(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_234(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_235(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_236(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_237(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_238(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_239(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_240(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_241(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_242(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_243(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_244(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_245(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_246(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_247(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_248(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_249(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_250(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_251(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_252(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_253(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_254(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_255(c, y) 0
+# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_256(c, y) 0
+#
+#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
+# else
+# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/config/config.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/config/config.hpp
new file mode 100644
index 0000000..cdb044c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/config/config.hpp
@@ -0,0 +1,106 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
+# define BOOST_PREPROCESSOR_CONFIG_CONFIG_HPP
+#
+# /* BOOST_PP_CONFIG_FLAGS */
+#
+# define BOOST_PP_CONFIG_STRICT() 0x0001
+# define BOOST_PP_CONFIG_IDEAL() 0x0002
+#
+# define BOOST_PP_CONFIG_MSVC() 0x0004
+# define BOOST_PP_CONFIG_MWCC() 0x0008
+# define BOOST_PP_CONFIG_BCC() 0x0010
+# define BOOST_PP_CONFIG_EDG() 0x0020
+# define BOOST_PP_CONFIG_DMC() 0x0040
+#
+# ifndef BOOST_PP_CONFIG_FLAGS
+# if defined(__GCCXML__) || defined(__WAVE__) || defined(__MWERKS__) && __MWERKS__ >= 0x3200
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__EDG__) || defined(__EDG_VERSION__)
+# if defined(_MSC_VER) && !defined(__clang__) && (defined(__INTELLISENSE__) || __EDG_VERSION__ >= 308)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
+# else
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_EDG() | BOOST_PP_CONFIG_STRICT())
+# endif
+# elif defined(_MSC_VER) && defined(__clang__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__MWERKS__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MWCC())
+# elif defined(__DMC__)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_DMC())
+# elif defined(__BORLANDC__) && __BORLANDC__ >= 0x581
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC())
+# elif defined(_MSC_VER)
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
+# else
+# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
+# endif
+# endif
+#
+# /* BOOST_PP_CONFIG_EXTENDED_LINE_INFO */
+#
+# ifndef BOOST_PP_CONFIG_EXTENDED_LINE_INFO
+# define BOOST_PP_CONFIG_EXTENDED_LINE_INFO 0
+# endif
+#
+# /* BOOST_PP_CONFIG_ERRORS */
+#
+# ifndef BOOST_PP_CONFIG_ERRORS
+# ifdef NDEBUG
+# define BOOST_PP_CONFIG_ERRORS 0
+# else
+# define BOOST_PP_CONFIG_ERRORS 1
+# endif
+# endif
+#
+# /* BOOST_PP_VARIADICS */
+#
+# define BOOST_PP_VARIADICS_MSVC 0
+# if !defined BOOST_PP_VARIADICS
+# /* variadic support explicitly disabled for all untested compilers */
+# if defined __GCCXML__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __PGI
+# define BOOST_PP_VARIADICS 0
+# elif defined(__CUDACC__)
+# define BOOST_PP_VARIADICS 1
+# elif defined(_MSC_VER) && defined(__clang__)
+# define BOOST_PP_VARIADICS 1
+# /* VC++ (C/C++) and Intel C++ Compiler >= 17.0 with MSVC */
+# elif defined _MSC_VER && _MSC_VER >= 1400 && (!defined __EDG__ || defined(__INTELLISENSE__) || defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700)
+# define BOOST_PP_VARIADICS 1
+# undef BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADICS_MSVC 1
+# /* Wave (C/C++), GCC (C++) */
+# elif defined __WAVE__ && __WAVE_HAS_VARIADICS__ || defined __GNUC__ && defined __GXX_EXPERIMENTAL_CXX0X__ && __GXX_EXPERIMENTAL_CXX0X__
+# define BOOST_PP_VARIADICS 1
+# /* EDG-based (C/C++), GCC (C), and unknown (C/C++) */
+# elif !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
+# define BOOST_PP_VARIADICS 1
+# else
+# define BOOST_PP_VARIADICS 0
+# endif
+# elif !BOOST_PP_VARIADICS + 1 < 2
+# undef BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADICS 1
+# if defined _MSC_VER && _MSC_VER >= 1400 && !defined(__clang__) && (defined(__INTELLISENSE__) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI))
+# undef BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADICS_MSVC 1
+# endif
+# else
+# undef BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADICS 0
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/config/limits.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/config/limits.hpp
new file mode 100644
index 0000000..f312f29
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/config/limits.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
+# define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
+#
+# define BOOST_PP_LIMIT_MAG 256
+# define BOOST_PP_LIMIT_TUPLE 64
+# define BOOST_PP_LIMIT_DIM 3
+# define BOOST_PP_LIMIT_REPEAT 256
+# define BOOST_PP_LIMIT_WHILE 256
+# define BOOST_PP_LIMIT_FOR 256
+# define BOOST_PP_LIMIT_ITERATION 256
+# define BOOST_PP_LIMIT_ITERATION_DIM 3
+# define BOOST_PP_LIMIT_SEQ 256
+# define BOOST_PP_LIMIT_SLOT_SIG 10
+# define BOOST_PP_LIMIT_SLOT_COUNT 5
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control.hpp
new file mode 100644
index 0000000..809fbd9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_HPP
+# define BOOST_PREPROCESSOR_CONTROL_HPP
+#
+# include <boost/preprocessor/control/deduce_d.hpp>
+# include <boost/preprocessor/control/expr_if.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/control/while.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/deduce_d.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/deduce_d.hpp
new file mode 100644
index 0000000..a0276b0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/deduce_d.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
+#
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_DEDUCE_D */
+#
+# define BOOST_PP_DEDUCE_D() BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/dmc/while.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/dmc/while.hpp
new file mode 100644
index 0000000..95c3135
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/dmc/while.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p##(2, s)), p, o, s)
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p##(3, s)), p, o, s)
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p##(4, s)), p, o, s)
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p##(5, s)), p, o, s)
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p##(6, s)), p, o, s)
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p##(7, s)), p, o, s)
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p##(8, s)), p, o, s)
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p##(9, s)), p, o, s)
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p##(10, s)), p, o, s)
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p##(11, s)), p, o, s)
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p##(12, s)), p, o, s)
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p##(13, s)), p, o, s)
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p##(14, s)), p, o, s)
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p##(15, s)), p, o, s)
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p##(16, s)), p, o, s)
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p##(17, s)), p, o, s)
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p##(18, s)), p, o, s)
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p##(19, s)), p, o, s)
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p##(20, s)), p, o, s)
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p##(21, s)), p, o, s)
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p##(22, s)), p, o, s)
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p##(23, s)), p, o, s)
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p##(24, s)), p, o, s)
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p##(25, s)), p, o, s)
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p##(26, s)), p, o, s)
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p##(27, s)), p, o, s)
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p##(28, s)), p, o, s)
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p##(29, s)), p, o, s)
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p##(30, s)), p, o, s)
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p##(31, s)), p, o, s)
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p##(32, s)), p, o, s)
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p##(33, s)), p, o, s)
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p##(34, s)), p, o, s)
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p##(35, s)), p, o, s)
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p##(36, s)), p, o, s)
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p##(37, s)), p, o, s)
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p##(38, s)), p, o, s)
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p##(39, s)), p, o, s)
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p##(40, s)), p, o, s)
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p##(41, s)), p, o, s)
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p##(42, s)), p, o, s)
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p##(43, s)), p, o, s)
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p##(44, s)), p, o, s)
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p##(45, s)), p, o, s)
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p##(46, s)), p, o, s)
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p##(47, s)), p, o, s)
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p##(48, s)), p, o, s)
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p##(49, s)), p, o, s)
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p##(50, s)), p, o, s)
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p##(51, s)), p, o, s)
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p##(52, s)), p, o, s)
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p##(53, s)), p, o, s)
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p##(54, s)), p, o, s)
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p##(55, s)), p, o, s)
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p##(56, s)), p, o, s)
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p##(57, s)), p, o, s)
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p##(58, s)), p, o, s)
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p##(59, s)), p, o, s)
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p##(60, s)), p, o, s)
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p##(61, s)), p, o, s)
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p##(62, s)), p, o, s)
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p##(63, s)), p, o, s)
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p##(64, s)), p, o, s)
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p##(65, s)), p, o, s)
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p##(66, s)), p, o, s)
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p##(67, s)), p, o, s)
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p##(68, s)), p, o, s)
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p##(69, s)), p, o, s)
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p##(70, s)), p, o, s)
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p##(71, s)), p, o, s)
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p##(72, s)), p, o, s)
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p##(73, s)), p, o, s)
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p##(74, s)), p, o, s)
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p##(75, s)), p, o, s)
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p##(76, s)), p, o, s)
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p##(77, s)), p, o, s)
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p##(78, s)), p, o, s)
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p##(79, s)), p, o, s)
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p##(80, s)), p, o, s)
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p##(81, s)), p, o, s)
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p##(82, s)), p, o, s)
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p##(83, s)), p, o, s)
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p##(84, s)), p, o, s)
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p##(85, s)), p, o, s)
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p##(86, s)), p, o, s)
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p##(87, s)), p, o, s)
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p##(88, s)), p, o, s)
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p##(89, s)), p, o, s)
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p##(90, s)), p, o, s)
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p##(91, s)), p, o, s)
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p##(92, s)), p, o, s)
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p##(93, s)), p, o, s)
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p##(94, s)), p, o, s)
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p##(95, s)), p, o, s)
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p##(96, s)), p, o, s)
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p##(97, s)), p, o, s)
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p##(98, s)), p, o, s)
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p##(99, s)), p, o, s)
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p##(100, s)), p, o, s)
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p##(101, s)), p, o, s)
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p##(102, s)), p, o, s)
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p##(103, s)), p, o, s)
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p##(104, s)), p, o, s)
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p##(105, s)), p, o, s)
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p##(106, s)), p, o, s)
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p##(107, s)), p, o, s)
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p##(108, s)), p, o, s)
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p##(109, s)), p, o, s)
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p##(110, s)), p, o, s)
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p##(111, s)), p, o, s)
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p##(112, s)), p, o, s)
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p##(113, s)), p, o, s)
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p##(114, s)), p, o, s)
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p##(115, s)), p, o, s)
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p##(116, s)), p, o, s)
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p##(117, s)), p, o, s)
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p##(118, s)), p, o, s)
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p##(119, s)), p, o, s)
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p##(120, s)), p, o, s)
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p##(121, s)), p, o, s)
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p##(122, s)), p, o, s)
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p##(123, s)), p, o, s)
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p##(124, s)), p, o, s)
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p##(125, s)), p, o, s)
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p##(126, s)), p, o, s)
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p##(127, s)), p, o, s)
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p##(128, s)), p, o, s)
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p##(129, s)), p, o, s)
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p##(130, s)), p, o, s)
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p##(131, s)), p, o, s)
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p##(132, s)), p, o, s)
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p##(133, s)), p, o, s)
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p##(134, s)), p, o, s)
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p##(135, s)), p, o, s)
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p##(136, s)), p, o, s)
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p##(137, s)), p, o, s)
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p##(138, s)), p, o, s)
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p##(139, s)), p, o, s)
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p##(140, s)), p, o, s)
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p##(141, s)), p, o, s)
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p##(142, s)), p, o, s)
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p##(143, s)), p, o, s)
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p##(144, s)), p, o, s)
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p##(145, s)), p, o, s)
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p##(146, s)), p, o, s)
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p##(147, s)), p, o, s)
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p##(148, s)), p, o, s)
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p##(149, s)), p, o, s)
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p##(150, s)), p, o, s)
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p##(151, s)), p, o, s)
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p##(152, s)), p, o, s)
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p##(153, s)), p, o, s)
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p##(154, s)), p, o, s)
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p##(155, s)), p, o, s)
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p##(156, s)), p, o, s)
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p##(157, s)), p, o, s)
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p##(158, s)), p, o, s)
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p##(159, s)), p, o, s)
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p##(160, s)), p, o, s)
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p##(161, s)), p, o, s)
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p##(162, s)), p, o, s)
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p##(163, s)), p, o, s)
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p##(164, s)), p, o, s)
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p##(165, s)), p, o, s)
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p##(166, s)), p, o, s)
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p##(167, s)), p, o, s)
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p##(168, s)), p, o, s)
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p##(169, s)), p, o, s)
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p##(170, s)), p, o, s)
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p##(171, s)), p, o, s)
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p##(172, s)), p, o, s)
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p##(173, s)), p, o, s)
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p##(174, s)), p, o, s)
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p##(175, s)), p, o, s)
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p##(176, s)), p, o, s)
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p##(177, s)), p, o, s)
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p##(178, s)), p, o, s)
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p##(179, s)), p, o, s)
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p##(180, s)), p, o, s)
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p##(181, s)), p, o, s)
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p##(182, s)), p, o, s)
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p##(183, s)), p, o, s)
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p##(184, s)), p, o, s)
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p##(185, s)), p, o, s)
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p##(186, s)), p, o, s)
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p##(187, s)), p, o, s)
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p##(188, s)), p, o, s)
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p##(189, s)), p, o, s)
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p##(190, s)), p, o, s)
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p##(191, s)), p, o, s)
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p##(192, s)), p, o, s)
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p##(193, s)), p, o, s)
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p##(194, s)), p, o, s)
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p##(195, s)), p, o, s)
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p##(196, s)), p, o, s)
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p##(197, s)), p, o, s)
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p##(198, s)), p, o, s)
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p##(199, s)), p, o, s)
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p##(200, s)), p, o, s)
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p##(201, s)), p, o, s)
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p##(202, s)), p, o, s)
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p##(203, s)), p, o, s)
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p##(204, s)), p, o, s)
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p##(205, s)), p, o, s)
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p##(206, s)), p, o, s)
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p##(207, s)), p, o, s)
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p##(208, s)), p, o, s)
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p##(209, s)), p, o, s)
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p##(210, s)), p, o, s)
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p##(211, s)), p, o, s)
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p##(212, s)), p, o, s)
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p##(213, s)), p, o, s)
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p##(214, s)), p, o, s)
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p##(215, s)), p, o, s)
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p##(216, s)), p, o, s)
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p##(217, s)), p, o, s)
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p##(218, s)), p, o, s)
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p##(219, s)), p, o, s)
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p##(220, s)), p, o, s)
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p##(221, s)), p, o, s)
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p##(222, s)), p, o, s)
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p##(223, s)), p, o, s)
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p##(224, s)), p, o, s)
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p##(225, s)), p, o, s)
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p##(226, s)), p, o, s)
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p##(227, s)), p, o, s)
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p##(228, s)), p, o, s)
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p##(229, s)), p, o, s)
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p##(230, s)), p, o, s)
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p##(231, s)), p, o, s)
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p##(232, s)), p, o, s)
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p##(233, s)), p, o, s)
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p##(234, s)), p, o, s)
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p##(235, s)), p, o, s)
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p##(236, s)), p, o, s)
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p##(237, s)), p, o, s)
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p##(238, s)), p, o, s)
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p##(239, s)), p, o, s)
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p##(240, s)), p, o, s)
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p##(241, s)), p, o, s)
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p##(242, s)), p, o, s)
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p##(243, s)), p, o, s)
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p##(244, s)), p, o, s)
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p##(245, s)), p, o, s)
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p##(246, s)), p, o, s)
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p##(247, s)), p, o, s)
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p##(248, s)), p, o, s)
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p##(249, s)), p, o, s)
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p##(250, s)), p, o, s)
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p##(251, s)), p, o, s)
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p##(252, s)), p, o, s)
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p##(253, s)), p, o, s)
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p##(254, s)), p, o, s)
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p##(255, s)), p, o, s)
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p##(256, s)), p, o, s)
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p##(257, s)), p, o, s)
+#
+# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(2, s))
+# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(3, s))
+# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(4, s))
+# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(5, s))
+# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(6, s))
+# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(7, s))
+# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(8, s))
+# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(9, s))
+# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(10, s))
+# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(11, s))
+# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(12, s))
+# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(13, s))
+# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(14, s))
+# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(15, s))
+# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(16, s))
+# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(17, s))
+# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(18, s))
+# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(19, s))
+# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(20, s))
+# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(21, s))
+# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(22, s))
+# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(23, s))
+# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(24, s))
+# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(25, s))
+# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(26, s))
+# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(27, s))
+# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(28, s))
+# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(29, s))
+# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(30, s))
+# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(31, s))
+# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(32, s))
+# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(33, s))
+# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(34, s))
+# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(35, s))
+# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(36, s))
+# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(37, s))
+# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(38, s))
+# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(39, s))
+# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(40, s))
+# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(41, s))
+# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(42, s))
+# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(43, s))
+# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(44, s))
+# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(45, s))
+# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(46, s))
+# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(47, s))
+# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(48, s))
+# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(49, s))
+# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(50, s))
+# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(51, s))
+# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(52, s))
+# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(53, s))
+# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(54, s))
+# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(55, s))
+# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(56, s))
+# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(57, s))
+# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(58, s))
+# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(59, s))
+# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(60, s))
+# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(61, s))
+# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(62, s))
+# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(63, s))
+# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(64, s))
+# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(65, s))
+# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(66, s))
+# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(67, s))
+# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(68, s))
+# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(69, s))
+# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(70, s))
+# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(71, s))
+# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(72, s))
+# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(73, s))
+# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(74, s))
+# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(75, s))
+# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(76, s))
+# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(77, s))
+# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(78, s))
+# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(79, s))
+# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(80, s))
+# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(81, s))
+# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(82, s))
+# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(83, s))
+# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(84, s))
+# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(85, s))
+# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(86, s))
+# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(87, s))
+# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(88, s))
+# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(89, s))
+# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(90, s))
+# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(91, s))
+# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(92, s))
+# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(93, s))
+# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(94, s))
+# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(95, s))
+# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(96, s))
+# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(97, s))
+# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(98, s))
+# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(99, s))
+# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(100, s))
+# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(101, s))
+# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(102, s))
+# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(103, s))
+# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(104, s))
+# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(105, s))
+# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(106, s))
+# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(107, s))
+# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(108, s))
+# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(109, s))
+# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(110, s))
+# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(111, s))
+# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(112, s))
+# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(113, s))
+# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(114, s))
+# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(115, s))
+# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(116, s))
+# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(117, s))
+# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(118, s))
+# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(119, s))
+# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(120, s))
+# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(121, s))
+# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(122, s))
+# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(123, s))
+# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(124, s))
+# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(125, s))
+# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(126, s))
+# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(127, s))
+# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(128, s))
+# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(129, s))
+# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(130, s))
+# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(131, s))
+# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(132, s))
+# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(133, s))
+# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(134, s))
+# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(135, s))
+# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(136, s))
+# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(137, s))
+# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(138, s))
+# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(139, s))
+# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(140, s))
+# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(141, s))
+# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(142, s))
+# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(143, s))
+# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(144, s))
+# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(145, s))
+# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(146, s))
+# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(147, s))
+# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(148, s))
+# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(149, s))
+# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(150, s))
+# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(151, s))
+# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(152, s))
+# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(153, s))
+# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(154, s))
+# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(155, s))
+# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(156, s))
+# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(157, s))
+# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(158, s))
+# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(159, s))
+# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(160, s))
+# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(161, s))
+# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(162, s))
+# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(163, s))
+# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(164, s))
+# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(165, s))
+# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(166, s))
+# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(167, s))
+# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(168, s))
+# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(169, s))
+# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(170, s))
+# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(171, s))
+# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(172, s))
+# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(173, s))
+# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(174, s))
+# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(175, s))
+# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(176, s))
+# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(177, s))
+# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(178, s))
+# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(179, s))
+# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(180, s))
+# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(181, s))
+# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(182, s))
+# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(183, s))
+# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(184, s))
+# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(185, s))
+# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(186, s))
+# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(187, s))
+# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(188, s))
+# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(189, s))
+# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(190, s))
+# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(191, s))
+# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(192, s))
+# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(193, s))
+# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(194, s))
+# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(195, s))
+# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(196, s))
+# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(197, s))
+# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(198, s))
+# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(199, s))
+# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(200, s))
+# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(201, s))
+# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(202, s))
+# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(203, s))
+# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(204, s))
+# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(205, s))
+# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(206, s))
+# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(207, s))
+# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(208, s))
+# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(209, s))
+# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(210, s))
+# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(211, s))
+# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(212, s))
+# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(213, s))
+# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(214, s))
+# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(215, s))
+# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(216, s))
+# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(217, s))
+# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(218, s))
+# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(219, s))
+# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(220, s))
+# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(221, s))
+# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(222, s))
+# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(223, s))
+# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(224, s))
+# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(225, s))
+# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(226, s))
+# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(227, s))
+# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(228, s))
+# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(229, s))
+# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(230, s))
+# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(231, s))
+# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(232, s))
+# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(233, s))
+# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(234, s))
+# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(235, s))
+# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(236, s))
+# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(237, s))
+# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(238, s))
+# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(239, s))
+# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(240, s))
+# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(241, s))
+# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(242, s))
+# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(243, s))
+# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(244, s))
+# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(245, s))
+# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(246, s))
+# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(247, s))
+# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(248, s))
+# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(249, s))
+# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(250, s))
+# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(251, s))
+# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(252, s))
+# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(253, s))
+# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(254, s))
+# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(255, s))
+# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(256, s))
+# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(257, s))
+#
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/edg/while.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/edg/while.hpp
new file mode 100644
index 0000000..ce28eb2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/edg/while.hpp
@@ -0,0 +1,534 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_I(p, o, s)
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_I(p, o, s)
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_I(p, o, s)
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_I(p, o, s)
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_I(p, o, s)
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_I(p, o, s)
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_I(p, o, s)
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_I(p, o, s)
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_I(p, o, s)
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_I(p, o, s)
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_I(p, o, s)
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_I(p, o, s)
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_I(p, o, s)
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_I(p, o, s)
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_I(p, o, s)
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_I(p, o, s)
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_I(p, o, s)
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_I(p, o, s)
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_I(p, o, s)
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_I(p, o, s)
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_I(p, o, s)
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_I(p, o, s)
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_I(p, o, s)
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_I(p, o, s)
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_I(p, o, s)
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_I(p, o, s)
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_I(p, o, s)
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_I(p, o, s)
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_I(p, o, s)
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_I(p, o, s)
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_I(p, o, s)
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_I(p, o, s)
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_I(p, o, s)
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_I(p, o, s)
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_I(p, o, s)
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_I(p, o, s)
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_I(p, o, s)
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_I(p, o, s)
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_I(p, o, s)
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_I(p, o, s)
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_I(p, o, s)
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_I(p, o, s)
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_I(p, o, s)
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_I(p, o, s)
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_I(p, o, s)
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_I(p, o, s)
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_I(p, o, s)
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_I(p, o, s)
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_I(p, o, s)
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_I(p, o, s)
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_I(p, o, s)
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_I(p, o, s)
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_I(p, o, s)
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_I(p, o, s)
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_I(p, o, s)
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_I(p, o, s)
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_I(p, o, s)
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_I(p, o, s)
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_I(p, o, s)
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_I(p, o, s)
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_I(p, o, s)
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_I(p, o, s)
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_I(p, o, s)
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_I(p, o, s)
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_I(p, o, s)
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_I(p, o, s)
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_I(p, o, s)
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_I(p, o, s)
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_I(p, o, s)
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_I(p, o, s)
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_I(p, o, s)
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_I(p, o, s)
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_I(p, o, s)
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_I(p, o, s)
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_I(p, o, s)
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_I(p, o, s)
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_I(p, o, s)
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_I(p, o, s)
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_I(p, o, s)
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_I(p, o, s)
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_I(p, o, s)
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_I(p, o, s)
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_I(p, o, s)
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_I(p, o, s)
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_I(p, o, s)
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_I(p, o, s)
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_I(p, o, s)
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_I(p, o, s)
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_I(p, o, s)
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_I(p, o, s)
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_I(p, o, s)
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_I(p, o, s)
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_I(p, o, s)
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_I(p, o, s)
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_I(p, o, s)
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_I(p, o, s)
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_I(p, o, s)
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_I(p, o, s)
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_I(p, o, s)
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_I(p, o, s)
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_I(p, o, s)
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_I(p, o, s)
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_I(p, o, s)
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_I(p, o, s)
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_I(p, o, s)
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_I(p, o, s)
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_I(p, o, s)
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_I(p, o, s)
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_I(p, o, s)
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_I(p, o, s)
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_I(p, o, s)
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_I(p, o, s)
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_I(p, o, s)
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_I(p, o, s)
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_I(p, o, s)
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_I(p, o, s)
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_I(p, o, s)
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_I(p, o, s)
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_I(p, o, s)
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_I(p, o, s)
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_I(p, o, s)
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_I(p, o, s)
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_I(p, o, s)
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_I(p, o, s)
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_I(p, o, s)
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_I(p, o, s)
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_I(p, o, s)
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_I(p, o, s)
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_I(p, o, s)
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_I(p, o, s)
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_I(p, o, s)
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_I(p, o, s)
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_I(p, o, s)
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_I(p, o, s)
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_I(p, o, s)
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_I(p, o, s)
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_I(p, o, s)
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_I(p, o, s)
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_I(p, o, s)
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_I(p, o, s)
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_I(p, o, s)
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_I(p, o, s)
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_I(p, o, s)
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_I(p, o, s)
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_I(p, o, s)
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_I(p, o, s)
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_I(p, o, s)
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_I(p, o, s)
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_I(p, o, s)
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_I(p, o, s)
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_I(p, o, s)
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_I(p, o, s)
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_I(p, o, s)
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_I(p, o, s)
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_I(p, o, s)
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_I(p, o, s)
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_I(p, o, s)
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_I(p, o, s)
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_I(p, o, s)
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_I(p, o, s)
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_I(p, o, s)
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_I(p, o, s)
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_I(p, o, s)
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_I(p, o, s)
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_I(p, o, s)
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_I(p, o, s)
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_I(p, o, s)
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_I(p, o, s)
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_I(p, o, s)
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_I(p, o, s)
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_I(p, o, s)
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_I(p, o, s)
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_I(p, o, s)
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_I(p, o, s)
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_I(p, o, s)
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_I(p, o, s)
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_I(p, o, s)
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_I(p, o, s)
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_I(p, o, s)
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_I(p, o, s)
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_I(p, o, s)
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_I(p, o, s)
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_I(p, o, s)
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_I(p, o, s)
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_I(p, o, s)
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_I(p, o, s)
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_I(p, o, s)
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_I(p, o, s)
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_I(p, o, s)
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_I(p, o, s)
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_I(p, o, s)
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_I(p, o, s)
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_I(p, o, s)
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_I(p, o, s)
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_I(p, o, s)
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_I(p, o, s)
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_I(p, o, s)
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_I(p, o, s)
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_I(p, o, s)
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_I(p, o, s)
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_I(p, o, s)
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_I(p, o, s)
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_I(p, o, s)
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_I(p, o, s)
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_I(p, o, s)
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_I(p, o, s)
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_I(p, o, s)
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_I(p, o, s)
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_I(p, o, s)
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_I(p, o, s)
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_I(p, o, s)
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_I(p, o, s)
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_I(p, o, s)
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_I(p, o, s)
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_I(p, o, s)
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_I(p, o, s)
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_I(p, o, s)
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_I(p, o, s)
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_I(p, o, s)
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_I(p, o, s)
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_I(p, o, s)
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_I(p, o, s)
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_I(p, o, s)
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_I(p, o, s)
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_I(p, o, s)
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_I(p, o, s)
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_I(p, o, s)
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_I(p, o, s)
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_I(p, o, s)
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_I(p, o, s)
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_I(p, o, s)
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_I(p, o, s)
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_I(p, o, s)
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_I(p, o, s)
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_I(p, o, s)
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_I(p, o, s)
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_I(p, o, s)
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_I(p, o, s)
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_I(p, o, s)
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_I(p, o, s)
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_I(p, o, s)
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_I(p, o, s)
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_I(p, o, s)
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_I(p, o, s)
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_I(p, o, s)
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_I(p, o, s)
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_I(p, o, s)
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_I(p, o, s)
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_I(p, o, s)
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_I(p, o, s)
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_I(p, o, s)
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_I(p, o, s)
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_I(p, o, s)
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_I(p, o, s)
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_I(p, o, s)
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_I(p, o, s)
+#
+# define BOOST_PP_WHILE_1_I(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
+# define BOOST_PP_WHILE_2_I(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
+# define BOOST_PP_WHILE_3_I(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
+# define BOOST_PP_WHILE_4_I(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
+# define BOOST_PP_WHILE_5_I(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
+# define BOOST_PP_WHILE_6_I(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
+# define BOOST_PP_WHILE_7_I(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
+# define BOOST_PP_WHILE_8_I(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
+# define BOOST_PP_WHILE_9_I(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
+# define BOOST_PP_WHILE_10_I(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
+# define BOOST_PP_WHILE_11_I(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
+# define BOOST_PP_WHILE_12_I(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
+# define BOOST_PP_WHILE_13_I(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
+# define BOOST_PP_WHILE_14_I(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
+# define BOOST_PP_WHILE_15_I(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
+# define BOOST_PP_WHILE_16_I(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
+# define BOOST_PP_WHILE_17_I(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
+# define BOOST_PP_WHILE_18_I(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
+# define BOOST_PP_WHILE_19_I(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
+# define BOOST_PP_WHILE_20_I(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
+# define BOOST_PP_WHILE_21_I(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
+# define BOOST_PP_WHILE_22_I(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
+# define BOOST_PP_WHILE_23_I(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
+# define BOOST_PP_WHILE_24_I(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
+# define BOOST_PP_WHILE_25_I(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
+# define BOOST_PP_WHILE_26_I(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
+# define BOOST_PP_WHILE_27_I(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
+# define BOOST_PP_WHILE_28_I(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
+# define BOOST_PP_WHILE_29_I(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
+# define BOOST_PP_WHILE_30_I(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
+# define BOOST_PP_WHILE_31_I(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
+# define BOOST_PP_WHILE_32_I(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
+# define BOOST_PP_WHILE_33_I(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
+# define BOOST_PP_WHILE_34_I(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
+# define BOOST_PP_WHILE_35_I(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
+# define BOOST_PP_WHILE_36_I(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
+# define BOOST_PP_WHILE_37_I(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
+# define BOOST_PP_WHILE_38_I(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
+# define BOOST_PP_WHILE_39_I(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
+# define BOOST_PP_WHILE_40_I(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
+# define BOOST_PP_WHILE_41_I(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
+# define BOOST_PP_WHILE_42_I(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
+# define BOOST_PP_WHILE_43_I(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
+# define BOOST_PP_WHILE_44_I(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
+# define BOOST_PP_WHILE_45_I(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
+# define BOOST_PP_WHILE_46_I(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
+# define BOOST_PP_WHILE_47_I(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
+# define BOOST_PP_WHILE_48_I(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
+# define BOOST_PP_WHILE_49_I(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
+# define BOOST_PP_WHILE_50_I(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
+# define BOOST_PP_WHILE_51_I(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
+# define BOOST_PP_WHILE_52_I(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
+# define BOOST_PP_WHILE_53_I(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
+# define BOOST_PP_WHILE_54_I(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
+# define BOOST_PP_WHILE_55_I(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
+# define BOOST_PP_WHILE_56_I(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
+# define BOOST_PP_WHILE_57_I(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
+# define BOOST_PP_WHILE_58_I(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
+# define BOOST_PP_WHILE_59_I(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
+# define BOOST_PP_WHILE_60_I(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
+# define BOOST_PP_WHILE_61_I(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
+# define BOOST_PP_WHILE_62_I(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
+# define BOOST_PP_WHILE_63_I(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
+# define BOOST_PP_WHILE_64_I(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
+# define BOOST_PP_WHILE_65_I(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
+# define BOOST_PP_WHILE_66_I(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
+# define BOOST_PP_WHILE_67_I(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
+# define BOOST_PP_WHILE_68_I(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
+# define BOOST_PP_WHILE_69_I(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
+# define BOOST_PP_WHILE_70_I(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
+# define BOOST_PP_WHILE_71_I(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
+# define BOOST_PP_WHILE_72_I(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
+# define BOOST_PP_WHILE_73_I(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
+# define BOOST_PP_WHILE_74_I(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
+# define BOOST_PP_WHILE_75_I(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
+# define BOOST_PP_WHILE_76_I(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
+# define BOOST_PP_WHILE_77_I(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
+# define BOOST_PP_WHILE_78_I(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
+# define BOOST_PP_WHILE_79_I(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
+# define BOOST_PP_WHILE_80_I(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
+# define BOOST_PP_WHILE_81_I(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
+# define BOOST_PP_WHILE_82_I(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
+# define BOOST_PP_WHILE_83_I(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
+# define BOOST_PP_WHILE_84_I(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
+# define BOOST_PP_WHILE_85_I(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
+# define BOOST_PP_WHILE_86_I(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
+# define BOOST_PP_WHILE_87_I(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
+# define BOOST_PP_WHILE_88_I(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
+# define BOOST_PP_WHILE_89_I(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
+# define BOOST_PP_WHILE_90_I(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
+# define BOOST_PP_WHILE_91_I(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
+# define BOOST_PP_WHILE_92_I(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
+# define BOOST_PP_WHILE_93_I(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
+# define BOOST_PP_WHILE_94_I(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
+# define BOOST_PP_WHILE_95_I(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
+# define BOOST_PP_WHILE_96_I(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
+# define BOOST_PP_WHILE_97_I(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
+# define BOOST_PP_WHILE_98_I(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
+# define BOOST_PP_WHILE_99_I(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
+# define BOOST_PP_WHILE_100_I(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
+# define BOOST_PP_WHILE_101_I(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
+# define BOOST_PP_WHILE_102_I(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
+# define BOOST_PP_WHILE_103_I(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
+# define BOOST_PP_WHILE_104_I(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
+# define BOOST_PP_WHILE_105_I(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
+# define BOOST_PP_WHILE_106_I(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
+# define BOOST_PP_WHILE_107_I(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
+# define BOOST_PP_WHILE_108_I(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
+# define BOOST_PP_WHILE_109_I(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
+# define BOOST_PP_WHILE_110_I(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
+# define BOOST_PP_WHILE_111_I(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
+# define BOOST_PP_WHILE_112_I(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
+# define BOOST_PP_WHILE_113_I(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
+# define BOOST_PP_WHILE_114_I(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
+# define BOOST_PP_WHILE_115_I(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
+# define BOOST_PP_WHILE_116_I(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
+# define BOOST_PP_WHILE_117_I(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
+# define BOOST_PP_WHILE_118_I(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
+# define BOOST_PP_WHILE_119_I(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
+# define BOOST_PP_WHILE_120_I(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
+# define BOOST_PP_WHILE_121_I(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
+# define BOOST_PP_WHILE_122_I(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
+# define BOOST_PP_WHILE_123_I(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
+# define BOOST_PP_WHILE_124_I(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
+# define BOOST_PP_WHILE_125_I(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
+# define BOOST_PP_WHILE_126_I(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
+# define BOOST_PP_WHILE_127_I(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
+# define BOOST_PP_WHILE_128_I(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
+# define BOOST_PP_WHILE_129_I(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
+# define BOOST_PP_WHILE_130_I(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
+# define BOOST_PP_WHILE_131_I(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
+# define BOOST_PP_WHILE_132_I(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
+# define BOOST_PP_WHILE_133_I(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
+# define BOOST_PP_WHILE_134_I(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
+# define BOOST_PP_WHILE_135_I(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
+# define BOOST_PP_WHILE_136_I(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
+# define BOOST_PP_WHILE_137_I(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
+# define BOOST_PP_WHILE_138_I(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
+# define BOOST_PP_WHILE_139_I(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
+# define BOOST_PP_WHILE_140_I(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
+# define BOOST_PP_WHILE_141_I(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
+# define BOOST_PP_WHILE_142_I(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
+# define BOOST_PP_WHILE_143_I(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
+# define BOOST_PP_WHILE_144_I(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
+# define BOOST_PP_WHILE_145_I(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
+# define BOOST_PP_WHILE_146_I(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
+# define BOOST_PP_WHILE_147_I(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
+# define BOOST_PP_WHILE_148_I(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
+# define BOOST_PP_WHILE_149_I(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
+# define BOOST_PP_WHILE_150_I(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
+# define BOOST_PP_WHILE_151_I(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
+# define BOOST_PP_WHILE_152_I(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
+# define BOOST_PP_WHILE_153_I(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
+# define BOOST_PP_WHILE_154_I(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
+# define BOOST_PP_WHILE_155_I(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
+# define BOOST_PP_WHILE_156_I(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
+# define BOOST_PP_WHILE_157_I(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
+# define BOOST_PP_WHILE_158_I(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
+# define BOOST_PP_WHILE_159_I(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
+# define BOOST_PP_WHILE_160_I(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
+# define BOOST_PP_WHILE_161_I(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
+# define BOOST_PP_WHILE_162_I(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
+# define BOOST_PP_WHILE_163_I(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
+# define BOOST_PP_WHILE_164_I(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
+# define BOOST_PP_WHILE_165_I(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
+# define BOOST_PP_WHILE_166_I(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
+# define BOOST_PP_WHILE_167_I(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
+# define BOOST_PP_WHILE_168_I(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
+# define BOOST_PP_WHILE_169_I(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
+# define BOOST_PP_WHILE_170_I(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
+# define BOOST_PP_WHILE_171_I(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
+# define BOOST_PP_WHILE_172_I(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
+# define BOOST_PP_WHILE_173_I(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
+# define BOOST_PP_WHILE_174_I(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
+# define BOOST_PP_WHILE_175_I(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
+# define BOOST_PP_WHILE_176_I(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
+# define BOOST_PP_WHILE_177_I(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
+# define BOOST_PP_WHILE_178_I(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
+# define BOOST_PP_WHILE_179_I(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
+# define BOOST_PP_WHILE_180_I(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
+# define BOOST_PP_WHILE_181_I(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
+# define BOOST_PP_WHILE_182_I(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
+# define BOOST_PP_WHILE_183_I(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
+# define BOOST_PP_WHILE_184_I(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
+# define BOOST_PP_WHILE_185_I(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
+# define BOOST_PP_WHILE_186_I(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
+# define BOOST_PP_WHILE_187_I(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
+# define BOOST_PP_WHILE_188_I(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
+# define BOOST_PP_WHILE_189_I(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
+# define BOOST_PP_WHILE_190_I(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
+# define BOOST_PP_WHILE_191_I(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
+# define BOOST_PP_WHILE_192_I(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
+# define BOOST_PP_WHILE_193_I(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
+# define BOOST_PP_WHILE_194_I(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
+# define BOOST_PP_WHILE_195_I(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
+# define BOOST_PP_WHILE_196_I(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
+# define BOOST_PP_WHILE_197_I(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
+# define BOOST_PP_WHILE_198_I(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
+# define BOOST_PP_WHILE_199_I(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
+# define BOOST_PP_WHILE_200_I(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
+# define BOOST_PP_WHILE_201_I(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
+# define BOOST_PP_WHILE_202_I(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
+# define BOOST_PP_WHILE_203_I(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
+# define BOOST_PP_WHILE_204_I(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
+# define BOOST_PP_WHILE_205_I(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
+# define BOOST_PP_WHILE_206_I(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
+# define BOOST_PP_WHILE_207_I(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
+# define BOOST_PP_WHILE_208_I(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
+# define BOOST_PP_WHILE_209_I(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
+# define BOOST_PP_WHILE_210_I(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
+# define BOOST_PP_WHILE_211_I(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
+# define BOOST_PP_WHILE_212_I(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
+# define BOOST_PP_WHILE_213_I(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
+# define BOOST_PP_WHILE_214_I(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
+# define BOOST_PP_WHILE_215_I(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
+# define BOOST_PP_WHILE_216_I(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
+# define BOOST_PP_WHILE_217_I(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
+# define BOOST_PP_WHILE_218_I(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
+# define BOOST_PP_WHILE_219_I(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
+# define BOOST_PP_WHILE_220_I(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
+# define BOOST_PP_WHILE_221_I(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
+# define BOOST_PP_WHILE_222_I(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
+# define BOOST_PP_WHILE_223_I(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
+# define BOOST_PP_WHILE_224_I(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
+# define BOOST_PP_WHILE_225_I(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
+# define BOOST_PP_WHILE_226_I(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
+# define BOOST_PP_WHILE_227_I(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
+# define BOOST_PP_WHILE_228_I(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
+# define BOOST_PP_WHILE_229_I(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
+# define BOOST_PP_WHILE_230_I(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
+# define BOOST_PP_WHILE_231_I(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
+# define BOOST_PP_WHILE_232_I(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
+# define BOOST_PP_WHILE_233_I(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
+# define BOOST_PP_WHILE_234_I(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
+# define BOOST_PP_WHILE_235_I(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
+# define BOOST_PP_WHILE_236_I(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
+# define BOOST_PP_WHILE_237_I(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
+# define BOOST_PP_WHILE_238_I(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
+# define BOOST_PP_WHILE_239_I(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
+# define BOOST_PP_WHILE_240_I(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
+# define BOOST_PP_WHILE_241_I(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
+# define BOOST_PP_WHILE_242_I(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
+# define BOOST_PP_WHILE_243_I(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
+# define BOOST_PP_WHILE_244_I(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
+# define BOOST_PP_WHILE_245_I(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
+# define BOOST_PP_WHILE_246_I(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
+# define BOOST_PP_WHILE_247_I(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
+# define BOOST_PP_WHILE_248_I(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
+# define BOOST_PP_WHILE_249_I(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
+# define BOOST_PP_WHILE_250_I(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
+# define BOOST_PP_WHILE_251_I(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
+# define BOOST_PP_WHILE_252_I(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
+# define BOOST_PP_WHILE_253_I(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
+# define BOOST_PP_WHILE_254_I(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
+# define BOOST_PP_WHILE_255_I(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
+# define BOOST_PP_WHILE_256_I(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/msvc/while.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/msvc/while.hpp
new file mode 100644
index 0000000..e543e41
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/msvc/while.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_MSVC_WHILE_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/while.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/while.hpp
new file mode 100644
index 0000000..7315e1d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/detail/while.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_C(BOOST_PP_BOOL(p(2, s)), p, o, s)
+# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_C(BOOST_PP_BOOL(p(3, s)), p, o, s)
+# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_C(BOOST_PP_BOOL(p(4, s)), p, o, s)
+# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_C(BOOST_PP_BOOL(p(5, s)), p, o, s)
+# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_C(BOOST_PP_BOOL(p(6, s)), p, o, s)
+# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_C(BOOST_PP_BOOL(p(7, s)), p, o, s)
+# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_C(BOOST_PP_BOOL(p(8, s)), p, o, s)
+# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_C(BOOST_PP_BOOL(p(9, s)), p, o, s)
+# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_C(BOOST_PP_BOOL(p(10, s)), p, o, s)
+# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_C(BOOST_PP_BOOL(p(11, s)), p, o, s)
+# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_C(BOOST_PP_BOOL(p(12, s)), p, o, s)
+# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_C(BOOST_PP_BOOL(p(13, s)), p, o, s)
+# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_C(BOOST_PP_BOOL(p(14, s)), p, o, s)
+# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_C(BOOST_PP_BOOL(p(15, s)), p, o, s)
+# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_C(BOOST_PP_BOOL(p(16, s)), p, o, s)
+# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_C(BOOST_PP_BOOL(p(17, s)), p, o, s)
+# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_C(BOOST_PP_BOOL(p(18, s)), p, o, s)
+# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_C(BOOST_PP_BOOL(p(19, s)), p, o, s)
+# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_C(BOOST_PP_BOOL(p(20, s)), p, o, s)
+# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_C(BOOST_PP_BOOL(p(21, s)), p, o, s)
+# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_C(BOOST_PP_BOOL(p(22, s)), p, o, s)
+# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_C(BOOST_PP_BOOL(p(23, s)), p, o, s)
+# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_C(BOOST_PP_BOOL(p(24, s)), p, o, s)
+# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_C(BOOST_PP_BOOL(p(25, s)), p, o, s)
+# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_C(BOOST_PP_BOOL(p(26, s)), p, o, s)
+# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_C(BOOST_PP_BOOL(p(27, s)), p, o, s)
+# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_C(BOOST_PP_BOOL(p(28, s)), p, o, s)
+# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_C(BOOST_PP_BOOL(p(29, s)), p, o, s)
+# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_C(BOOST_PP_BOOL(p(30, s)), p, o, s)
+# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_C(BOOST_PP_BOOL(p(31, s)), p, o, s)
+# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_C(BOOST_PP_BOOL(p(32, s)), p, o, s)
+# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_C(BOOST_PP_BOOL(p(33, s)), p, o, s)
+# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_C(BOOST_PP_BOOL(p(34, s)), p, o, s)
+# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_C(BOOST_PP_BOOL(p(35, s)), p, o, s)
+# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_C(BOOST_PP_BOOL(p(36, s)), p, o, s)
+# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_C(BOOST_PP_BOOL(p(37, s)), p, o, s)
+# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_C(BOOST_PP_BOOL(p(38, s)), p, o, s)
+# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_C(BOOST_PP_BOOL(p(39, s)), p, o, s)
+# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_C(BOOST_PP_BOOL(p(40, s)), p, o, s)
+# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_C(BOOST_PP_BOOL(p(41, s)), p, o, s)
+# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_C(BOOST_PP_BOOL(p(42, s)), p, o, s)
+# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_C(BOOST_PP_BOOL(p(43, s)), p, o, s)
+# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_C(BOOST_PP_BOOL(p(44, s)), p, o, s)
+# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_C(BOOST_PP_BOOL(p(45, s)), p, o, s)
+# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_C(BOOST_PP_BOOL(p(46, s)), p, o, s)
+# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_C(BOOST_PP_BOOL(p(47, s)), p, o, s)
+# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_C(BOOST_PP_BOOL(p(48, s)), p, o, s)
+# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_C(BOOST_PP_BOOL(p(49, s)), p, o, s)
+# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_C(BOOST_PP_BOOL(p(50, s)), p, o, s)
+# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_C(BOOST_PP_BOOL(p(51, s)), p, o, s)
+# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_C(BOOST_PP_BOOL(p(52, s)), p, o, s)
+# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_C(BOOST_PP_BOOL(p(53, s)), p, o, s)
+# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_C(BOOST_PP_BOOL(p(54, s)), p, o, s)
+# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_C(BOOST_PP_BOOL(p(55, s)), p, o, s)
+# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_C(BOOST_PP_BOOL(p(56, s)), p, o, s)
+# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_C(BOOST_PP_BOOL(p(57, s)), p, o, s)
+# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_C(BOOST_PP_BOOL(p(58, s)), p, o, s)
+# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_C(BOOST_PP_BOOL(p(59, s)), p, o, s)
+# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_C(BOOST_PP_BOOL(p(60, s)), p, o, s)
+# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_C(BOOST_PP_BOOL(p(61, s)), p, o, s)
+# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_C(BOOST_PP_BOOL(p(62, s)), p, o, s)
+# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_C(BOOST_PP_BOOL(p(63, s)), p, o, s)
+# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_C(BOOST_PP_BOOL(p(64, s)), p, o, s)
+# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_C(BOOST_PP_BOOL(p(65, s)), p, o, s)
+# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_C(BOOST_PP_BOOL(p(66, s)), p, o, s)
+# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_C(BOOST_PP_BOOL(p(67, s)), p, o, s)
+# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_C(BOOST_PP_BOOL(p(68, s)), p, o, s)
+# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_C(BOOST_PP_BOOL(p(69, s)), p, o, s)
+# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_C(BOOST_PP_BOOL(p(70, s)), p, o, s)
+# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_C(BOOST_PP_BOOL(p(71, s)), p, o, s)
+# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_C(BOOST_PP_BOOL(p(72, s)), p, o, s)
+# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_C(BOOST_PP_BOOL(p(73, s)), p, o, s)
+# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_C(BOOST_PP_BOOL(p(74, s)), p, o, s)
+# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_C(BOOST_PP_BOOL(p(75, s)), p, o, s)
+# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_C(BOOST_PP_BOOL(p(76, s)), p, o, s)
+# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_C(BOOST_PP_BOOL(p(77, s)), p, o, s)
+# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_C(BOOST_PP_BOOL(p(78, s)), p, o, s)
+# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_C(BOOST_PP_BOOL(p(79, s)), p, o, s)
+# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_C(BOOST_PP_BOOL(p(80, s)), p, o, s)
+# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_C(BOOST_PP_BOOL(p(81, s)), p, o, s)
+# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_C(BOOST_PP_BOOL(p(82, s)), p, o, s)
+# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_C(BOOST_PP_BOOL(p(83, s)), p, o, s)
+# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_C(BOOST_PP_BOOL(p(84, s)), p, o, s)
+# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_C(BOOST_PP_BOOL(p(85, s)), p, o, s)
+# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_C(BOOST_PP_BOOL(p(86, s)), p, o, s)
+# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_C(BOOST_PP_BOOL(p(87, s)), p, o, s)
+# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_C(BOOST_PP_BOOL(p(88, s)), p, o, s)
+# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_C(BOOST_PP_BOOL(p(89, s)), p, o, s)
+# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_C(BOOST_PP_BOOL(p(90, s)), p, o, s)
+# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_C(BOOST_PP_BOOL(p(91, s)), p, o, s)
+# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_C(BOOST_PP_BOOL(p(92, s)), p, o, s)
+# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_C(BOOST_PP_BOOL(p(93, s)), p, o, s)
+# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_C(BOOST_PP_BOOL(p(94, s)), p, o, s)
+# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_C(BOOST_PP_BOOL(p(95, s)), p, o, s)
+# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_C(BOOST_PP_BOOL(p(96, s)), p, o, s)
+# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_C(BOOST_PP_BOOL(p(97, s)), p, o, s)
+# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_C(BOOST_PP_BOOL(p(98, s)), p, o, s)
+# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_C(BOOST_PP_BOOL(p(99, s)), p, o, s)
+# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_C(BOOST_PP_BOOL(p(100, s)), p, o, s)
+# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_C(BOOST_PP_BOOL(p(101, s)), p, o, s)
+# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_C(BOOST_PP_BOOL(p(102, s)), p, o, s)
+# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_C(BOOST_PP_BOOL(p(103, s)), p, o, s)
+# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_C(BOOST_PP_BOOL(p(104, s)), p, o, s)
+# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_C(BOOST_PP_BOOL(p(105, s)), p, o, s)
+# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_C(BOOST_PP_BOOL(p(106, s)), p, o, s)
+# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_C(BOOST_PP_BOOL(p(107, s)), p, o, s)
+# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_C(BOOST_PP_BOOL(p(108, s)), p, o, s)
+# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_C(BOOST_PP_BOOL(p(109, s)), p, o, s)
+# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_C(BOOST_PP_BOOL(p(110, s)), p, o, s)
+# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_C(BOOST_PP_BOOL(p(111, s)), p, o, s)
+# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_C(BOOST_PP_BOOL(p(112, s)), p, o, s)
+# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_C(BOOST_PP_BOOL(p(113, s)), p, o, s)
+# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_C(BOOST_PP_BOOL(p(114, s)), p, o, s)
+# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_C(BOOST_PP_BOOL(p(115, s)), p, o, s)
+# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_C(BOOST_PP_BOOL(p(116, s)), p, o, s)
+# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_C(BOOST_PP_BOOL(p(117, s)), p, o, s)
+# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_C(BOOST_PP_BOOL(p(118, s)), p, o, s)
+# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_C(BOOST_PP_BOOL(p(119, s)), p, o, s)
+# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_C(BOOST_PP_BOOL(p(120, s)), p, o, s)
+# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_C(BOOST_PP_BOOL(p(121, s)), p, o, s)
+# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_C(BOOST_PP_BOOL(p(122, s)), p, o, s)
+# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_C(BOOST_PP_BOOL(p(123, s)), p, o, s)
+# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_C(BOOST_PP_BOOL(p(124, s)), p, o, s)
+# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_C(BOOST_PP_BOOL(p(125, s)), p, o, s)
+# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_C(BOOST_PP_BOOL(p(126, s)), p, o, s)
+# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_C(BOOST_PP_BOOL(p(127, s)), p, o, s)
+# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_C(BOOST_PP_BOOL(p(128, s)), p, o, s)
+# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_C(BOOST_PP_BOOL(p(129, s)), p, o, s)
+# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_C(BOOST_PP_BOOL(p(130, s)), p, o, s)
+# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_C(BOOST_PP_BOOL(p(131, s)), p, o, s)
+# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_C(BOOST_PP_BOOL(p(132, s)), p, o, s)
+# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_C(BOOST_PP_BOOL(p(133, s)), p, o, s)
+# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_C(BOOST_PP_BOOL(p(134, s)), p, o, s)
+# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_C(BOOST_PP_BOOL(p(135, s)), p, o, s)
+# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_C(BOOST_PP_BOOL(p(136, s)), p, o, s)
+# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_C(BOOST_PP_BOOL(p(137, s)), p, o, s)
+# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_C(BOOST_PP_BOOL(p(138, s)), p, o, s)
+# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_C(BOOST_PP_BOOL(p(139, s)), p, o, s)
+# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_C(BOOST_PP_BOOL(p(140, s)), p, o, s)
+# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_C(BOOST_PP_BOOL(p(141, s)), p, o, s)
+# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_C(BOOST_PP_BOOL(p(142, s)), p, o, s)
+# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_C(BOOST_PP_BOOL(p(143, s)), p, o, s)
+# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_C(BOOST_PP_BOOL(p(144, s)), p, o, s)
+# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_C(BOOST_PP_BOOL(p(145, s)), p, o, s)
+# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_C(BOOST_PP_BOOL(p(146, s)), p, o, s)
+# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_C(BOOST_PP_BOOL(p(147, s)), p, o, s)
+# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_C(BOOST_PP_BOOL(p(148, s)), p, o, s)
+# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_C(BOOST_PP_BOOL(p(149, s)), p, o, s)
+# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_C(BOOST_PP_BOOL(p(150, s)), p, o, s)
+# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_C(BOOST_PP_BOOL(p(151, s)), p, o, s)
+# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_C(BOOST_PP_BOOL(p(152, s)), p, o, s)
+# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_C(BOOST_PP_BOOL(p(153, s)), p, o, s)
+# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_C(BOOST_PP_BOOL(p(154, s)), p, o, s)
+# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_C(BOOST_PP_BOOL(p(155, s)), p, o, s)
+# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_C(BOOST_PP_BOOL(p(156, s)), p, o, s)
+# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_C(BOOST_PP_BOOL(p(157, s)), p, o, s)
+# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_C(BOOST_PP_BOOL(p(158, s)), p, o, s)
+# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_C(BOOST_PP_BOOL(p(159, s)), p, o, s)
+# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_C(BOOST_PP_BOOL(p(160, s)), p, o, s)
+# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_C(BOOST_PP_BOOL(p(161, s)), p, o, s)
+# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_C(BOOST_PP_BOOL(p(162, s)), p, o, s)
+# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_C(BOOST_PP_BOOL(p(163, s)), p, o, s)
+# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_C(BOOST_PP_BOOL(p(164, s)), p, o, s)
+# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_C(BOOST_PP_BOOL(p(165, s)), p, o, s)
+# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_C(BOOST_PP_BOOL(p(166, s)), p, o, s)
+# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_C(BOOST_PP_BOOL(p(167, s)), p, o, s)
+# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_C(BOOST_PP_BOOL(p(168, s)), p, o, s)
+# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_C(BOOST_PP_BOOL(p(169, s)), p, o, s)
+# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_C(BOOST_PP_BOOL(p(170, s)), p, o, s)
+# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_C(BOOST_PP_BOOL(p(171, s)), p, o, s)
+# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_C(BOOST_PP_BOOL(p(172, s)), p, o, s)
+# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_C(BOOST_PP_BOOL(p(173, s)), p, o, s)
+# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_C(BOOST_PP_BOOL(p(174, s)), p, o, s)
+# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_C(BOOST_PP_BOOL(p(175, s)), p, o, s)
+# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_C(BOOST_PP_BOOL(p(176, s)), p, o, s)
+# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_C(BOOST_PP_BOOL(p(177, s)), p, o, s)
+# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_C(BOOST_PP_BOOL(p(178, s)), p, o, s)
+# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_C(BOOST_PP_BOOL(p(179, s)), p, o, s)
+# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_C(BOOST_PP_BOOL(p(180, s)), p, o, s)
+# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_C(BOOST_PP_BOOL(p(181, s)), p, o, s)
+# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_C(BOOST_PP_BOOL(p(182, s)), p, o, s)
+# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_C(BOOST_PP_BOOL(p(183, s)), p, o, s)
+# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_C(BOOST_PP_BOOL(p(184, s)), p, o, s)
+# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_C(BOOST_PP_BOOL(p(185, s)), p, o, s)
+# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_C(BOOST_PP_BOOL(p(186, s)), p, o, s)
+# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_C(BOOST_PP_BOOL(p(187, s)), p, o, s)
+# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_C(BOOST_PP_BOOL(p(188, s)), p, o, s)
+# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_C(BOOST_PP_BOOL(p(189, s)), p, o, s)
+# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_C(BOOST_PP_BOOL(p(190, s)), p, o, s)
+# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_C(BOOST_PP_BOOL(p(191, s)), p, o, s)
+# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_C(BOOST_PP_BOOL(p(192, s)), p, o, s)
+# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_C(BOOST_PP_BOOL(p(193, s)), p, o, s)
+# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_C(BOOST_PP_BOOL(p(194, s)), p, o, s)
+# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_C(BOOST_PP_BOOL(p(195, s)), p, o, s)
+# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_C(BOOST_PP_BOOL(p(196, s)), p, o, s)
+# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_C(BOOST_PP_BOOL(p(197, s)), p, o, s)
+# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_C(BOOST_PP_BOOL(p(198, s)), p, o, s)
+# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_C(BOOST_PP_BOOL(p(199, s)), p, o, s)
+# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_C(BOOST_PP_BOOL(p(200, s)), p, o, s)
+# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_C(BOOST_PP_BOOL(p(201, s)), p, o, s)
+# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_C(BOOST_PP_BOOL(p(202, s)), p, o, s)
+# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_C(BOOST_PP_BOOL(p(203, s)), p, o, s)
+# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_C(BOOST_PP_BOOL(p(204, s)), p, o, s)
+# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_C(BOOST_PP_BOOL(p(205, s)), p, o, s)
+# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_C(BOOST_PP_BOOL(p(206, s)), p, o, s)
+# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_C(BOOST_PP_BOOL(p(207, s)), p, o, s)
+# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_C(BOOST_PP_BOOL(p(208, s)), p, o, s)
+# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_C(BOOST_PP_BOOL(p(209, s)), p, o, s)
+# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_C(BOOST_PP_BOOL(p(210, s)), p, o, s)
+# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_C(BOOST_PP_BOOL(p(211, s)), p, o, s)
+# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_C(BOOST_PP_BOOL(p(212, s)), p, o, s)
+# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_C(BOOST_PP_BOOL(p(213, s)), p, o, s)
+# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_C(BOOST_PP_BOOL(p(214, s)), p, o, s)
+# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_C(BOOST_PP_BOOL(p(215, s)), p, o, s)
+# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_C(BOOST_PP_BOOL(p(216, s)), p, o, s)
+# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_C(BOOST_PP_BOOL(p(217, s)), p, o, s)
+# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_C(BOOST_PP_BOOL(p(218, s)), p, o, s)
+# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_C(BOOST_PP_BOOL(p(219, s)), p, o, s)
+# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_C(BOOST_PP_BOOL(p(220, s)), p, o, s)
+# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_C(BOOST_PP_BOOL(p(221, s)), p, o, s)
+# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_C(BOOST_PP_BOOL(p(222, s)), p, o, s)
+# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_C(BOOST_PP_BOOL(p(223, s)), p, o, s)
+# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_C(BOOST_PP_BOOL(p(224, s)), p, o, s)
+# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_C(BOOST_PP_BOOL(p(225, s)), p, o, s)
+# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_C(BOOST_PP_BOOL(p(226, s)), p, o, s)
+# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_C(BOOST_PP_BOOL(p(227, s)), p, o, s)
+# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_C(BOOST_PP_BOOL(p(228, s)), p, o, s)
+# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_C(BOOST_PP_BOOL(p(229, s)), p, o, s)
+# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_C(BOOST_PP_BOOL(p(230, s)), p, o, s)
+# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_C(BOOST_PP_BOOL(p(231, s)), p, o, s)
+# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_C(BOOST_PP_BOOL(p(232, s)), p, o, s)
+# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_C(BOOST_PP_BOOL(p(233, s)), p, o, s)
+# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_C(BOOST_PP_BOOL(p(234, s)), p, o, s)
+# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_C(BOOST_PP_BOOL(p(235, s)), p, o, s)
+# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_C(BOOST_PP_BOOL(p(236, s)), p, o, s)
+# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_C(BOOST_PP_BOOL(p(237, s)), p, o, s)
+# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_C(BOOST_PP_BOOL(p(238, s)), p, o, s)
+# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_C(BOOST_PP_BOOL(p(239, s)), p, o, s)
+# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_C(BOOST_PP_BOOL(p(240, s)), p, o, s)
+# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_C(BOOST_PP_BOOL(p(241, s)), p, o, s)
+# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_C(BOOST_PP_BOOL(p(242, s)), p, o, s)
+# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_C(BOOST_PP_BOOL(p(243, s)), p, o, s)
+# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_C(BOOST_PP_BOOL(p(244, s)), p, o, s)
+# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_C(BOOST_PP_BOOL(p(245, s)), p, o, s)
+# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_C(BOOST_PP_BOOL(p(246, s)), p, o, s)
+# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_C(BOOST_PP_BOOL(p(247, s)), p, o, s)
+# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_C(BOOST_PP_BOOL(p(248, s)), p, o, s)
+# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_C(BOOST_PP_BOOL(p(249, s)), p, o, s)
+# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_C(BOOST_PP_BOOL(p(250, s)), p, o, s)
+# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_C(BOOST_PP_BOOL(p(251, s)), p, o, s)
+# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_C(BOOST_PP_BOOL(p(252, s)), p, o, s)
+# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_C(BOOST_PP_BOOL(p(253, s)), p, o, s)
+# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_C(BOOST_PP_BOOL(p(254, s)), p, o, s)
+# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_C(BOOST_PP_BOOL(p(255, s)), p, o, s)
+# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_C(BOOST_PP_BOOL(p(256, s)), p, o, s)
+# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_C(BOOST_PP_BOOL(p(257, s)), p, o, s)
+#
+# define BOOST_PP_WHILE_1_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(2, s))
+# define BOOST_PP_WHILE_2_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(3, s))
+# define BOOST_PP_WHILE_3_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(4, s))
+# define BOOST_PP_WHILE_4_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(5, s))
+# define BOOST_PP_WHILE_5_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(6, s))
+# define BOOST_PP_WHILE_6_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(7, s))
+# define BOOST_PP_WHILE_7_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(8, s))
+# define BOOST_PP_WHILE_8_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(9, s))
+# define BOOST_PP_WHILE_9_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(10, s))
+# define BOOST_PP_WHILE_10_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(11, s))
+# define BOOST_PP_WHILE_11_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(12, s))
+# define BOOST_PP_WHILE_12_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(13, s))
+# define BOOST_PP_WHILE_13_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(14, s))
+# define BOOST_PP_WHILE_14_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(15, s))
+# define BOOST_PP_WHILE_15_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(16, s))
+# define BOOST_PP_WHILE_16_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(17, s))
+# define BOOST_PP_WHILE_17_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(18, s))
+# define BOOST_PP_WHILE_18_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(19, s))
+# define BOOST_PP_WHILE_19_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(20, s))
+# define BOOST_PP_WHILE_20_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(21, s))
+# define BOOST_PP_WHILE_21_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(22, s))
+# define BOOST_PP_WHILE_22_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(23, s))
+# define BOOST_PP_WHILE_23_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(24, s))
+# define BOOST_PP_WHILE_24_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(25, s))
+# define BOOST_PP_WHILE_25_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(26, s))
+# define BOOST_PP_WHILE_26_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(27, s))
+# define BOOST_PP_WHILE_27_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(28, s))
+# define BOOST_PP_WHILE_28_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(29, s))
+# define BOOST_PP_WHILE_29_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(30, s))
+# define BOOST_PP_WHILE_30_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(31, s))
+# define BOOST_PP_WHILE_31_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(32, s))
+# define BOOST_PP_WHILE_32_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(33, s))
+# define BOOST_PP_WHILE_33_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(34, s))
+# define BOOST_PP_WHILE_34_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(35, s))
+# define BOOST_PP_WHILE_35_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(36, s))
+# define BOOST_PP_WHILE_36_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(37, s))
+# define BOOST_PP_WHILE_37_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(38, s))
+# define BOOST_PP_WHILE_38_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(39, s))
+# define BOOST_PP_WHILE_39_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(40, s))
+# define BOOST_PP_WHILE_40_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(41, s))
+# define BOOST_PP_WHILE_41_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(42, s))
+# define BOOST_PP_WHILE_42_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(43, s))
+# define BOOST_PP_WHILE_43_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(44, s))
+# define BOOST_PP_WHILE_44_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(45, s))
+# define BOOST_PP_WHILE_45_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(46, s))
+# define BOOST_PP_WHILE_46_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(47, s))
+# define BOOST_PP_WHILE_47_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(48, s))
+# define BOOST_PP_WHILE_48_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(49, s))
+# define BOOST_PP_WHILE_49_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(50, s))
+# define BOOST_PP_WHILE_50_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(51, s))
+# define BOOST_PP_WHILE_51_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(52, s))
+# define BOOST_PP_WHILE_52_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(53, s))
+# define BOOST_PP_WHILE_53_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(54, s))
+# define BOOST_PP_WHILE_54_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(55, s))
+# define BOOST_PP_WHILE_55_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(56, s))
+# define BOOST_PP_WHILE_56_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(57, s))
+# define BOOST_PP_WHILE_57_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(58, s))
+# define BOOST_PP_WHILE_58_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(59, s))
+# define BOOST_PP_WHILE_59_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(60, s))
+# define BOOST_PP_WHILE_60_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(61, s))
+# define BOOST_PP_WHILE_61_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(62, s))
+# define BOOST_PP_WHILE_62_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(63, s))
+# define BOOST_PP_WHILE_63_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(64, s))
+# define BOOST_PP_WHILE_64_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(65, s))
+# define BOOST_PP_WHILE_65_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(66, s))
+# define BOOST_PP_WHILE_66_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(67, s))
+# define BOOST_PP_WHILE_67_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(68, s))
+# define BOOST_PP_WHILE_68_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(69, s))
+# define BOOST_PP_WHILE_69_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(70, s))
+# define BOOST_PP_WHILE_70_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(71, s))
+# define BOOST_PP_WHILE_71_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(72, s))
+# define BOOST_PP_WHILE_72_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(73, s))
+# define BOOST_PP_WHILE_73_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(74, s))
+# define BOOST_PP_WHILE_74_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(75, s))
+# define BOOST_PP_WHILE_75_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(76, s))
+# define BOOST_PP_WHILE_76_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(77, s))
+# define BOOST_PP_WHILE_77_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(78, s))
+# define BOOST_PP_WHILE_78_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(79, s))
+# define BOOST_PP_WHILE_79_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(80, s))
+# define BOOST_PP_WHILE_80_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(81, s))
+# define BOOST_PP_WHILE_81_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(82, s))
+# define BOOST_PP_WHILE_82_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(83, s))
+# define BOOST_PP_WHILE_83_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(84, s))
+# define BOOST_PP_WHILE_84_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(85, s))
+# define BOOST_PP_WHILE_85_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(86, s))
+# define BOOST_PP_WHILE_86_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(87, s))
+# define BOOST_PP_WHILE_87_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(88, s))
+# define BOOST_PP_WHILE_88_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(89, s))
+# define BOOST_PP_WHILE_89_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(90, s))
+# define BOOST_PP_WHILE_90_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(91, s))
+# define BOOST_PP_WHILE_91_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(92, s))
+# define BOOST_PP_WHILE_92_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(93, s))
+# define BOOST_PP_WHILE_93_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(94, s))
+# define BOOST_PP_WHILE_94_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(95, s))
+# define BOOST_PP_WHILE_95_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(96, s))
+# define BOOST_PP_WHILE_96_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(97, s))
+# define BOOST_PP_WHILE_97_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(98, s))
+# define BOOST_PP_WHILE_98_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(99, s))
+# define BOOST_PP_WHILE_99_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(100, s))
+# define BOOST_PP_WHILE_100_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(101, s))
+# define BOOST_PP_WHILE_101_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(102, s))
+# define BOOST_PP_WHILE_102_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(103, s))
+# define BOOST_PP_WHILE_103_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(104, s))
+# define BOOST_PP_WHILE_104_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(105, s))
+# define BOOST_PP_WHILE_105_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(106, s))
+# define BOOST_PP_WHILE_106_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(107, s))
+# define BOOST_PP_WHILE_107_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(108, s))
+# define BOOST_PP_WHILE_108_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(109, s))
+# define BOOST_PP_WHILE_109_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(110, s))
+# define BOOST_PP_WHILE_110_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(111, s))
+# define BOOST_PP_WHILE_111_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(112, s))
+# define BOOST_PP_WHILE_112_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(113, s))
+# define BOOST_PP_WHILE_113_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(114, s))
+# define BOOST_PP_WHILE_114_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(115, s))
+# define BOOST_PP_WHILE_115_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(116, s))
+# define BOOST_PP_WHILE_116_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(117, s))
+# define BOOST_PP_WHILE_117_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(118, s))
+# define BOOST_PP_WHILE_118_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(119, s))
+# define BOOST_PP_WHILE_119_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(120, s))
+# define BOOST_PP_WHILE_120_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(121, s))
+# define BOOST_PP_WHILE_121_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(122, s))
+# define BOOST_PP_WHILE_122_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(123, s))
+# define BOOST_PP_WHILE_123_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(124, s))
+# define BOOST_PP_WHILE_124_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(125, s))
+# define BOOST_PP_WHILE_125_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(126, s))
+# define BOOST_PP_WHILE_126_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(127, s))
+# define BOOST_PP_WHILE_127_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(128, s))
+# define BOOST_PP_WHILE_128_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(129, s))
+# define BOOST_PP_WHILE_129_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(130, s))
+# define BOOST_PP_WHILE_130_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(131, s))
+# define BOOST_PP_WHILE_131_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(132, s))
+# define BOOST_PP_WHILE_132_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(133, s))
+# define BOOST_PP_WHILE_133_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(134, s))
+# define BOOST_PP_WHILE_134_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(135, s))
+# define BOOST_PP_WHILE_135_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(136, s))
+# define BOOST_PP_WHILE_136_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(137, s))
+# define BOOST_PP_WHILE_137_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(138, s))
+# define BOOST_PP_WHILE_138_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(139, s))
+# define BOOST_PP_WHILE_139_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(140, s))
+# define BOOST_PP_WHILE_140_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(141, s))
+# define BOOST_PP_WHILE_141_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(142, s))
+# define BOOST_PP_WHILE_142_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(143, s))
+# define BOOST_PP_WHILE_143_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(144, s))
+# define BOOST_PP_WHILE_144_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(145, s))
+# define BOOST_PP_WHILE_145_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(146, s))
+# define BOOST_PP_WHILE_146_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(147, s))
+# define BOOST_PP_WHILE_147_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(148, s))
+# define BOOST_PP_WHILE_148_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(149, s))
+# define BOOST_PP_WHILE_149_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(150, s))
+# define BOOST_PP_WHILE_150_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(151, s))
+# define BOOST_PP_WHILE_151_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(152, s))
+# define BOOST_PP_WHILE_152_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(153, s))
+# define BOOST_PP_WHILE_153_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(154, s))
+# define BOOST_PP_WHILE_154_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(155, s))
+# define BOOST_PP_WHILE_155_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(156, s))
+# define BOOST_PP_WHILE_156_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(157, s))
+# define BOOST_PP_WHILE_157_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(158, s))
+# define BOOST_PP_WHILE_158_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(159, s))
+# define BOOST_PP_WHILE_159_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(160, s))
+# define BOOST_PP_WHILE_160_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(161, s))
+# define BOOST_PP_WHILE_161_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(162, s))
+# define BOOST_PP_WHILE_162_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(163, s))
+# define BOOST_PP_WHILE_163_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(164, s))
+# define BOOST_PP_WHILE_164_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(165, s))
+# define BOOST_PP_WHILE_165_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(166, s))
+# define BOOST_PP_WHILE_166_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(167, s))
+# define BOOST_PP_WHILE_167_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(168, s))
+# define BOOST_PP_WHILE_168_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(169, s))
+# define BOOST_PP_WHILE_169_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(170, s))
+# define BOOST_PP_WHILE_170_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(171, s))
+# define BOOST_PP_WHILE_171_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(172, s))
+# define BOOST_PP_WHILE_172_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(173, s))
+# define BOOST_PP_WHILE_173_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(174, s))
+# define BOOST_PP_WHILE_174_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(175, s))
+# define BOOST_PP_WHILE_175_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(176, s))
+# define BOOST_PP_WHILE_176_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(177, s))
+# define BOOST_PP_WHILE_177_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(178, s))
+# define BOOST_PP_WHILE_178_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(179, s))
+# define BOOST_PP_WHILE_179_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(180, s))
+# define BOOST_PP_WHILE_180_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(181, s))
+# define BOOST_PP_WHILE_181_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(182, s))
+# define BOOST_PP_WHILE_182_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(183, s))
+# define BOOST_PP_WHILE_183_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(184, s))
+# define BOOST_PP_WHILE_184_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(185, s))
+# define BOOST_PP_WHILE_185_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(186, s))
+# define BOOST_PP_WHILE_186_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(187, s))
+# define BOOST_PP_WHILE_187_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(188, s))
+# define BOOST_PP_WHILE_188_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(189, s))
+# define BOOST_PP_WHILE_189_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(190, s))
+# define BOOST_PP_WHILE_190_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(191, s))
+# define BOOST_PP_WHILE_191_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(192, s))
+# define BOOST_PP_WHILE_192_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(193, s))
+# define BOOST_PP_WHILE_193_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(194, s))
+# define BOOST_PP_WHILE_194_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(195, s))
+# define BOOST_PP_WHILE_195_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(196, s))
+# define BOOST_PP_WHILE_196_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(197, s))
+# define BOOST_PP_WHILE_197_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(198, s))
+# define BOOST_PP_WHILE_198_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(199, s))
+# define BOOST_PP_WHILE_199_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(200, s))
+# define BOOST_PP_WHILE_200_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(201, s))
+# define BOOST_PP_WHILE_201_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(202, s))
+# define BOOST_PP_WHILE_202_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(203, s))
+# define BOOST_PP_WHILE_203_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(204, s))
+# define BOOST_PP_WHILE_204_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(205, s))
+# define BOOST_PP_WHILE_205_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(206, s))
+# define BOOST_PP_WHILE_206_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(207, s))
+# define BOOST_PP_WHILE_207_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(208, s))
+# define BOOST_PP_WHILE_208_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(209, s))
+# define BOOST_PP_WHILE_209_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(210, s))
+# define BOOST_PP_WHILE_210_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(211, s))
+# define BOOST_PP_WHILE_211_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(212, s))
+# define BOOST_PP_WHILE_212_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(213, s))
+# define BOOST_PP_WHILE_213_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(214, s))
+# define BOOST_PP_WHILE_214_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(215, s))
+# define BOOST_PP_WHILE_215_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(216, s))
+# define BOOST_PP_WHILE_216_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(217, s))
+# define BOOST_PP_WHILE_217_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(218, s))
+# define BOOST_PP_WHILE_218_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(219, s))
+# define BOOST_PP_WHILE_219_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(220, s))
+# define BOOST_PP_WHILE_220_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(221, s))
+# define BOOST_PP_WHILE_221_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(222, s))
+# define BOOST_PP_WHILE_222_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(223, s))
+# define BOOST_PP_WHILE_223_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(224, s))
+# define BOOST_PP_WHILE_224_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(225, s))
+# define BOOST_PP_WHILE_225_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(226, s))
+# define BOOST_PP_WHILE_226_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(227, s))
+# define BOOST_PP_WHILE_227_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(228, s))
+# define BOOST_PP_WHILE_228_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(229, s))
+# define BOOST_PP_WHILE_229_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(230, s))
+# define BOOST_PP_WHILE_230_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(231, s))
+# define BOOST_PP_WHILE_231_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(232, s))
+# define BOOST_PP_WHILE_232_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(233, s))
+# define BOOST_PP_WHILE_233_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(234, s))
+# define BOOST_PP_WHILE_234_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(235, s))
+# define BOOST_PP_WHILE_235_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(236, s))
+# define BOOST_PP_WHILE_236_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(237, s))
+# define BOOST_PP_WHILE_237_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(238, s))
+# define BOOST_PP_WHILE_238_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(239, s))
+# define BOOST_PP_WHILE_239_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(240, s))
+# define BOOST_PP_WHILE_240_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(241, s))
+# define BOOST_PP_WHILE_241_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(242, s))
+# define BOOST_PP_WHILE_242_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(243, s))
+# define BOOST_PP_WHILE_243_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(244, s))
+# define BOOST_PP_WHILE_244_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(245, s))
+# define BOOST_PP_WHILE_245_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(246, s))
+# define BOOST_PP_WHILE_246_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(247, s))
+# define BOOST_PP_WHILE_247_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(248, s))
+# define BOOST_PP_WHILE_248_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(249, s))
+# define BOOST_PP_WHILE_249_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(250, s))
+# define BOOST_PP_WHILE_250_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(251, s))
+# define BOOST_PP_WHILE_251_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(252, s))
+# define BOOST_PP_WHILE_252_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(253, s))
+# define BOOST_PP_WHILE_253_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(254, s))
+# define BOOST_PP_WHILE_254_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(255, s))
+# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(256, s))
+# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_2)(257, s))
+#
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/expr_if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/expr_if.hpp
new file mode 100644
index 0000000..0e1ab51
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/expr_if.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_EXPR_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+#
+# /* BOOST_PP_EXPR_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr)
+# else
+# define BOOST_PP_EXPR_IF(cond, expr) BOOST_PP_EXPR_IF_I(cond, expr)
+# define BOOST_PP_EXPR_IF_I(cond, expr) BOOST_PP_EXPR_IIF(BOOST_PP_BOOL(cond), expr)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/expr_iif.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/expr_iif.hpp
new file mode 100644
index 0000000..58f45a4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/expr_iif.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_EXPR_IIF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_EXPR_IIF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_I(bit, expr)
+# else
+# define BOOST_PP_EXPR_IIF(bit, expr) BOOST_PP_EXPR_IIF_OO((bit, expr))
+# define BOOST_PP_EXPR_IIF_OO(par) BOOST_PP_EXPR_IIF_I ## par
+# endif
+#
+# define BOOST_PP_EXPR_IIF_I(bit, expr) BOOST_PP_EXPR_IIF_ ## bit(expr)
+#
+# define BOOST_PP_EXPR_IIF_0(expr)
+# define BOOST_PP_EXPR_IIF_1(expr) expr
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/if.hpp
new file mode 100644
index 0000000..52cfc3d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/if.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_IF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+#
+# /* BOOST_PP_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IF(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
+# else
+# define BOOST_PP_IF(cond, t, f) BOOST_PP_IF_I(cond, t, f)
+# define BOOST_PP_IF_I(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/iif.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/iif.hpp
new file mode 100644
index 0000000..fd07817
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/iif.hpp
@@ -0,0 +1,34 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_IIF_HPP
+# define BOOST_PREPROCESSOR_CONTROL_IIF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_I(bit, t, f)
+# else
+# define BOOST_PP_IIF(bit, t, f) BOOST_PP_IIF_OO((bit, t, f))
+# define BOOST_PP_IIF_OO(par) BOOST_PP_IIF_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_ ## bit(t, f)
+# else
+# define BOOST_PP_IIF_I(bit, t, f) BOOST_PP_IIF_II(BOOST_PP_IIF_ ## bit(t, f))
+# define BOOST_PP_IIF_II(id) id
+# endif
+#
+# define BOOST_PP_IIF_0(t, f) f
+# define BOOST_PP_IIF_1(t, f) t
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/control/while.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/while.hpp
new file mode 100644
index 0000000..e8a65ff
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/control/while.hpp
@@ -0,0 +1,312 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
+# define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+#
+# /* BOOST_PP_WHILE */
+#
+# if 0
+# define BOOST_PP_WHILE(pred, op, state)
+# endif
+#
+# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
+# else
+# define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
+# endif
+#
+# define BOOST_PP_WHILE_F(d, _) 0
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/control/detail/edg/while.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# include <boost/preprocessor/control/detail/msvc/while.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/control/detail/dmc/while.hpp>
+# else
+# include <boost/preprocessor/control/detail/while.hpp>
+# endif
+#
+# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
+#
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0
+# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/debug.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug.hpp
new file mode 100644
index 0000000..d09983e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug.hpp
@@ -0,0 +1,18 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEBUG_HPP
+# define BOOST_PREPROCESSOR_DEBUG_HPP
+#
+# include <boost/preprocessor/debug/assert.hpp>
+# include <boost/preprocessor/debug/line.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/assert.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/assert.hpp
new file mode 100644
index 0000000..3380c70
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/assert.hpp
@@ -0,0 +1,44 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP
+# define BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_ASSERT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ASSERT BOOST_PP_ASSERT_D
+# else
+# define BOOST_PP_ASSERT(cond) BOOST_PP_ASSERT_D(cond)
+# endif
+#
+# define BOOST_PP_ASSERT_D(cond) BOOST_PP_IIF(BOOST_PP_NOT(cond), BOOST_PP_ASSERT_ERROR, BOOST_PP_TUPLE_EAT_1)(...)
+# define BOOST_PP_ASSERT_ERROR(x, y, z)
+#
+# /* BOOST_PP_ASSERT_MSG */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ASSERT_MSG BOOST_PP_ASSERT_MSG_D
+# else
+# define BOOST_PP_ASSERT_MSG(cond, msg) BOOST_PP_ASSERT_MSG_D(cond, msg)
+# endif
+#
+# define BOOST_PP_ASSERT_MSG_D(cond, msg) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(cond), msg)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/error.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/error.hpp
new file mode 100644
index 0000000..c8ae5e7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/error.hpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
+# define BOOST_PREPROCESSOR_DEBUG_ERROR_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_ERROR */
+#
+# if BOOST_PP_CONFIG_ERRORS
+# define BOOST_PP_ERROR(code) BOOST_PP_CAT(BOOST_PP_ERROR_, code)
+# endif
+#
+# define BOOST_PP_ERROR_0x0000 BOOST_PP_ERROR(0x0000, BOOST_PP_INDEX_OUT_OF_BOUNDS)
+# define BOOST_PP_ERROR_0x0001 BOOST_PP_ERROR(0x0001, BOOST_PP_WHILE_OVERFLOW)
+# define BOOST_PP_ERROR_0x0002 BOOST_PP_ERROR(0x0002, BOOST_PP_FOR_OVERFLOW)
+# define BOOST_PP_ERROR_0x0003 BOOST_PP_ERROR(0x0003, BOOST_PP_REPEAT_OVERFLOW)
+# define BOOST_PP_ERROR_0x0004 BOOST_PP_ERROR(0x0004, BOOST_PP_LIST_FOLD_OVERFLOW)
+# define BOOST_PP_ERROR_0x0005 BOOST_PP_ERROR(0x0005, BOOST_PP_SEQ_FOLD_OVERFLOW)
+# define BOOST_PP_ERROR_0x0006 BOOST_PP_ERROR(0x0006, BOOST_PP_ARITHMETIC_OVERFLOW)
+# define BOOST_PP_ERROR_0x0007 BOOST_PP_ERROR(0x0007, BOOST_PP_DIVISION_BY_ZERO)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/line.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/line.hpp
new file mode 100644
index 0000000..4dd1013
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/debug/line.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEBUG_LINE_HPP
+# define BOOST_PREPROCESSOR_DEBUG_LINE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/iteration/iterate.hpp>
+# include <boost/preprocessor/stringize.hpp>
+#
+# /* BOOST_PP_LINE */
+#
+# if BOOST_PP_CONFIG_EXTENDED_LINE_INFO
+# define BOOST_PP_LINE(line, file) line BOOST_PP_CAT(BOOST_PP_LINE_, BOOST_PP_IS_ITERATING)(file)
+# define BOOST_PP_LINE_BOOST_PP_IS_ITERATING(file) #file
+# define BOOST_PP_LINE_1(file) BOOST_PP_STRINGIZE(file BOOST_PP_CAT(BOOST_PP_LINE_I_, BOOST_PP_ITERATION_DEPTH())())
+# define BOOST_PP_LINE_I_1() [BOOST_PP_FRAME_ITERATION(1)]
+# define BOOST_PP_LINE_I_2() BOOST_PP_LINE_I_1()[BOOST_PP_FRAME_ITERATION(2)]
+# define BOOST_PP_LINE_I_3() BOOST_PP_LINE_I_2()[BOOST_PP_FRAME_ITERATION(3)]
+# define BOOST_PP_LINE_I_4() BOOST_PP_LINE_I_3()[BOOST_PP_FRAME_ITERATION(4)]
+# define BOOST_PP_LINE_I_5() BOOST_PP_LINE_I_4()[BOOST_PP_FRAME_ITERATION(5)]
+# else
+# define BOOST_PP_LINE(line, file) line __FILE__
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/dec.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/dec.hpp
new file mode 100644
index 0000000..d572064
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/dec.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DEC_HPP
+# define BOOST_PREPROCESSOR_DEC_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/auto_rec.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/auto_rec.hpp
new file mode 100644
index 0000000..39de1d0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/auto_rec.hpp
@@ -0,0 +1,293 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/detail/dmc/auto_rec.hpp>
+# else
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_AUTO_REC */
+#
+# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
+#
+# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
+# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
+#
+# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
+# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
+# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
+# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
+# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
+# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
+# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
+# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p(1), 1, 2)
+# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p(3), 3, 4)
+# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
+# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p(5), 5, 6)
+# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p(7), 7, 8)
+# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
+# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
+# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p(9), 9, 10)
+# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p(11), 11, 12)
+# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
+# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p(13), 13, 14)
+# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p(15), 15, 16)
+# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
+# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
+# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
+# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p(17), 17, 18)
+# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p(19), 19, 20)
+# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
+# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p(21), 21, 22)
+# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p(23), 23, 24)
+# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
+# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
+# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p(25), 25, 26)
+# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p(27), 27, 28)
+# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
+# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p(29), 29, 30)
+# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p(31), 31, 32)
+# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
+# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
+# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
+# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
+# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p(33), 33, 34)
+# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p(35), 35, 36)
+# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
+# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p(37), 37, 38)
+# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p(39), 39, 40)
+# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
+# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
+# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p(41), 41, 42)
+# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p(43), 43, 44)
+# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
+# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p(45), 45, 46)
+# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p(47), 47, 48)
+# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
+# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
+# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
+# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p(49), 49, 50)
+# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p(51), 51, 52)
+# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
+# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p(53), 53, 54)
+# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p(55), 55, 56)
+# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
+# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
+# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p(57), 57, 58)
+# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p(59), 59, 60)
+# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
+# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p(61), 61, 62)
+# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p(63), 63, 64)
+# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
+# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
+# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
+# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
+# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
+# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p(65), 65, 66)
+# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p(67), 67, 68)
+# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
+# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p(69), 69, 70)
+# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p(71), 71, 72)
+# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
+# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
+# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p(73), 73, 74)
+# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p(75), 75, 76)
+# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
+# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p(77), 77, 78)
+# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p(79), 79, 80)
+# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
+# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
+# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
+# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p(81), 81, 82)
+# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p(83), 83, 84)
+# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
+# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p(85), 85, 86)
+# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p(87), 87, 88)
+# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
+# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
+# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p(89), 89, 90)
+# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p(91), 91, 92)
+# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
+# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p(93), 93, 94)
+# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p(95), 95, 96)
+# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
+# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
+# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
+# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
+# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p(97), 97, 98)
+# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p(99), 99, 100)
+# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
+# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p(101), 101, 102)
+# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p(103), 103, 104)
+# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
+# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
+# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p(105), 105, 106)
+# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p(107), 107, 108)
+# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
+# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p(109), 109, 110)
+# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p(111), 111, 112)
+# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
+# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
+# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
+# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p(113), 113, 114)
+# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p(115), 115, 116)
+# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
+# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p(117), 117, 118)
+# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p(119), 119, 120)
+# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
+# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
+# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p(121), 121, 122)
+# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p(123), 123, 124)
+# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
+# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p(125), 125, 126)
+# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p(127), 127, 128)
+# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
+# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
+# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
+# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
+# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
+# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
+# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p(129), 129, 130)
+# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p(131), 131, 132)
+# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
+# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p(133), 133, 134)
+# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p(135), 135, 136)
+# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
+# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
+# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p(137), 137, 138)
+# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p(139), 139, 140)
+# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
+# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p(141), 141, 142)
+# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p(143), 143, 144)
+# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
+# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
+# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
+# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p(145), 145, 146)
+# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p(147), 147, 148)
+# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
+# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p(149), 149, 150)
+# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p(151), 151, 152)
+# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
+# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
+# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p(153), 153, 154)
+# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p(155), 155, 156)
+# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
+# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p(157), 157, 158)
+# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p(159), 159, 160)
+# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
+# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
+# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
+# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
+# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p(161), 161, 162)
+# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p(163), 163, 164)
+# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
+# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p(165), 165, 166)
+# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p(167), 167, 168)
+# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
+# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
+# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p(169), 169, 170)
+# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p(171), 171, 172)
+# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
+# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p(173), 173, 174)
+# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p(175), 175, 176)
+# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
+# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
+# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
+# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p(177), 177, 178)
+# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p(179), 179, 180)
+# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
+# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p(181), 181, 182)
+# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p(183), 183, 184)
+# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
+# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
+# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p(185), 185, 186)
+# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p(187), 187, 188)
+# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
+# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p(189), 189, 190)
+# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p(191), 191, 192)
+# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
+# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
+# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
+# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
+# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
+# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p(193), 193, 194)
+# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p(195), 195, 196)
+# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
+# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p(197), 197, 198)
+# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p(199), 199, 200)
+# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
+# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
+# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p(201), 201, 202)
+# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p(203), 203, 204)
+# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
+# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p(205), 205, 206)
+# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p(207), 207, 208)
+# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
+# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
+# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
+# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p(209), 209, 210)
+# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p(211), 211, 212)
+# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
+# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p(213), 213, 214)
+# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p(215), 215, 216)
+# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
+# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
+# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p(217), 217, 218)
+# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p(219), 219, 220)
+# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
+# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p(221), 221, 222)
+# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p(223), 223, 224)
+# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
+# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
+# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
+# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
+# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p(225), 225, 226)
+# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p(227), 227, 228)
+# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
+# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p(229), 229, 230)
+# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p(231), 231, 232)
+# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
+# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
+# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p(233), 233, 234)
+# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p(235), 235, 236)
+# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
+# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p(237), 237, 238)
+# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p(239), 239, 240)
+# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
+# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
+# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
+# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p(241), 241, 242)
+# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p(243), 243, 244)
+# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
+# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p(245), 245, 246)
+# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p(247), 247, 248)
+# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
+# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
+# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p(249), 249, 250)
+# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p(251), 251, 252)
+# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
+# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p(253), 253, 254)
+# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p(255), 255, 256)
+#
+# endif
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/check.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/check.hpp
new file mode 100644
index 0000000..63f8ff9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/check.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
+# define BOOST_PREPROCESSOR_DETAIL_CHECK_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_CHECK */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_D(x, type)
+# else
+# define BOOST_PP_CHECK(x, type) BOOST_PP_CHECK_OO((x, type))
+# define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_D ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, type x))
+# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+# define BOOST_PP_CHECK_2(res, _) res
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_1(type x)
+# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+# define BOOST_PP_CHECK_2(chk) BOOST_PP_CHECK_3((BOOST_PP_CHECK_RESULT_ ## chk))
+# define BOOST_PP_CHECK_3(im) BOOST_PP_CHECK_5(BOOST_PP_CHECK_4 im)
+# define BOOST_PP_CHECK_4(res, _) res
+# define BOOST_PP_CHECK_5(res) res
+# else /* DMC */
+# define BOOST_PP_CHECK_D(x, type) BOOST_PP_CHECK_OO((type x))
+# define BOOST_PP_CHECK_OO(par) BOOST_PP_CHECK_0 ## par
+# define BOOST_PP_CHECK_0(chk) BOOST_PP_CHECK_1(BOOST_PP_CAT(BOOST_PP_CHECK_RESULT_, chk))
+# define BOOST_PP_CHECK_1(chk) BOOST_PP_CHECK_2(chk)
+# define BOOST_PP_CHECK_2(res, _) res
+# endif
+#
+# define BOOST_PP_CHECK_RESULT_1 1, BOOST_PP_NIL
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/dmc/auto_rec.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/dmc/auto_rec.hpp
new file mode 100644
index 0000000..37fbe04
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/dmc/auto_rec.hpp
@@ -0,0 +1,286 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+# define BOOST_PREPROCESSOR_DETAIL_AUTO_REC_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_AUTO_REC */
+#
+# define BOOST_PP_AUTO_REC(pred, n) BOOST_PP_NODE_ENTRY_ ## n(pred)
+#
+# define BOOST_PP_NODE_ENTRY_256(p) BOOST_PP_NODE_128(p)(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_128(p) BOOST_PP_NODE_64(p)(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_64(p) BOOST_PP_NODE_32(p)(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_32(p) BOOST_PP_NODE_16(p)(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_16(p) BOOST_PP_NODE_8(p)(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_8(p) BOOST_PP_NODE_4(p)(p)(p)
+# define BOOST_PP_NODE_ENTRY_4(p) BOOST_PP_NODE_2(p)(p)
+# define BOOST_PP_NODE_ENTRY_2(p) BOOST_PP_NODE_1(p)
+#
+# define BOOST_PP_NODE_128(p) BOOST_PP_IIF(p##(128), BOOST_PP_NODE_64, BOOST_PP_NODE_192)
+# define BOOST_PP_NODE_64(p) BOOST_PP_IIF(p##(64), BOOST_PP_NODE_32, BOOST_PP_NODE_96)
+# define BOOST_PP_NODE_32(p) BOOST_PP_IIF(p##(32), BOOST_PP_NODE_16, BOOST_PP_NODE_48)
+# define BOOST_PP_NODE_16(p) BOOST_PP_IIF(p##(16), BOOST_PP_NODE_8, BOOST_PP_NODE_24)
+# define BOOST_PP_NODE_8(p) BOOST_PP_IIF(p##(8), BOOST_PP_NODE_4, BOOST_PP_NODE_12)
+# define BOOST_PP_NODE_4(p) BOOST_PP_IIF(p##(4), BOOST_PP_NODE_2, BOOST_PP_NODE_6)
+# define BOOST_PP_NODE_2(p) BOOST_PP_IIF(p##(2), BOOST_PP_NODE_1, BOOST_PP_NODE_3)
+# define BOOST_PP_NODE_1(p) BOOST_PP_IIF(p##(1), 1, 2)
+# define BOOST_PP_NODE_3(p) BOOST_PP_IIF(p##(3), 3, 4)
+# define BOOST_PP_NODE_6(p) BOOST_PP_IIF(p##(6), BOOST_PP_NODE_5, BOOST_PP_NODE_7)
+# define BOOST_PP_NODE_5(p) BOOST_PP_IIF(p##(5), 5, 6)
+# define BOOST_PP_NODE_7(p) BOOST_PP_IIF(p##(7), 7, 8)
+# define BOOST_PP_NODE_12(p) BOOST_PP_IIF(p##(12), BOOST_PP_NODE_10, BOOST_PP_NODE_14)
+# define BOOST_PP_NODE_10(p) BOOST_PP_IIF(p##(10), BOOST_PP_NODE_9, BOOST_PP_NODE_11)
+# define BOOST_PP_NODE_9(p) BOOST_PP_IIF(p##(9), 9, 10)
+# define BOOST_PP_NODE_11(p) BOOST_PP_IIF(p##(11), 11, 12)
+# define BOOST_PP_NODE_14(p) BOOST_PP_IIF(p##(14), BOOST_PP_NODE_13, BOOST_PP_NODE_15)
+# define BOOST_PP_NODE_13(p) BOOST_PP_IIF(p##(13), 13, 14)
+# define BOOST_PP_NODE_15(p) BOOST_PP_IIF(p##(15), 15, 16)
+# define BOOST_PP_NODE_24(p) BOOST_PP_IIF(p##(24), BOOST_PP_NODE_20, BOOST_PP_NODE_28)
+# define BOOST_PP_NODE_20(p) BOOST_PP_IIF(p##(20), BOOST_PP_NODE_18, BOOST_PP_NODE_22)
+# define BOOST_PP_NODE_18(p) BOOST_PP_IIF(p##(18), BOOST_PP_NODE_17, BOOST_PP_NODE_19)
+# define BOOST_PP_NODE_17(p) BOOST_PP_IIF(p##(17), 17, 18)
+# define BOOST_PP_NODE_19(p) BOOST_PP_IIF(p##(19), 19, 20)
+# define BOOST_PP_NODE_22(p) BOOST_PP_IIF(p##(22), BOOST_PP_NODE_21, BOOST_PP_NODE_23)
+# define BOOST_PP_NODE_21(p) BOOST_PP_IIF(p##(21), 21, 22)
+# define BOOST_PP_NODE_23(p) BOOST_PP_IIF(p##(23), 23, 24)
+# define BOOST_PP_NODE_28(p) BOOST_PP_IIF(p##(28), BOOST_PP_NODE_26, BOOST_PP_NODE_30)
+# define BOOST_PP_NODE_26(p) BOOST_PP_IIF(p##(26), BOOST_PP_NODE_25, BOOST_PP_NODE_27)
+# define BOOST_PP_NODE_25(p) BOOST_PP_IIF(p##(25), 25, 26)
+# define BOOST_PP_NODE_27(p) BOOST_PP_IIF(p##(27), 27, 28)
+# define BOOST_PP_NODE_30(p) BOOST_PP_IIF(p##(30), BOOST_PP_NODE_29, BOOST_PP_NODE_31)
+# define BOOST_PP_NODE_29(p) BOOST_PP_IIF(p##(29), 29, 30)
+# define BOOST_PP_NODE_31(p) BOOST_PP_IIF(p##(31), 31, 32)
+# define BOOST_PP_NODE_48(p) BOOST_PP_IIF(p##(48), BOOST_PP_NODE_40, BOOST_PP_NODE_56)
+# define BOOST_PP_NODE_40(p) BOOST_PP_IIF(p##(40), BOOST_PP_NODE_36, BOOST_PP_NODE_44)
+# define BOOST_PP_NODE_36(p) BOOST_PP_IIF(p##(36), BOOST_PP_NODE_34, BOOST_PP_NODE_38)
+# define BOOST_PP_NODE_34(p) BOOST_PP_IIF(p##(34), BOOST_PP_NODE_33, BOOST_PP_NODE_35)
+# define BOOST_PP_NODE_33(p) BOOST_PP_IIF(p##(33), 33, 34)
+# define BOOST_PP_NODE_35(p) BOOST_PP_IIF(p##(35), 35, 36)
+# define BOOST_PP_NODE_38(p) BOOST_PP_IIF(p##(38), BOOST_PP_NODE_37, BOOST_PP_NODE_39)
+# define BOOST_PP_NODE_37(p) BOOST_PP_IIF(p##(37), 37, 38)
+# define BOOST_PP_NODE_39(p) BOOST_PP_IIF(p##(39), 39, 40)
+# define BOOST_PP_NODE_44(p) BOOST_PP_IIF(p##(44), BOOST_PP_NODE_42, BOOST_PP_NODE_46)
+# define BOOST_PP_NODE_42(p) BOOST_PP_IIF(p##(42), BOOST_PP_NODE_41, BOOST_PP_NODE_43)
+# define BOOST_PP_NODE_41(p) BOOST_PP_IIF(p##(41), 41, 42)
+# define BOOST_PP_NODE_43(p) BOOST_PP_IIF(p##(43), 43, 44)
+# define BOOST_PP_NODE_46(p) BOOST_PP_IIF(p##(46), BOOST_PP_NODE_45, BOOST_PP_NODE_47)
+# define BOOST_PP_NODE_45(p) BOOST_PP_IIF(p##(45), 45, 46)
+# define BOOST_PP_NODE_47(p) BOOST_PP_IIF(p##(47), 47, 48)
+# define BOOST_PP_NODE_56(p) BOOST_PP_IIF(p##(56), BOOST_PP_NODE_52, BOOST_PP_NODE_60)
+# define BOOST_PP_NODE_52(p) BOOST_PP_IIF(p##(52), BOOST_PP_NODE_50, BOOST_PP_NODE_54)
+# define BOOST_PP_NODE_50(p) BOOST_PP_IIF(p##(50), BOOST_PP_NODE_49, BOOST_PP_NODE_51)
+# define BOOST_PP_NODE_49(p) BOOST_PP_IIF(p##(49), 49, 50)
+# define BOOST_PP_NODE_51(p) BOOST_PP_IIF(p##(51), 51, 52)
+# define BOOST_PP_NODE_54(p) BOOST_PP_IIF(p##(54), BOOST_PP_NODE_53, BOOST_PP_NODE_55)
+# define BOOST_PP_NODE_53(p) BOOST_PP_IIF(p##(53), 53, 54)
+# define BOOST_PP_NODE_55(p) BOOST_PP_IIF(p##(55), 55, 56)
+# define BOOST_PP_NODE_60(p) BOOST_PP_IIF(p##(60), BOOST_PP_NODE_58, BOOST_PP_NODE_62)
+# define BOOST_PP_NODE_58(p) BOOST_PP_IIF(p##(58), BOOST_PP_NODE_57, BOOST_PP_NODE_59)
+# define BOOST_PP_NODE_57(p) BOOST_PP_IIF(p##(57), 57, 58)
+# define BOOST_PP_NODE_59(p) BOOST_PP_IIF(p##(59), 59, 60)
+# define BOOST_PP_NODE_62(p) BOOST_PP_IIF(p##(62), BOOST_PP_NODE_61, BOOST_PP_NODE_63)
+# define BOOST_PP_NODE_61(p) BOOST_PP_IIF(p##(61), 61, 62)
+# define BOOST_PP_NODE_63(p) BOOST_PP_IIF(p##(63), 63, 64)
+# define BOOST_PP_NODE_96(p) BOOST_PP_IIF(p##(96), BOOST_PP_NODE_80, BOOST_PP_NODE_112)
+# define BOOST_PP_NODE_80(p) BOOST_PP_IIF(p##(80), BOOST_PP_NODE_72, BOOST_PP_NODE_88)
+# define BOOST_PP_NODE_72(p) BOOST_PP_IIF(p##(72), BOOST_PP_NODE_68, BOOST_PP_NODE_76)
+# define BOOST_PP_NODE_68(p) BOOST_PP_IIF(p##(68), BOOST_PP_NODE_66, BOOST_PP_NODE_70)
+# define BOOST_PP_NODE_66(p) BOOST_PP_IIF(p##(66), BOOST_PP_NODE_65, BOOST_PP_NODE_67)
+# define BOOST_PP_NODE_65(p) BOOST_PP_IIF(p##(65), 65, 66)
+# define BOOST_PP_NODE_67(p) BOOST_PP_IIF(p##(67), 67, 68)
+# define BOOST_PP_NODE_70(p) BOOST_PP_IIF(p##(70), BOOST_PP_NODE_69, BOOST_PP_NODE_71)
+# define BOOST_PP_NODE_69(p) BOOST_PP_IIF(p##(69), 69, 70)
+# define BOOST_PP_NODE_71(p) BOOST_PP_IIF(p##(71), 71, 72)
+# define BOOST_PP_NODE_76(p) BOOST_PP_IIF(p##(76), BOOST_PP_NODE_74, BOOST_PP_NODE_78)
+# define BOOST_PP_NODE_74(p) BOOST_PP_IIF(p##(74), BOOST_PP_NODE_73, BOOST_PP_NODE_75)
+# define BOOST_PP_NODE_73(p) BOOST_PP_IIF(p##(73), 73, 74)
+# define BOOST_PP_NODE_75(p) BOOST_PP_IIF(p##(75), 75, 76)
+# define BOOST_PP_NODE_78(p) BOOST_PP_IIF(p##(78), BOOST_PP_NODE_77, BOOST_PP_NODE_79)
+# define BOOST_PP_NODE_77(p) BOOST_PP_IIF(p##(77), 77, 78)
+# define BOOST_PP_NODE_79(p) BOOST_PP_IIF(p##(79), 79, 80)
+# define BOOST_PP_NODE_88(p) BOOST_PP_IIF(p##(88), BOOST_PP_NODE_84, BOOST_PP_NODE_92)
+# define BOOST_PP_NODE_84(p) BOOST_PP_IIF(p##(84), BOOST_PP_NODE_82, BOOST_PP_NODE_86)
+# define BOOST_PP_NODE_82(p) BOOST_PP_IIF(p##(82), BOOST_PP_NODE_81, BOOST_PP_NODE_83)
+# define BOOST_PP_NODE_81(p) BOOST_PP_IIF(p##(81), 81, 82)
+# define BOOST_PP_NODE_83(p) BOOST_PP_IIF(p##(83), 83, 84)
+# define BOOST_PP_NODE_86(p) BOOST_PP_IIF(p##(86), BOOST_PP_NODE_85, BOOST_PP_NODE_87)
+# define BOOST_PP_NODE_85(p) BOOST_PP_IIF(p##(85), 85, 86)
+# define BOOST_PP_NODE_87(p) BOOST_PP_IIF(p##(87), 87, 88)
+# define BOOST_PP_NODE_92(p) BOOST_PP_IIF(p##(92), BOOST_PP_NODE_90, BOOST_PP_NODE_94)
+# define BOOST_PP_NODE_90(p) BOOST_PP_IIF(p##(90), BOOST_PP_NODE_89, BOOST_PP_NODE_91)
+# define BOOST_PP_NODE_89(p) BOOST_PP_IIF(p##(89), 89, 90)
+# define BOOST_PP_NODE_91(p) BOOST_PP_IIF(p##(91), 91, 92)
+# define BOOST_PP_NODE_94(p) BOOST_PP_IIF(p##(94), BOOST_PP_NODE_93, BOOST_PP_NODE_95)
+# define BOOST_PP_NODE_93(p) BOOST_PP_IIF(p##(93), 93, 94)
+# define BOOST_PP_NODE_95(p) BOOST_PP_IIF(p##(95), 95, 96)
+# define BOOST_PP_NODE_112(p) BOOST_PP_IIF(p##(112), BOOST_PP_NODE_104, BOOST_PP_NODE_120)
+# define BOOST_PP_NODE_104(p) BOOST_PP_IIF(p##(104), BOOST_PP_NODE_100, BOOST_PP_NODE_108)
+# define BOOST_PP_NODE_100(p) BOOST_PP_IIF(p##(100), BOOST_PP_NODE_98, BOOST_PP_NODE_102)
+# define BOOST_PP_NODE_98(p) BOOST_PP_IIF(p##(98), BOOST_PP_NODE_97, BOOST_PP_NODE_99)
+# define BOOST_PP_NODE_97(p) BOOST_PP_IIF(p##(97), 97, 98)
+# define BOOST_PP_NODE_99(p) BOOST_PP_IIF(p##(99), 99, 100)
+# define BOOST_PP_NODE_102(p) BOOST_PP_IIF(p##(102), BOOST_PP_NODE_101, BOOST_PP_NODE_103)
+# define BOOST_PP_NODE_101(p) BOOST_PP_IIF(p##(101), 101, 102)
+# define BOOST_PP_NODE_103(p) BOOST_PP_IIF(p##(103), 103, 104)
+# define BOOST_PP_NODE_108(p) BOOST_PP_IIF(p##(108), BOOST_PP_NODE_106, BOOST_PP_NODE_110)
+# define BOOST_PP_NODE_106(p) BOOST_PP_IIF(p##(106), BOOST_PP_NODE_105, BOOST_PP_NODE_107)
+# define BOOST_PP_NODE_105(p) BOOST_PP_IIF(p##(105), 105, 106)
+# define BOOST_PP_NODE_107(p) BOOST_PP_IIF(p##(107), 107, 108)
+# define BOOST_PP_NODE_110(p) BOOST_PP_IIF(p##(110), BOOST_PP_NODE_109, BOOST_PP_NODE_111)
+# define BOOST_PP_NODE_109(p) BOOST_PP_IIF(p##(109), 109, 110)
+# define BOOST_PP_NODE_111(p) BOOST_PP_IIF(p##(111), 111, 112)
+# define BOOST_PP_NODE_120(p) BOOST_PP_IIF(p##(120), BOOST_PP_NODE_116, BOOST_PP_NODE_124)
+# define BOOST_PP_NODE_116(p) BOOST_PP_IIF(p##(116), BOOST_PP_NODE_114, BOOST_PP_NODE_118)
+# define BOOST_PP_NODE_114(p) BOOST_PP_IIF(p##(114), BOOST_PP_NODE_113, BOOST_PP_NODE_115)
+# define BOOST_PP_NODE_113(p) BOOST_PP_IIF(p##(113), 113, 114)
+# define BOOST_PP_NODE_115(p) BOOST_PP_IIF(p##(115), 115, 116)
+# define BOOST_PP_NODE_118(p) BOOST_PP_IIF(p##(118), BOOST_PP_NODE_117, BOOST_PP_NODE_119)
+# define BOOST_PP_NODE_117(p) BOOST_PP_IIF(p##(117), 117, 118)
+# define BOOST_PP_NODE_119(p) BOOST_PP_IIF(p##(119), 119, 120)
+# define BOOST_PP_NODE_124(p) BOOST_PP_IIF(p##(124), BOOST_PP_NODE_122, BOOST_PP_NODE_126)
+# define BOOST_PP_NODE_122(p) BOOST_PP_IIF(p##(122), BOOST_PP_NODE_121, BOOST_PP_NODE_123)
+# define BOOST_PP_NODE_121(p) BOOST_PP_IIF(p##(121), 121, 122)
+# define BOOST_PP_NODE_123(p) BOOST_PP_IIF(p##(123), 123, 124)
+# define BOOST_PP_NODE_126(p) BOOST_PP_IIF(p##(126), BOOST_PP_NODE_125, BOOST_PP_NODE_127)
+# define BOOST_PP_NODE_125(p) BOOST_PP_IIF(p##(125), 125, 126)
+# define BOOST_PP_NODE_127(p) BOOST_PP_IIF(p##(127), 127, 128)
+# define BOOST_PP_NODE_192(p) BOOST_PP_IIF(p##(192), BOOST_PP_NODE_160, BOOST_PP_NODE_224)
+# define BOOST_PP_NODE_160(p) BOOST_PP_IIF(p##(160), BOOST_PP_NODE_144, BOOST_PP_NODE_176)
+# define BOOST_PP_NODE_144(p) BOOST_PP_IIF(p##(144), BOOST_PP_NODE_136, BOOST_PP_NODE_152)
+# define BOOST_PP_NODE_136(p) BOOST_PP_IIF(p##(136), BOOST_PP_NODE_132, BOOST_PP_NODE_140)
+# define BOOST_PP_NODE_132(p) BOOST_PP_IIF(p##(132), BOOST_PP_NODE_130, BOOST_PP_NODE_134)
+# define BOOST_PP_NODE_130(p) BOOST_PP_IIF(p##(130), BOOST_PP_NODE_129, BOOST_PP_NODE_131)
+# define BOOST_PP_NODE_129(p) BOOST_PP_IIF(p##(129), 129, 130)
+# define BOOST_PP_NODE_131(p) BOOST_PP_IIF(p##(131), 131, 132)
+# define BOOST_PP_NODE_134(p) BOOST_PP_IIF(p##(134), BOOST_PP_NODE_133, BOOST_PP_NODE_135)
+# define BOOST_PP_NODE_133(p) BOOST_PP_IIF(p##(133), 133, 134)
+# define BOOST_PP_NODE_135(p) BOOST_PP_IIF(p##(135), 135, 136)
+# define BOOST_PP_NODE_140(p) BOOST_PP_IIF(p##(140), BOOST_PP_NODE_138, BOOST_PP_NODE_142)
+# define BOOST_PP_NODE_138(p) BOOST_PP_IIF(p##(138), BOOST_PP_NODE_137, BOOST_PP_NODE_139)
+# define BOOST_PP_NODE_137(p) BOOST_PP_IIF(p##(137), 137, 138)
+# define BOOST_PP_NODE_139(p) BOOST_PP_IIF(p##(139), 139, 140)
+# define BOOST_PP_NODE_142(p) BOOST_PP_IIF(p##(142), BOOST_PP_NODE_141, BOOST_PP_NODE_143)
+# define BOOST_PP_NODE_141(p) BOOST_PP_IIF(p##(141), 141, 142)
+# define BOOST_PP_NODE_143(p) BOOST_PP_IIF(p##(143), 143, 144)
+# define BOOST_PP_NODE_152(p) BOOST_PP_IIF(p##(152), BOOST_PP_NODE_148, BOOST_PP_NODE_156)
+# define BOOST_PP_NODE_148(p) BOOST_PP_IIF(p##(148), BOOST_PP_NODE_146, BOOST_PP_NODE_150)
+# define BOOST_PP_NODE_146(p) BOOST_PP_IIF(p##(146), BOOST_PP_NODE_145, BOOST_PP_NODE_147)
+# define BOOST_PP_NODE_145(p) BOOST_PP_IIF(p##(145), 145, 146)
+# define BOOST_PP_NODE_147(p) BOOST_PP_IIF(p##(147), 147, 148)
+# define BOOST_PP_NODE_150(p) BOOST_PP_IIF(p##(150), BOOST_PP_NODE_149, BOOST_PP_NODE_151)
+# define BOOST_PP_NODE_149(p) BOOST_PP_IIF(p##(149), 149, 150)
+# define BOOST_PP_NODE_151(p) BOOST_PP_IIF(p##(151), 151, 152)
+# define BOOST_PP_NODE_156(p) BOOST_PP_IIF(p##(156), BOOST_PP_NODE_154, BOOST_PP_NODE_158)
+# define BOOST_PP_NODE_154(p) BOOST_PP_IIF(p##(154), BOOST_PP_NODE_153, BOOST_PP_NODE_155)
+# define BOOST_PP_NODE_153(p) BOOST_PP_IIF(p##(153), 153, 154)
+# define BOOST_PP_NODE_155(p) BOOST_PP_IIF(p##(155), 155, 156)
+# define BOOST_PP_NODE_158(p) BOOST_PP_IIF(p##(158), BOOST_PP_NODE_157, BOOST_PP_NODE_159)
+# define BOOST_PP_NODE_157(p) BOOST_PP_IIF(p##(157), 157, 158)
+# define BOOST_PP_NODE_159(p) BOOST_PP_IIF(p##(159), 159, 160)
+# define BOOST_PP_NODE_176(p) BOOST_PP_IIF(p##(176), BOOST_PP_NODE_168, BOOST_PP_NODE_184)
+# define BOOST_PP_NODE_168(p) BOOST_PP_IIF(p##(168), BOOST_PP_NODE_164, BOOST_PP_NODE_172)
+# define BOOST_PP_NODE_164(p) BOOST_PP_IIF(p##(164), BOOST_PP_NODE_162, BOOST_PP_NODE_166)
+# define BOOST_PP_NODE_162(p) BOOST_PP_IIF(p##(162), BOOST_PP_NODE_161, BOOST_PP_NODE_163)
+# define BOOST_PP_NODE_161(p) BOOST_PP_IIF(p##(161), 161, 162)
+# define BOOST_PP_NODE_163(p) BOOST_PP_IIF(p##(163), 163, 164)
+# define BOOST_PP_NODE_166(p) BOOST_PP_IIF(p##(166), BOOST_PP_NODE_165, BOOST_PP_NODE_167)
+# define BOOST_PP_NODE_165(p) BOOST_PP_IIF(p##(165), 165, 166)
+# define BOOST_PP_NODE_167(p) BOOST_PP_IIF(p##(167), 167, 168)
+# define BOOST_PP_NODE_172(p) BOOST_PP_IIF(p##(172), BOOST_PP_NODE_170, BOOST_PP_NODE_174)
+# define BOOST_PP_NODE_170(p) BOOST_PP_IIF(p##(170), BOOST_PP_NODE_169, BOOST_PP_NODE_171)
+# define BOOST_PP_NODE_169(p) BOOST_PP_IIF(p##(169), 169, 170)
+# define BOOST_PP_NODE_171(p) BOOST_PP_IIF(p##(171), 171, 172)
+# define BOOST_PP_NODE_174(p) BOOST_PP_IIF(p##(174), BOOST_PP_NODE_173, BOOST_PP_NODE_175)
+# define BOOST_PP_NODE_173(p) BOOST_PP_IIF(p##(173), 173, 174)
+# define BOOST_PP_NODE_175(p) BOOST_PP_IIF(p##(175), 175, 176)
+# define BOOST_PP_NODE_184(p) BOOST_PP_IIF(p##(184), BOOST_PP_NODE_180, BOOST_PP_NODE_188)
+# define BOOST_PP_NODE_180(p) BOOST_PP_IIF(p##(180), BOOST_PP_NODE_178, BOOST_PP_NODE_182)
+# define BOOST_PP_NODE_178(p) BOOST_PP_IIF(p##(178), BOOST_PP_NODE_177, BOOST_PP_NODE_179)
+# define BOOST_PP_NODE_177(p) BOOST_PP_IIF(p##(177), 177, 178)
+# define BOOST_PP_NODE_179(p) BOOST_PP_IIF(p##(179), 179, 180)
+# define BOOST_PP_NODE_182(p) BOOST_PP_IIF(p##(182), BOOST_PP_NODE_181, BOOST_PP_NODE_183)
+# define BOOST_PP_NODE_181(p) BOOST_PP_IIF(p##(181), 181, 182)
+# define BOOST_PP_NODE_183(p) BOOST_PP_IIF(p##(183), 183, 184)
+# define BOOST_PP_NODE_188(p) BOOST_PP_IIF(p##(188), BOOST_PP_NODE_186, BOOST_PP_NODE_190)
+# define BOOST_PP_NODE_186(p) BOOST_PP_IIF(p##(186), BOOST_PP_NODE_185, BOOST_PP_NODE_187)
+# define BOOST_PP_NODE_185(p) BOOST_PP_IIF(p##(185), 185, 186)
+# define BOOST_PP_NODE_187(p) BOOST_PP_IIF(p##(187), 187, 188)
+# define BOOST_PP_NODE_190(p) BOOST_PP_IIF(p##(190), BOOST_PP_NODE_189, BOOST_PP_NODE_191)
+# define BOOST_PP_NODE_189(p) BOOST_PP_IIF(p##(189), 189, 190)
+# define BOOST_PP_NODE_191(p) BOOST_PP_IIF(p##(191), 191, 192)
+# define BOOST_PP_NODE_224(p) BOOST_PP_IIF(p##(224), BOOST_PP_NODE_208, BOOST_PP_NODE_240)
+# define BOOST_PP_NODE_208(p) BOOST_PP_IIF(p##(208), BOOST_PP_NODE_200, BOOST_PP_NODE_216)
+# define BOOST_PP_NODE_200(p) BOOST_PP_IIF(p##(200), BOOST_PP_NODE_196, BOOST_PP_NODE_204)
+# define BOOST_PP_NODE_196(p) BOOST_PP_IIF(p##(196), BOOST_PP_NODE_194, BOOST_PP_NODE_198)
+# define BOOST_PP_NODE_194(p) BOOST_PP_IIF(p##(194), BOOST_PP_NODE_193, BOOST_PP_NODE_195)
+# define BOOST_PP_NODE_193(p) BOOST_PP_IIF(p##(193), 193, 194)
+# define BOOST_PP_NODE_195(p) BOOST_PP_IIF(p##(195), 195, 196)
+# define BOOST_PP_NODE_198(p) BOOST_PP_IIF(p##(198), BOOST_PP_NODE_197, BOOST_PP_NODE_199)
+# define BOOST_PP_NODE_197(p) BOOST_PP_IIF(p##(197), 197, 198)
+# define BOOST_PP_NODE_199(p) BOOST_PP_IIF(p##(199), 199, 200)
+# define BOOST_PP_NODE_204(p) BOOST_PP_IIF(p##(204), BOOST_PP_NODE_202, BOOST_PP_NODE_206)
+# define BOOST_PP_NODE_202(p) BOOST_PP_IIF(p##(202), BOOST_PP_NODE_201, BOOST_PP_NODE_203)
+# define BOOST_PP_NODE_201(p) BOOST_PP_IIF(p##(201), 201, 202)
+# define BOOST_PP_NODE_203(p) BOOST_PP_IIF(p##(203), 203, 204)
+# define BOOST_PP_NODE_206(p) BOOST_PP_IIF(p##(206), BOOST_PP_NODE_205, BOOST_PP_NODE_207)
+# define BOOST_PP_NODE_205(p) BOOST_PP_IIF(p##(205), 205, 206)
+# define BOOST_PP_NODE_207(p) BOOST_PP_IIF(p##(207), 207, 208)
+# define BOOST_PP_NODE_216(p) BOOST_PP_IIF(p##(216), BOOST_PP_NODE_212, BOOST_PP_NODE_220)
+# define BOOST_PP_NODE_212(p) BOOST_PP_IIF(p##(212), BOOST_PP_NODE_210, BOOST_PP_NODE_214)
+# define BOOST_PP_NODE_210(p) BOOST_PP_IIF(p##(210), BOOST_PP_NODE_209, BOOST_PP_NODE_211)
+# define BOOST_PP_NODE_209(p) BOOST_PP_IIF(p##(209), 209, 210)
+# define BOOST_PP_NODE_211(p) BOOST_PP_IIF(p##(211), 211, 212)
+# define BOOST_PP_NODE_214(p) BOOST_PP_IIF(p##(214), BOOST_PP_NODE_213, BOOST_PP_NODE_215)
+# define BOOST_PP_NODE_213(p) BOOST_PP_IIF(p##(213), 213, 214)
+# define BOOST_PP_NODE_215(p) BOOST_PP_IIF(p##(215), 215, 216)
+# define BOOST_PP_NODE_220(p) BOOST_PP_IIF(p##(220), BOOST_PP_NODE_218, BOOST_PP_NODE_222)
+# define BOOST_PP_NODE_218(p) BOOST_PP_IIF(p##(218), BOOST_PP_NODE_217, BOOST_PP_NODE_219)
+# define BOOST_PP_NODE_217(p) BOOST_PP_IIF(p##(217), 217, 218)
+# define BOOST_PP_NODE_219(p) BOOST_PP_IIF(p##(219), 219, 220)
+# define BOOST_PP_NODE_222(p) BOOST_PP_IIF(p##(222), BOOST_PP_NODE_221, BOOST_PP_NODE_223)
+# define BOOST_PP_NODE_221(p) BOOST_PP_IIF(p##(221), 221, 222)
+# define BOOST_PP_NODE_223(p) BOOST_PP_IIF(p##(223), 223, 224)
+# define BOOST_PP_NODE_240(p) BOOST_PP_IIF(p##(240), BOOST_PP_NODE_232, BOOST_PP_NODE_248)
+# define BOOST_PP_NODE_232(p) BOOST_PP_IIF(p##(232), BOOST_PP_NODE_228, BOOST_PP_NODE_236)
+# define BOOST_PP_NODE_228(p) BOOST_PP_IIF(p##(228), BOOST_PP_NODE_226, BOOST_PP_NODE_230)
+# define BOOST_PP_NODE_226(p) BOOST_PP_IIF(p##(226), BOOST_PP_NODE_225, BOOST_PP_NODE_227)
+# define BOOST_PP_NODE_225(p) BOOST_PP_IIF(p##(225), 225, 226)
+# define BOOST_PP_NODE_227(p) BOOST_PP_IIF(p##(227), 227, 228)
+# define BOOST_PP_NODE_230(p) BOOST_PP_IIF(p##(230), BOOST_PP_NODE_229, BOOST_PP_NODE_231)
+# define BOOST_PP_NODE_229(p) BOOST_PP_IIF(p##(229), 229, 230)
+# define BOOST_PP_NODE_231(p) BOOST_PP_IIF(p##(231), 231, 232)
+# define BOOST_PP_NODE_236(p) BOOST_PP_IIF(p##(236), BOOST_PP_NODE_234, BOOST_PP_NODE_238)
+# define BOOST_PP_NODE_234(p) BOOST_PP_IIF(p##(234), BOOST_PP_NODE_233, BOOST_PP_NODE_235)
+# define BOOST_PP_NODE_233(p) BOOST_PP_IIF(p##(233), 233, 234)
+# define BOOST_PP_NODE_235(p) BOOST_PP_IIF(p##(235), 235, 236)
+# define BOOST_PP_NODE_238(p) BOOST_PP_IIF(p##(238), BOOST_PP_NODE_237, BOOST_PP_NODE_239)
+# define BOOST_PP_NODE_237(p) BOOST_PP_IIF(p##(237), 237, 238)
+# define BOOST_PP_NODE_239(p) BOOST_PP_IIF(p##(239), 239, 240)
+# define BOOST_PP_NODE_248(p) BOOST_PP_IIF(p##(248), BOOST_PP_NODE_244, BOOST_PP_NODE_252)
+# define BOOST_PP_NODE_244(p) BOOST_PP_IIF(p##(244), BOOST_PP_NODE_242, BOOST_PP_NODE_246)
+# define BOOST_PP_NODE_242(p) BOOST_PP_IIF(p##(242), BOOST_PP_NODE_241, BOOST_PP_NODE_243)
+# define BOOST_PP_NODE_241(p) BOOST_PP_IIF(p##(241), 241, 242)
+# define BOOST_PP_NODE_243(p) BOOST_PP_IIF(p##(243), 243, 244)
+# define BOOST_PP_NODE_246(p) BOOST_PP_IIF(p##(246), BOOST_PP_NODE_245, BOOST_PP_NODE_247)
+# define BOOST_PP_NODE_245(p) BOOST_PP_IIF(p##(245), 245, 246)
+# define BOOST_PP_NODE_247(p) BOOST_PP_IIF(p##(247), 247, 248)
+# define BOOST_PP_NODE_252(p) BOOST_PP_IIF(p##(252), BOOST_PP_NODE_250, BOOST_PP_NODE_254)
+# define BOOST_PP_NODE_250(p) BOOST_PP_IIF(p##(250), BOOST_PP_NODE_249, BOOST_PP_NODE_251)
+# define BOOST_PP_NODE_249(p) BOOST_PP_IIF(p##(249), 249, 250)
+# define BOOST_PP_NODE_251(p) BOOST_PP_IIF(p##(251), 251, 252)
+# define BOOST_PP_NODE_254(p) BOOST_PP_IIF(p##(254), BOOST_PP_NODE_253, BOOST_PP_NODE_255)
+# define BOOST_PP_NODE_253(p) BOOST_PP_IIF(p##(253), 253, 254)
+# define BOOST_PP_NODE_255(p) BOOST_PP_IIF(p##(255), 255, 256)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_binary.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_binary.hpp
new file mode 100644
index 0000000..3428833
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_binary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_BINARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_BINARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IS_BINARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
+# else
+# define BOOST_PP_IS_BINARY(x) BOOST_PP_IS_BINARY_I(x)
+# define BOOST_PP_IS_BINARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_BINARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_BINARY_CHECK(a, b) 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_BINARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_nullary.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_nullary.hpp
new file mode 100644
index 0000000..dee4075
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_nullary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_IS_NULLARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_NULLARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_NULLARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IS_NULLARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_NULLARY_CHECK)
+# else
+# define BOOST_PP_IS_NULLARY(x) BOOST_PP_IS_NULLARY_I(x)
+# define BOOST_PP_IS_NULLARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_NULLARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_NULLARY_CHECK() 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_NULLARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_unary.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_unary.hpp
new file mode 100644
index 0000000..e73cdfb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/is_unary.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+# define BOOST_PREPROCESSOR_DETAIL_IS_UNARY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/check.hpp>
+#
+# /* BOOST_PP_IS_UNARY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_IS_UNARY(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK)
+# else
+# define BOOST_PP_IS_UNARY(x) BOOST_PP_IS_UNARY_I(x)
+# define BOOST_PP_IS_UNARY_I(x) BOOST_PP_CHECK(x, BOOST_PP_IS_UNARY_CHECK)
+# endif
+#
+# define BOOST_PP_IS_UNARY_CHECK(a) 1
+# define BOOST_PP_CHECK_RESULT_BOOST_PP_IS_UNARY_CHECK 0, BOOST_PP_NIL
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/null.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/null.hpp
new file mode 100644
index 0000000..5eb0bd4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/null.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_NULL_HPP
+# define BOOST_PREPROCESSOR_DETAIL_NULL_HPP
+#
+# /* empty file */
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/split.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/split.hpp
new file mode 100644
index 0000000..f28a723
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/detail/split.hpp
@@ -0,0 +1,35 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# ifndef BOOST_PREPROCESSOR_DETAIL_SPLIT_HPP
+# define BOOST_PREPROCESSOR_DETAIL_SPLIT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_SPLIT */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I((n, im))
+# define BOOST_PP_SPLIT_I(par) BOOST_PP_SPLIT_II ## par
+# define BOOST_PP_SPLIT_II(n, a, b) BOOST_PP_SPLIT_ ## n(a, b)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I(n((im)))
+# define BOOST_PP_SPLIT_I(n) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_II_ ## n)
+# define BOOST_PP_SPLIT_II_0(s) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_0 s)
+# define BOOST_PP_SPLIT_II_1(s) BOOST_PP_SPLIT_ID(BOOST_PP_SPLIT_1 s)
+# define BOOST_PP_SPLIT_ID(id) id
+# else
+# define BOOST_PP_SPLIT(n, im) BOOST_PP_SPLIT_I(n)(im)
+# define BOOST_PP_SPLIT_I(n) BOOST_PP_SPLIT_ ## n
+# endif
+#
+# define BOOST_PP_SPLIT_0(a, b) a
+# define BOOST_PP_SPLIT_1(a, b) b
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/empty.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/empty.hpp
new file mode 100644
index 0000000..116ef74
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/empty.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_EMPTY_HPP
+# define BOOST_PREPROCESSOR_EMPTY_HPP
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/enum.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum.hpp
new file mode 100644
index 0000000..ae05bb0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_HPP
+# define BOOST_PREPROCESSOR_ENUM_HPP
+#
+# include <boost/preprocessor/repetition/enum.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params.hpp
new file mode 100644
index 0000000..414f8aa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_HPP
+#
+# include <boost/preprocessor/repetition/enum_params.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params_with_a_default.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params_with_a_default.hpp
new file mode 100644
index 0000000..fd1ad4c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params_with_a_default.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params_with_defaults.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params_with_defaults.hpp
new file mode 100644
index 0000000..e58fa3e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_params_with_defaults.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
+# define BOOST_PREPROCESSOR_ENUM_PARAMS_WITH_DEFAULTS_HPP
+#
+# include <boost/preprocessor/repetition/enum_params_with_defaults.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_shifted.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_shifted.hpp
new file mode 100644
index 0000000..aa6a698
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_shifted.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP
+# define BOOST_PREPROCESSOR_ENUM_SHIFTED_HPP
+#
+# include <boost/preprocessor/repetition/enum_shifted.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_shifted_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_shifted_params.hpp
new file mode 100644
index 0000000..462c642
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/enum_shifted_params.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+# define BOOST_PREPROCESSOR_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/expand.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/expand.hpp
new file mode 100644
index 0000000..8c5d972
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/expand.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_EXPAND_HPP
+# define BOOST_PREPROCESSOR_EXPAND_HPP
+#
+# include <boost/preprocessor/facilities/expand.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/expr_if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/expr_if.hpp
new file mode 100644
index 0000000..f93e29b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/expr_if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_EXPR_IF_HPP
+# define BOOST_PREPROCESSOR_EXPR_IF_HPP
+#
+# include <boost/preprocessor/control/expr_if.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities.hpp
new file mode 100644
index 0000000..c20547c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_HPP
+#
+# include <boost/preprocessor/facilities/apply.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/facilities/expand.hpp>
+# include <boost/preprocessor/facilities/identity.hpp>
+# include <boost/preprocessor/facilities/intercept.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/apply.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/apply.hpp
new file mode 100644
index 0000000..e7d8c36
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/apply.hpp
@@ -0,0 +1,34 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/detail/is_unary.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_APPLY */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x)
+# define BOOST_PP_APPLY_I(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+# define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x)
+# define BOOST_PP_APPLY_I(x) BOOST_PP_APPLY_ ## x
+# define BOOST_PP_APPLY_(x) x
+# define BOOST_PP_APPLY_BOOST_PP_NIL
+# else
+# define BOOST_PP_APPLY(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/detail/is_empty.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/detail/is_empty.hpp
new file mode 100644
index 0000000..e044970
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/detail/is_empty.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+#ifndef BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP
+#define BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP
+
+#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
+
+#if BOOST_PP_VARIADICS_MSVC
+
+# pragma warning(once:4002)
+
+#define BOOST_PP_DETAIL_IS_EMPTY_IIF_0(t, b) b
+#define BOOST_PP_DETAIL_IS_EMPTY_IIF_1(t, b) t
+
+#else
+
+#define BOOST_PP_DETAIL_IS_EMPTY_IIF_0(t, ...) __VA_ARGS__
+#define BOOST_PP_DETAIL_IS_EMPTY_IIF_1(t, ...) t
+
+#endif
+
+#if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+
+#define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(param) \
+ BOOST_PP_IS_BEGIN_PARENS \
+ ( \
+ BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C param () \
+ ) \
+/**/
+
+#else
+
+#define BOOST_PP_DETAIL_IS_EMPTY_PROCESS(...) \
+ BOOST_PP_IS_BEGIN_PARENS \
+ ( \
+ BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C __VA_ARGS__ () \
+ ) \
+/**/
+
+#endif
+
+#define BOOST_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(a, b) a ## b
+#define BOOST_PP_DETAIL_IS_EMPTY_IIF(bit) BOOST_PP_DETAIL_IS_EMPTY_PRIMITIVE_CAT(BOOST_PP_DETAIL_IS_EMPTY_IIF_,bit)
+#define BOOST_PP_DETAIL_IS_EMPTY_NON_FUNCTION_C(...) ()
+
+#endif /* BOOST_PREPROCESSOR_DETAIL_IS_EMPTY_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/empty.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/empty.hpp
new file mode 100644
index 0000000..6f215dc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/empty.hpp
@@ -0,0 +1,23 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_EMPTY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_EMPTY */
+#
+# define BOOST_PP_EMPTY()
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/expand.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/expand.hpp
new file mode 100644
index 0000000..c8661a1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/expand.hpp
@@ -0,0 +1,28 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_EXPAND_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_EXPAND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_EXPAND(x) BOOST_PP_EXPAND_I(x)
+# else
+# define BOOST_PP_EXPAND(x) BOOST_PP_EXPAND_OO((x))
+# define BOOST_PP_EXPAND_OO(par) BOOST_PP_EXPAND_I ## par
+# endif
+#
+# define BOOST_PP_EXPAND_I(x) x
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/identity.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/identity.hpp
new file mode 100644
index 0000000..8a7834d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/identity.hpp
@@ -0,0 +1,27 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Edward Diener (2015) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IDENTITY_HPP
+#
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_IDENTITY */
+#
+# define BOOST_PP_IDENTITY(item) item BOOST_PP_EMPTY
+#
+# define BOOST_PP_IDENTITY_N(item,n) item BOOST_PP_TUPLE_EAT_N(n)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/intercept.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/intercept.hpp
new file mode 100644
index 0000000..41dcc6a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/intercept.hpp
@@ -0,0 +1,277 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_INTERCEPT_HPP
+#
+# /* BOOST_PP_INTERCEPT */
+#
+# define BOOST_PP_INTERCEPT BOOST_PP_INTERCEPT_
+#
+# define BOOST_PP_INTERCEPT_0
+# define BOOST_PP_INTERCEPT_1
+# define BOOST_PP_INTERCEPT_2
+# define BOOST_PP_INTERCEPT_3
+# define BOOST_PP_INTERCEPT_4
+# define BOOST_PP_INTERCEPT_5
+# define BOOST_PP_INTERCEPT_6
+# define BOOST_PP_INTERCEPT_7
+# define BOOST_PP_INTERCEPT_8
+# define BOOST_PP_INTERCEPT_9
+# define BOOST_PP_INTERCEPT_10
+# define BOOST_PP_INTERCEPT_11
+# define BOOST_PP_INTERCEPT_12
+# define BOOST_PP_INTERCEPT_13
+# define BOOST_PP_INTERCEPT_14
+# define BOOST_PP_INTERCEPT_15
+# define BOOST_PP_INTERCEPT_16
+# define BOOST_PP_INTERCEPT_17
+# define BOOST_PP_INTERCEPT_18
+# define BOOST_PP_INTERCEPT_19
+# define BOOST_PP_INTERCEPT_20
+# define BOOST_PP_INTERCEPT_21
+# define BOOST_PP_INTERCEPT_22
+# define BOOST_PP_INTERCEPT_23
+# define BOOST_PP_INTERCEPT_24
+# define BOOST_PP_INTERCEPT_25
+# define BOOST_PP_INTERCEPT_26
+# define BOOST_PP_INTERCEPT_27
+# define BOOST_PP_INTERCEPT_28
+# define BOOST_PP_INTERCEPT_29
+# define BOOST_PP_INTERCEPT_30
+# define BOOST_PP_INTERCEPT_31
+# define BOOST_PP_INTERCEPT_32
+# define BOOST_PP_INTERCEPT_33
+# define BOOST_PP_INTERCEPT_34
+# define BOOST_PP_INTERCEPT_35
+# define BOOST_PP_INTERCEPT_36
+# define BOOST_PP_INTERCEPT_37
+# define BOOST_PP_INTERCEPT_38
+# define BOOST_PP_INTERCEPT_39
+# define BOOST_PP_INTERCEPT_40
+# define BOOST_PP_INTERCEPT_41
+# define BOOST_PP_INTERCEPT_42
+# define BOOST_PP_INTERCEPT_43
+# define BOOST_PP_INTERCEPT_44
+# define BOOST_PP_INTERCEPT_45
+# define BOOST_PP_INTERCEPT_46
+# define BOOST_PP_INTERCEPT_47
+# define BOOST_PP_INTERCEPT_48
+# define BOOST_PP_INTERCEPT_49
+# define BOOST_PP_INTERCEPT_50
+# define BOOST_PP_INTERCEPT_51
+# define BOOST_PP_INTERCEPT_52
+# define BOOST_PP_INTERCEPT_53
+# define BOOST_PP_INTERCEPT_54
+# define BOOST_PP_INTERCEPT_55
+# define BOOST_PP_INTERCEPT_56
+# define BOOST_PP_INTERCEPT_57
+# define BOOST_PP_INTERCEPT_58
+# define BOOST_PP_INTERCEPT_59
+# define BOOST_PP_INTERCEPT_60
+# define BOOST_PP_INTERCEPT_61
+# define BOOST_PP_INTERCEPT_62
+# define BOOST_PP_INTERCEPT_63
+# define BOOST_PP_INTERCEPT_64
+# define BOOST_PP_INTERCEPT_65
+# define BOOST_PP_INTERCEPT_66
+# define BOOST_PP_INTERCEPT_67
+# define BOOST_PP_INTERCEPT_68
+# define BOOST_PP_INTERCEPT_69
+# define BOOST_PP_INTERCEPT_70
+# define BOOST_PP_INTERCEPT_71
+# define BOOST_PP_INTERCEPT_72
+# define BOOST_PP_INTERCEPT_73
+# define BOOST_PP_INTERCEPT_74
+# define BOOST_PP_INTERCEPT_75
+# define BOOST_PP_INTERCEPT_76
+# define BOOST_PP_INTERCEPT_77
+# define BOOST_PP_INTERCEPT_78
+# define BOOST_PP_INTERCEPT_79
+# define BOOST_PP_INTERCEPT_80
+# define BOOST_PP_INTERCEPT_81
+# define BOOST_PP_INTERCEPT_82
+# define BOOST_PP_INTERCEPT_83
+# define BOOST_PP_INTERCEPT_84
+# define BOOST_PP_INTERCEPT_85
+# define BOOST_PP_INTERCEPT_86
+# define BOOST_PP_INTERCEPT_87
+# define BOOST_PP_INTERCEPT_88
+# define BOOST_PP_INTERCEPT_89
+# define BOOST_PP_INTERCEPT_90
+# define BOOST_PP_INTERCEPT_91
+# define BOOST_PP_INTERCEPT_92
+# define BOOST_PP_INTERCEPT_93
+# define BOOST_PP_INTERCEPT_94
+# define BOOST_PP_INTERCEPT_95
+# define BOOST_PP_INTERCEPT_96
+# define BOOST_PP_INTERCEPT_97
+# define BOOST_PP_INTERCEPT_98
+# define BOOST_PP_INTERCEPT_99
+# define BOOST_PP_INTERCEPT_100
+# define BOOST_PP_INTERCEPT_101
+# define BOOST_PP_INTERCEPT_102
+# define BOOST_PP_INTERCEPT_103
+# define BOOST_PP_INTERCEPT_104
+# define BOOST_PP_INTERCEPT_105
+# define BOOST_PP_INTERCEPT_106
+# define BOOST_PP_INTERCEPT_107
+# define BOOST_PP_INTERCEPT_108
+# define BOOST_PP_INTERCEPT_109
+# define BOOST_PP_INTERCEPT_110
+# define BOOST_PP_INTERCEPT_111
+# define BOOST_PP_INTERCEPT_112
+# define BOOST_PP_INTERCEPT_113
+# define BOOST_PP_INTERCEPT_114
+# define BOOST_PP_INTERCEPT_115
+# define BOOST_PP_INTERCEPT_116
+# define BOOST_PP_INTERCEPT_117
+# define BOOST_PP_INTERCEPT_118
+# define BOOST_PP_INTERCEPT_119
+# define BOOST_PP_INTERCEPT_120
+# define BOOST_PP_INTERCEPT_121
+# define BOOST_PP_INTERCEPT_122
+# define BOOST_PP_INTERCEPT_123
+# define BOOST_PP_INTERCEPT_124
+# define BOOST_PP_INTERCEPT_125
+# define BOOST_PP_INTERCEPT_126
+# define BOOST_PP_INTERCEPT_127
+# define BOOST_PP_INTERCEPT_128
+# define BOOST_PP_INTERCEPT_129
+# define BOOST_PP_INTERCEPT_130
+# define BOOST_PP_INTERCEPT_131
+# define BOOST_PP_INTERCEPT_132
+# define BOOST_PP_INTERCEPT_133
+# define BOOST_PP_INTERCEPT_134
+# define BOOST_PP_INTERCEPT_135
+# define BOOST_PP_INTERCEPT_136
+# define BOOST_PP_INTERCEPT_137
+# define BOOST_PP_INTERCEPT_138
+# define BOOST_PP_INTERCEPT_139
+# define BOOST_PP_INTERCEPT_140
+# define BOOST_PP_INTERCEPT_141
+# define BOOST_PP_INTERCEPT_142
+# define BOOST_PP_INTERCEPT_143
+# define BOOST_PP_INTERCEPT_144
+# define BOOST_PP_INTERCEPT_145
+# define BOOST_PP_INTERCEPT_146
+# define BOOST_PP_INTERCEPT_147
+# define BOOST_PP_INTERCEPT_148
+# define BOOST_PP_INTERCEPT_149
+# define BOOST_PP_INTERCEPT_150
+# define BOOST_PP_INTERCEPT_151
+# define BOOST_PP_INTERCEPT_152
+# define BOOST_PP_INTERCEPT_153
+# define BOOST_PP_INTERCEPT_154
+# define BOOST_PP_INTERCEPT_155
+# define BOOST_PP_INTERCEPT_156
+# define BOOST_PP_INTERCEPT_157
+# define BOOST_PP_INTERCEPT_158
+# define BOOST_PP_INTERCEPT_159
+# define BOOST_PP_INTERCEPT_160
+# define BOOST_PP_INTERCEPT_161
+# define BOOST_PP_INTERCEPT_162
+# define BOOST_PP_INTERCEPT_163
+# define BOOST_PP_INTERCEPT_164
+# define BOOST_PP_INTERCEPT_165
+# define BOOST_PP_INTERCEPT_166
+# define BOOST_PP_INTERCEPT_167
+# define BOOST_PP_INTERCEPT_168
+# define BOOST_PP_INTERCEPT_169
+# define BOOST_PP_INTERCEPT_170
+# define BOOST_PP_INTERCEPT_171
+# define BOOST_PP_INTERCEPT_172
+# define BOOST_PP_INTERCEPT_173
+# define BOOST_PP_INTERCEPT_174
+# define BOOST_PP_INTERCEPT_175
+# define BOOST_PP_INTERCEPT_176
+# define BOOST_PP_INTERCEPT_177
+# define BOOST_PP_INTERCEPT_178
+# define BOOST_PP_INTERCEPT_179
+# define BOOST_PP_INTERCEPT_180
+# define BOOST_PP_INTERCEPT_181
+# define BOOST_PP_INTERCEPT_182
+# define BOOST_PP_INTERCEPT_183
+# define BOOST_PP_INTERCEPT_184
+# define BOOST_PP_INTERCEPT_185
+# define BOOST_PP_INTERCEPT_186
+# define BOOST_PP_INTERCEPT_187
+# define BOOST_PP_INTERCEPT_188
+# define BOOST_PP_INTERCEPT_189
+# define BOOST_PP_INTERCEPT_190
+# define BOOST_PP_INTERCEPT_191
+# define BOOST_PP_INTERCEPT_192
+# define BOOST_PP_INTERCEPT_193
+# define BOOST_PP_INTERCEPT_194
+# define BOOST_PP_INTERCEPT_195
+# define BOOST_PP_INTERCEPT_196
+# define BOOST_PP_INTERCEPT_197
+# define BOOST_PP_INTERCEPT_198
+# define BOOST_PP_INTERCEPT_199
+# define BOOST_PP_INTERCEPT_200
+# define BOOST_PP_INTERCEPT_201
+# define BOOST_PP_INTERCEPT_202
+# define BOOST_PP_INTERCEPT_203
+# define BOOST_PP_INTERCEPT_204
+# define BOOST_PP_INTERCEPT_205
+# define BOOST_PP_INTERCEPT_206
+# define BOOST_PP_INTERCEPT_207
+# define BOOST_PP_INTERCEPT_208
+# define BOOST_PP_INTERCEPT_209
+# define BOOST_PP_INTERCEPT_210
+# define BOOST_PP_INTERCEPT_211
+# define BOOST_PP_INTERCEPT_212
+# define BOOST_PP_INTERCEPT_213
+# define BOOST_PP_INTERCEPT_214
+# define BOOST_PP_INTERCEPT_215
+# define BOOST_PP_INTERCEPT_216
+# define BOOST_PP_INTERCEPT_217
+# define BOOST_PP_INTERCEPT_218
+# define BOOST_PP_INTERCEPT_219
+# define BOOST_PP_INTERCEPT_220
+# define BOOST_PP_INTERCEPT_221
+# define BOOST_PP_INTERCEPT_222
+# define BOOST_PP_INTERCEPT_223
+# define BOOST_PP_INTERCEPT_224
+# define BOOST_PP_INTERCEPT_225
+# define BOOST_PP_INTERCEPT_226
+# define BOOST_PP_INTERCEPT_227
+# define BOOST_PP_INTERCEPT_228
+# define BOOST_PP_INTERCEPT_229
+# define BOOST_PP_INTERCEPT_230
+# define BOOST_PP_INTERCEPT_231
+# define BOOST_PP_INTERCEPT_232
+# define BOOST_PP_INTERCEPT_233
+# define BOOST_PP_INTERCEPT_234
+# define BOOST_PP_INTERCEPT_235
+# define BOOST_PP_INTERCEPT_236
+# define BOOST_PP_INTERCEPT_237
+# define BOOST_PP_INTERCEPT_238
+# define BOOST_PP_INTERCEPT_239
+# define BOOST_PP_INTERCEPT_240
+# define BOOST_PP_INTERCEPT_241
+# define BOOST_PP_INTERCEPT_242
+# define BOOST_PP_INTERCEPT_243
+# define BOOST_PP_INTERCEPT_244
+# define BOOST_PP_INTERCEPT_245
+# define BOOST_PP_INTERCEPT_246
+# define BOOST_PP_INTERCEPT_247
+# define BOOST_PP_INTERCEPT_248
+# define BOOST_PP_INTERCEPT_249
+# define BOOST_PP_INTERCEPT_250
+# define BOOST_PP_INTERCEPT_251
+# define BOOST_PP_INTERCEPT_252
+# define BOOST_PP_INTERCEPT_253
+# define BOOST_PP_INTERCEPT_254
+# define BOOST_PP_INTERCEPT_255
+# define BOOST_PP_INTERCEPT_256
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_1.hpp
new file mode 100644
index 0000000..f286dcd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_1.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2003.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_1_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IS_1_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+#
+# /* BOOST_PP_IS_1 */
+#
+# define BOOST_PP_IS_1(x) BOOST_PP_IS_EMPTY(BOOST_PP_CAT(BOOST_PP_IS_1_HELPER_, x))
+# define BOOST_PP_IS_1_HELPER_1
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty.hpp
new file mode 100644
index 0000000..46aadd3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty.hpp
@@ -0,0 +1,56 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2003.
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/facilities/is_empty_variadic.hpp>
+#
+# else
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/facilities/identity.hpp>
+# else
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/detail/split.hpp>
+# endif
+#
+# /* BOOST_PP_IS_EMPTY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(x BOOST_PP_IS_EMPTY_HELPER)
+# define BOOST_PP_IS_EMPTY_I(contents) BOOST_PP_TUPLE_ELEM(2, 1, (BOOST_PP_IS_EMPTY_DEF_ ## contents()))
+# define BOOST_PP_IS_EMPTY_DEF_BOOST_PP_IS_EMPTY_HELPER 1, BOOST_PP_IDENTITY(1)
+# define BOOST_PP_IS_EMPTY_HELPER() , 0
+# else
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I(BOOST_PP_IS_EMPTY_HELPER x ())
+# define BOOST_PP_IS_EMPTY_I(test) BOOST_PP_IS_EMPTY_II(BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PP_IS_EMPTY_DEF_, test)))
+# define BOOST_PP_IS_EMPTY_II(id) id
+# else
+# define BOOST_PP_IS_EMPTY(x) BOOST_PP_IS_EMPTY_I((BOOST_PP_IS_EMPTY_HELPER x ()))
+# define BOOST_PP_IS_EMPTY_I(par) BOOST_PP_IS_EMPTY_II ## par
+# define BOOST_PP_IS_EMPTY_II(test) BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PP_IS_EMPTY_DEF_, test))
+# endif
+# define BOOST_PP_IS_EMPTY_HELPER() 1
+# define BOOST_PP_IS_EMPTY_DEF_1 1, BOOST_PP_NIL
+# define BOOST_PP_IS_EMPTY_DEF_BOOST_PP_IS_EMPTY_HELPER 0, BOOST_PP_NIL
+# endif
+#
+# endif /* BOOST_PP_VARIADICS */
+#
+# endif /* BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty_or_1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty_or_1.hpp
new file mode 100644
index 0000000..815666f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty_or_1.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2003.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_OR_1_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/facilities/identity.hpp>
+# include <boost/preprocessor/facilities/is_1.hpp>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+#
+# /* BOOST_PP_IS_EMPTY_OR_1 */
+#
+# define BOOST_PP_IS_EMPTY_OR_1(x) \
+ BOOST_PP_IIF( \
+ BOOST_PP_IS_EMPTY(x BOOST_PP_EMPTY()), \
+ BOOST_PP_IDENTITY(1), \
+ BOOST_PP_IS_1 \
+ )(x) \
+ /**/
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty_variadic.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty_variadic.hpp
new file mode 100644
index 0000000..eee4062
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/is_empty_variadic.hpp
@@ -0,0 +1,57 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/punctuation/is_begin_parens.hpp>
+# include <boost/preprocessor/facilities/detail/is_empty.hpp>
+#
+#if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+#
+#define BOOST_PP_IS_EMPTY(param) \
+ BOOST_PP_DETAIL_IS_EMPTY_IIF \
+ ( \
+ BOOST_PP_IS_BEGIN_PARENS \
+ ( \
+ param \
+ ) \
+ ) \
+ ( \
+ BOOST_PP_IS_EMPTY_ZERO, \
+ BOOST_PP_DETAIL_IS_EMPTY_PROCESS \
+ ) \
+ (param) \
+/**/
+#define BOOST_PP_IS_EMPTY_ZERO(param) 0
+# else
+#define BOOST_PP_IS_EMPTY(...) \
+ BOOST_PP_DETAIL_IS_EMPTY_IIF \
+ ( \
+ BOOST_PP_IS_BEGIN_PARENS \
+ ( \
+ __VA_ARGS__ \
+ ) \
+ ) \
+ ( \
+ BOOST_PP_IS_EMPTY_ZERO, \
+ BOOST_PP_DETAIL_IS_EMPTY_PROCESS \
+ ) \
+ (__VA_ARGS__) \
+/**/
+#define BOOST_PP_IS_EMPTY_ZERO(...) 0
+# endif /* BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */
+# endif /* BOOST_PP_VARIADICS */
+# endif /* BOOST_PREPROCESSOR_FACILITIES_IS_EMPTY_VARIADIC_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/overload.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/overload.hpp
new file mode 100644
index 0000000..1576316
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/facilities/overload.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
+# define BOOST_PREPROCESSOR_FACILITIES_OVERLOAD_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# /* BOOST_PP_OVERLOAD */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_OVERLOAD(prefix, ...) BOOST_PP_CAT(prefix, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/for.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/for.hpp
new file mode 100644
index 0000000..9ec9cee
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/for.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_FOR_HPP
+# define BOOST_PREPROCESSOR_FOR_HPP
+#
+# include <boost/preprocessor/repetition/for.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/identity.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/identity.hpp
new file mode 100644
index 0000000..847dd13
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/identity.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_IDENTITY_HPP
+# define BOOST_PREPROCESSOR_IDENTITY_HPP
+#
+# include <boost/preprocessor/facilities/identity.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/if.hpp
new file mode 100644
index 0000000..f1783f7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/if.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_IF_HPP
+# define BOOST_PREPROCESSOR_IF_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/inc.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/inc.hpp
new file mode 100644
index 0000000..b98d3a6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/inc.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_INC_HPP
+# define BOOST_PREPROCESSOR_INC_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iterate.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iterate.hpp
new file mode 100644
index 0000000..e720ec8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iterate.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ITERATE_HPP
+# define BOOST_PREPROCESSOR_ITERATE_HPP
+#
+# include <boost/preprocessor/iteration/iterate.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration.hpp
new file mode 100644
index 0000000..1055ac0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ITERATION_HPP
+# define BOOST_PREPROCESSOR_ITERATION_HPP
+#
+# include <boost/preprocessor/iteration/iterate.hpp>
+# include <boost/preprocessor/iteration/local.hpp>
+# include <boost/preprocessor/iteration/self.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp
new file mode 100644
index 0000000..6694d0b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_1
+#
+# undef BOOST_PP_ITERATION_START_1_DIGIT_1
+# undef BOOST_PP_ITERATION_START_1_DIGIT_2
+# undef BOOST_PP_ITERATION_START_1_DIGIT_3
+# undef BOOST_PP_ITERATION_START_1_DIGIT_4
+# undef BOOST_PP_ITERATION_START_1_DIGIT_5
+# undef BOOST_PP_ITERATION_START_1_DIGIT_6
+# undef BOOST_PP_ITERATION_START_1_DIGIT_7
+# undef BOOST_PP_ITERATION_START_1_DIGIT_8
+# undef BOOST_PP_ITERATION_START_1_DIGIT_9
+# undef BOOST_PP_ITERATION_START_1_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_1_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_1_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_1_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_1_DIGIT_3
+# define BOOST_PP_ITERATION_START_1 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_1_DIGIT_3, BOOST_PP_ITERATION_START_1_DIGIT_2, BOOST_PP_ITERATION_START_1_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_1_DIGIT_2
+# define BOOST_PP_ITERATION_START_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_1_DIGIT_2, BOOST_PP_ITERATION_START_1_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_1 BOOST_PP_ITERATION_START_1_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp
new file mode 100644
index 0000000..ece21fc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_2
+#
+# undef BOOST_PP_ITERATION_START_2_DIGIT_1
+# undef BOOST_PP_ITERATION_START_2_DIGIT_2
+# undef BOOST_PP_ITERATION_START_2_DIGIT_3
+# undef BOOST_PP_ITERATION_START_2_DIGIT_4
+# undef BOOST_PP_ITERATION_START_2_DIGIT_5
+# undef BOOST_PP_ITERATION_START_2_DIGIT_6
+# undef BOOST_PP_ITERATION_START_2_DIGIT_7
+# undef BOOST_PP_ITERATION_START_2_DIGIT_8
+# undef BOOST_PP_ITERATION_START_2_DIGIT_9
+# undef BOOST_PP_ITERATION_START_2_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_2_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_2_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_2_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_2_DIGIT_3
+# define BOOST_PP_ITERATION_START_2 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_2_DIGIT_3, BOOST_PP_ITERATION_START_2_DIGIT_2, BOOST_PP_ITERATION_START_2_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_2_DIGIT_2
+# define BOOST_PP_ITERATION_START_2 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_2_DIGIT_2, BOOST_PP_ITERATION_START_2_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_2 BOOST_PP_ITERATION_START_2_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp
new file mode 100644
index 0000000..8429eac
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_3
+#
+# undef BOOST_PP_ITERATION_START_3_DIGIT_1
+# undef BOOST_PP_ITERATION_START_3_DIGIT_2
+# undef BOOST_PP_ITERATION_START_3_DIGIT_3
+# undef BOOST_PP_ITERATION_START_3_DIGIT_4
+# undef BOOST_PP_ITERATION_START_3_DIGIT_5
+# undef BOOST_PP_ITERATION_START_3_DIGIT_6
+# undef BOOST_PP_ITERATION_START_3_DIGIT_7
+# undef BOOST_PP_ITERATION_START_3_DIGIT_8
+# undef BOOST_PP_ITERATION_START_3_DIGIT_9
+# undef BOOST_PP_ITERATION_START_3_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_3_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_3_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_3_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_3_DIGIT_3
+# define BOOST_PP_ITERATION_START_3 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_3_DIGIT_3, BOOST_PP_ITERATION_START_3_DIGIT_2, BOOST_PP_ITERATION_START_3_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_3_DIGIT_2
+# define BOOST_PP_ITERATION_START_3 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_3_DIGIT_2, BOOST_PP_ITERATION_START_3_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_3 BOOST_PP_ITERATION_START_3_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp
new file mode 100644
index 0000000..ba0832f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_4
+#
+# undef BOOST_PP_ITERATION_START_4_DIGIT_1
+# undef BOOST_PP_ITERATION_START_4_DIGIT_2
+# undef BOOST_PP_ITERATION_START_4_DIGIT_3
+# undef BOOST_PP_ITERATION_START_4_DIGIT_4
+# undef BOOST_PP_ITERATION_START_4_DIGIT_5
+# undef BOOST_PP_ITERATION_START_4_DIGIT_6
+# undef BOOST_PP_ITERATION_START_4_DIGIT_7
+# undef BOOST_PP_ITERATION_START_4_DIGIT_8
+# undef BOOST_PP_ITERATION_START_4_DIGIT_9
+# undef BOOST_PP_ITERATION_START_4_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_4_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_4_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_4_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_4_DIGIT_3
+# define BOOST_PP_ITERATION_START_4 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_4_DIGIT_3, BOOST_PP_ITERATION_START_4_DIGIT_2, BOOST_PP_ITERATION_START_4_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_4_DIGIT_2
+# define BOOST_PP_ITERATION_START_4 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_4_DIGIT_2, BOOST_PP_ITERATION_START_4_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_4 BOOST_PP_ITERATION_START_4_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp
new file mode 100644
index 0000000..f4888c7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_START_5
+#
+# undef BOOST_PP_ITERATION_START_5_DIGIT_1
+# undef BOOST_PP_ITERATION_START_5_DIGIT_2
+# undef BOOST_PP_ITERATION_START_5_DIGIT_3
+# undef BOOST_PP_ITERATION_START_5_DIGIT_4
+# undef BOOST_PP_ITERATION_START_5_DIGIT_5
+# undef BOOST_PP_ITERATION_START_5_DIGIT_6
+# undef BOOST_PP_ITERATION_START_5_DIGIT_7
+# undef BOOST_PP_ITERATION_START_5_DIGIT_8
+# undef BOOST_PP_ITERATION_START_5_DIGIT_9
+# undef BOOST_PP_ITERATION_START_5_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_START_5_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_START_5_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_START_5_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_START_5_DIGIT_3
+# define BOOST_PP_ITERATION_START_5 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_START_5_DIGIT_3, BOOST_PP_ITERATION_START_5_DIGIT_2, BOOST_PP_ITERATION_START_5_DIGIT_1)
+# elif BOOST_PP_ITERATION_START_5_DIGIT_2
+# define BOOST_PP_ITERATION_START_5 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_START_5_DIGIT_2, BOOST_PP_ITERATION_START_5_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_START_5 BOOST_PP_ITERATION_START_5_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp
new file mode 100644
index 0000000..50d0fcf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_1
+#
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_1_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_1_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_1_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_1_DIGIT_3, BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_1_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_1_DIGIT_2, BOOST_PP_ITERATION_FINISH_1_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_1 BOOST_PP_ITERATION_FINISH_1_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp
new file mode 100644
index 0000000..faef6f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_2
+#
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_2_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_2_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_2_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_2_DIGIT_3, BOOST_PP_ITERATION_FINISH_2_DIGIT_2, BOOST_PP_ITERATION_FINISH_2_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_2_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_2_DIGIT_2, BOOST_PP_ITERATION_FINISH_2_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_2 BOOST_PP_ITERATION_FINISH_2_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp
new file mode 100644
index 0000000..38d9ade
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_3
+#
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_3_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_3_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_3_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_3_DIGIT_3, BOOST_PP_ITERATION_FINISH_3_DIGIT_2, BOOST_PP_ITERATION_FINISH_3_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_3_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_3_DIGIT_2, BOOST_PP_ITERATION_FINISH_3_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_3 BOOST_PP_ITERATION_FINISH_3_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp
new file mode 100644
index 0000000..7f771c2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_4
+#
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_4_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_4_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_4_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_4_DIGIT_3, BOOST_PP_ITERATION_FINISH_4_DIGIT_2, BOOST_PP_ITERATION_FINISH_4_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_4_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_4_DIGIT_2, BOOST_PP_ITERATION_FINISH_4_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_4 BOOST_PP_ITERATION_FINISH_4_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp
new file mode 100644
index 0000000..9f27d58
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_ITERATION_FINISH_5
+#
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_1
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_2
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_3
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_4
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_5
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_6
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_7
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_8
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_9
+# undef BOOST_PP_ITERATION_FINISH_5_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_ITERATION_FINISH_5_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_ITERATION_FINISH_5_DIGIT_3
+# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_SLOT_CC_3(BOOST_PP_ITERATION_FINISH_5_DIGIT_3, BOOST_PP_ITERATION_FINISH_5_DIGIT_2, BOOST_PP_ITERATION_FINISH_5_DIGIT_1)
+# elif BOOST_PP_ITERATION_FINISH_5_DIGIT_2
+# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_SLOT_CC_2(BOOST_PP_ITERATION_FINISH_5_DIGIT_2, BOOST_PP_ITERATION_FINISH_5_DIGIT_1)
+# else
+# define BOOST_PP_ITERATION_FINISH_5 BOOST_PP_ITERATION_FINISH_5_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/finish.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/finish.hpp
new file mode 100644
index 0000000..0236944
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/finish.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_LOCAL_FE
+#
+# undef BOOST_PP_LOCAL_FE_DIGIT_1
+# undef BOOST_PP_LOCAL_FE_DIGIT_2
+# undef BOOST_PP_LOCAL_FE_DIGIT_3
+# undef BOOST_PP_LOCAL_FE_DIGIT_4
+# undef BOOST_PP_LOCAL_FE_DIGIT_5
+# undef BOOST_PP_LOCAL_FE_DIGIT_6
+# undef BOOST_PP_LOCAL_FE_DIGIT_7
+# undef BOOST_PP_LOCAL_FE_DIGIT_8
+# undef BOOST_PP_LOCAL_FE_DIGIT_9
+# undef BOOST_PP_LOCAL_FE_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_LOCAL_FE_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_LOCAL_FE_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_LOCAL_FE_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_LOCAL_FE_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_LOCAL_FE_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_LOCAL_FE_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_LOCAL_FE_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_LOCAL_FE_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_LOCAL_FE_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_LOCAL_FE_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_LOCAL_FE_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_LOCAL_FE_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_LOCAL_FE_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_LOCAL_FE_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_LOCAL_FE_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_LOCAL_FE_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_LOCAL_FE_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_LOCAL_FE_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_LOCAL_FE_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_LOCAL_FE_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_LOCAL_FE_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_LOCAL_FE_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_LOCAL_FE_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_LOCAL_FE_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_LOCAL_FE_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_LOCAL_FE_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_LOCAL_FE_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_LOCAL_FE_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_LOCAL_FE_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_LOCAL_FE_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_LOCAL_FE_DIGIT_3
+# define BOOST_PP_LOCAL_FE() BOOST_PP_SLOT_CC_3(BOOST_PP_LOCAL_FE_DIGIT_3, BOOST_PP_LOCAL_FE_DIGIT_2, BOOST_PP_LOCAL_FE_DIGIT_1)
+# elif BOOST_PP_LOCAL_FE_DIGIT_2
+# define BOOST_PP_LOCAL_FE() BOOST_PP_SLOT_CC_2(BOOST_PP_LOCAL_FE_DIGIT_2, BOOST_PP_LOCAL_FE_DIGIT_1)
+# else
+# define BOOST_PP_LOCAL_FE() BOOST_PP_LOCAL_FE_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward1.hpp
new file mode 100644
index 0000000..3c6a458
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward1.hpp
@@ -0,0 +1,1342 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_1)
+# error BOOST_PP_ERROR: depth #1 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower1.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper1.hpp>
+# define BOOST_PP_ITERATION_FLAGS_1() 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_1)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_1)
+# include <boost/preprocessor/iteration/detail/bounds/lower1.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_1)
+# include <boost/preprocessor/iteration/detail/bounds/upper1.hpp>
+# define BOOST_PP_FILENAME_1 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_1)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_1) >= 4
+# define BOOST_PP_ITERATION_FLAGS_1() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_1)
+# else
+# define BOOST_PP_ITERATION_FLAGS_1() 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #1 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 1
+#
+# define BOOST_PP_IS_ITERATING 1
+#
+# if (BOOST_PP_ITERATION_START_1) > (BOOST_PP_ITERATION_FINISH_1)
+# include <boost/preprocessor/iteration/detail/iter/reverse1.hpp>
+# else
+# if BOOST_PP_ITERATION_START_1 <= 0 && BOOST_PP_ITERATION_FINISH_1 >= 0
+# define BOOST_PP_ITERATION_1 0
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 1 && BOOST_PP_ITERATION_FINISH_1 >= 1
+# define BOOST_PP_ITERATION_1 1
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 2 && BOOST_PP_ITERATION_FINISH_1 >= 2
+# define BOOST_PP_ITERATION_1 2
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 3 && BOOST_PP_ITERATION_FINISH_1 >= 3
+# define BOOST_PP_ITERATION_1 3
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 4 && BOOST_PP_ITERATION_FINISH_1 >= 4
+# define BOOST_PP_ITERATION_1 4
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 5 && BOOST_PP_ITERATION_FINISH_1 >= 5
+# define BOOST_PP_ITERATION_1 5
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 6 && BOOST_PP_ITERATION_FINISH_1 >= 6
+# define BOOST_PP_ITERATION_1 6
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 7 && BOOST_PP_ITERATION_FINISH_1 >= 7
+# define BOOST_PP_ITERATION_1 7
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 8 && BOOST_PP_ITERATION_FINISH_1 >= 8
+# define BOOST_PP_ITERATION_1 8
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 9 && BOOST_PP_ITERATION_FINISH_1 >= 9
+# define BOOST_PP_ITERATION_1 9
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 10 && BOOST_PP_ITERATION_FINISH_1 >= 10
+# define BOOST_PP_ITERATION_1 10
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 11 && BOOST_PP_ITERATION_FINISH_1 >= 11
+# define BOOST_PP_ITERATION_1 11
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 12 && BOOST_PP_ITERATION_FINISH_1 >= 12
+# define BOOST_PP_ITERATION_1 12
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 13 && BOOST_PP_ITERATION_FINISH_1 >= 13
+# define BOOST_PP_ITERATION_1 13
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 14 && BOOST_PP_ITERATION_FINISH_1 >= 14
+# define BOOST_PP_ITERATION_1 14
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 15 && BOOST_PP_ITERATION_FINISH_1 >= 15
+# define BOOST_PP_ITERATION_1 15
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 16 && BOOST_PP_ITERATION_FINISH_1 >= 16
+# define BOOST_PP_ITERATION_1 16
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 17 && BOOST_PP_ITERATION_FINISH_1 >= 17
+# define BOOST_PP_ITERATION_1 17
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 18 && BOOST_PP_ITERATION_FINISH_1 >= 18
+# define BOOST_PP_ITERATION_1 18
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 19 && BOOST_PP_ITERATION_FINISH_1 >= 19
+# define BOOST_PP_ITERATION_1 19
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 20 && BOOST_PP_ITERATION_FINISH_1 >= 20
+# define BOOST_PP_ITERATION_1 20
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 21 && BOOST_PP_ITERATION_FINISH_1 >= 21
+# define BOOST_PP_ITERATION_1 21
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 22 && BOOST_PP_ITERATION_FINISH_1 >= 22
+# define BOOST_PP_ITERATION_1 22
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 23 && BOOST_PP_ITERATION_FINISH_1 >= 23
+# define BOOST_PP_ITERATION_1 23
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 24 && BOOST_PP_ITERATION_FINISH_1 >= 24
+# define BOOST_PP_ITERATION_1 24
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 25 && BOOST_PP_ITERATION_FINISH_1 >= 25
+# define BOOST_PP_ITERATION_1 25
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 26 && BOOST_PP_ITERATION_FINISH_1 >= 26
+# define BOOST_PP_ITERATION_1 26
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 27 && BOOST_PP_ITERATION_FINISH_1 >= 27
+# define BOOST_PP_ITERATION_1 27
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 28 && BOOST_PP_ITERATION_FINISH_1 >= 28
+# define BOOST_PP_ITERATION_1 28
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 29 && BOOST_PP_ITERATION_FINISH_1 >= 29
+# define BOOST_PP_ITERATION_1 29
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 30 && BOOST_PP_ITERATION_FINISH_1 >= 30
+# define BOOST_PP_ITERATION_1 30
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 31 && BOOST_PP_ITERATION_FINISH_1 >= 31
+# define BOOST_PP_ITERATION_1 31
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 32 && BOOST_PP_ITERATION_FINISH_1 >= 32
+# define BOOST_PP_ITERATION_1 32
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 33 && BOOST_PP_ITERATION_FINISH_1 >= 33
+# define BOOST_PP_ITERATION_1 33
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 34 && BOOST_PP_ITERATION_FINISH_1 >= 34
+# define BOOST_PP_ITERATION_1 34
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 35 && BOOST_PP_ITERATION_FINISH_1 >= 35
+# define BOOST_PP_ITERATION_1 35
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 36 && BOOST_PP_ITERATION_FINISH_1 >= 36
+# define BOOST_PP_ITERATION_1 36
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 37 && BOOST_PP_ITERATION_FINISH_1 >= 37
+# define BOOST_PP_ITERATION_1 37
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 38 && BOOST_PP_ITERATION_FINISH_1 >= 38
+# define BOOST_PP_ITERATION_1 38
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 39 && BOOST_PP_ITERATION_FINISH_1 >= 39
+# define BOOST_PP_ITERATION_1 39
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 40 && BOOST_PP_ITERATION_FINISH_1 >= 40
+# define BOOST_PP_ITERATION_1 40
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 41 && BOOST_PP_ITERATION_FINISH_1 >= 41
+# define BOOST_PP_ITERATION_1 41
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 42 && BOOST_PP_ITERATION_FINISH_1 >= 42
+# define BOOST_PP_ITERATION_1 42
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 43 && BOOST_PP_ITERATION_FINISH_1 >= 43
+# define BOOST_PP_ITERATION_1 43
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 44 && BOOST_PP_ITERATION_FINISH_1 >= 44
+# define BOOST_PP_ITERATION_1 44
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 45 && BOOST_PP_ITERATION_FINISH_1 >= 45
+# define BOOST_PP_ITERATION_1 45
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 46 && BOOST_PP_ITERATION_FINISH_1 >= 46
+# define BOOST_PP_ITERATION_1 46
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 47 && BOOST_PP_ITERATION_FINISH_1 >= 47
+# define BOOST_PP_ITERATION_1 47
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 48 && BOOST_PP_ITERATION_FINISH_1 >= 48
+# define BOOST_PP_ITERATION_1 48
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 49 && BOOST_PP_ITERATION_FINISH_1 >= 49
+# define BOOST_PP_ITERATION_1 49
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 50 && BOOST_PP_ITERATION_FINISH_1 >= 50
+# define BOOST_PP_ITERATION_1 50
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 51 && BOOST_PP_ITERATION_FINISH_1 >= 51
+# define BOOST_PP_ITERATION_1 51
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 52 && BOOST_PP_ITERATION_FINISH_1 >= 52
+# define BOOST_PP_ITERATION_1 52
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 53 && BOOST_PP_ITERATION_FINISH_1 >= 53
+# define BOOST_PP_ITERATION_1 53
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 54 && BOOST_PP_ITERATION_FINISH_1 >= 54
+# define BOOST_PP_ITERATION_1 54
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 55 && BOOST_PP_ITERATION_FINISH_1 >= 55
+# define BOOST_PP_ITERATION_1 55
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 56 && BOOST_PP_ITERATION_FINISH_1 >= 56
+# define BOOST_PP_ITERATION_1 56
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 57 && BOOST_PP_ITERATION_FINISH_1 >= 57
+# define BOOST_PP_ITERATION_1 57
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 58 && BOOST_PP_ITERATION_FINISH_1 >= 58
+# define BOOST_PP_ITERATION_1 58
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 59 && BOOST_PP_ITERATION_FINISH_1 >= 59
+# define BOOST_PP_ITERATION_1 59
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 60 && BOOST_PP_ITERATION_FINISH_1 >= 60
+# define BOOST_PP_ITERATION_1 60
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 61 && BOOST_PP_ITERATION_FINISH_1 >= 61
+# define BOOST_PP_ITERATION_1 61
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 62 && BOOST_PP_ITERATION_FINISH_1 >= 62
+# define BOOST_PP_ITERATION_1 62
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 63 && BOOST_PP_ITERATION_FINISH_1 >= 63
+# define BOOST_PP_ITERATION_1 63
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 64 && BOOST_PP_ITERATION_FINISH_1 >= 64
+# define BOOST_PP_ITERATION_1 64
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 65 && BOOST_PP_ITERATION_FINISH_1 >= 65
+# define BOOST_PP_ITERATION_1 65
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 66 && BOOST_PP_ITERATION_FINISH_1 >= 66
+# define BOOST_PP_ITERATION_1 66
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 67 && BOOST_PP_ITERATION_FINISH_1 >= 67
+# define BOOST_PP_ITERATION_1 67
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 68 && BOOST_PP_ITERATION_FINISH_1 >= 68
+# define BOOST_PP_ITERATION_1 68
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 69 && BOOST_PP_ITERATION_FINISH_1 >= 69
+# define BOOST_PP_ITERATION_1 69
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 70 && BOOST_PP_ITERATION_FINISH_1 >= 70
+# define BOOST_PP_ITERATION_1 70
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 71 && BOOST_PP_ITERATION_FINISH_1 >= 71
+# define BOOST_PP_ITERATION_1 71
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 72 && BOOST_PP_ITERATION_FINISH_1 >= 72
+# define BOOST_PP_ITERATION_1 72
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 73 && BOOST_PP_ITERATION_FINISH_1 >= 73
+# define BOOST_PP_ITERATION_1 73
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 74 && BOOST_PP_ITERATION_FINISH_1 >= 74
+# define BOOST_PP_ITERATION_1 74
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 75 && BOOST_PP_ITERATION_FINISH_1 >= 75
+# define BOOST_PP_ITERATION_1 75
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 76 && BOOST_PP_ITERATION_FINISH_1 >= 76
+# define BOOST_PP_ITERATION_1 76
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 77 && BOOST_PP_ITERATION_FINISH_1 >= 77
+# define BOOST_PP_ITERATION_1 77
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 78 && BOOST_PP_ITERATION_FINISH_1 >= 78
+# define BOOST_PP_ITERATION_1 78
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 79 && BOOST_PP_ITERATION_FINISH_1 >= 79
+# define BOOST_PP_ITERATION_1 79
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 80 && BOOST_PP_ITERATION_FINISH_1 >= 80
+# define BOOST_PP_ITERATION_1 80
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 81 && BOOST_PP_ITERATION_FINISH_1 >= 81
+# define BOOST_PP_ITERATION_1 81
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 82 && BOOST_PP_ITERATION_FINISH_1 >= 82
+# define BOOST_PP_ITERATION_1 82
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 83 && BOOST_PP_ITERATION_FINISH_1 >= 83
+# define BOOST_PP_ITERATION_1 83
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 84 && BOOST_PP_ITERATION_FINISH_1 >= 84
+# define BOOST_PP_ITERATION_1 84
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 85 && BOOST_PP_ITERATION_FINISH_1 >= 85
+# define BOOST_PP_ITERATION_1 85
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 86 && BOOST_PP_ITERATION_FINISH_1 >= 86
+# define BOOST_PP_ITERATION_1 86
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 87 && BOOST_PP_ITERATION_FINISH_1 >= 87
+# define BOOST_PP_ITERATION_1 87
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 88 && BOOST_PP_ITERATION_FINISH_1 >= 88
+# define BOOST_PP_ITERATION_1 88
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 89 && BOOST_PP_ITERATION_FINISH_1 >= 89
+# define BOOST_PP_ITERATION_1 89
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 90 && BOOST_PP_ITERATION_FINISH_1 >= 90
+# define BOOST_PP_ITERATION_1 90
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 91 && BOOST_PP_ITERATION_FINISH_1 >= 91
+# define BOOST_PP_ITERATION_1 91
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 92 && BOOST_PP_ITERATION_FINISH_1 >= 92
+# define BOOST_PP_ITERATION_1 92
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 93 && BOOST_PP_ITERATION_FINISH_1 >= 93
+# define BOOST_PP_ITERATION_1 93
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 94 && BOOST_PP_ITERATION_FINISH_1 >= 94
+# define BOOST_PP_ITERATION_1 94
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 95 && BOOST_PP_ITERATION_FINISH_1 >= 95
+# define BOOST_PP_ITERATION_1 95
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 96 && BOOST_PP_ITERATION_FINISH_1 >= 96
+# define BOOST_PP_ITERATION_1 96
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 97 && BOOST_PP_ITERATION_FINISH_1 >= 97
+# define BOOST_PP_ITERATION_1 97
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 98 && BOOST_PP_ITERATION_FINISH_1 >= 98
+# define BOOST_PP_ITERATION_1 98
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 99 && BOOST_PP_ITERATION_FINISH_1 >= 99
+# define BOOST_PP_ITERATION_1 99
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 100 && BOOST_PP_ITERATION_FINISH_1 >= 100
+# define BOOST_PP_ITERATION_1 100
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 101 && BOOST_PP_ITERATION_FINISH_1 >= 101
+# define BOOST_PP_ITERATION_1 101
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 102 && BOOST_PP_ITERATION_FINISH_1 >= 102
+# define BOOST_PP_ITERATION_1 102
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 103 && BOOST_PP_ITERATION_FINISH_1 >= 103
+# define BOOST_PP_ITERATION_1 103
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 104 && BOOST_PP_ITERATION_FINISH_1 >= 104
+# define BOOST_PP_ITERATION_1 104
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 105 && BOOST_PP_ITERATION_FINISH_1 >= 105
+# define BOOST_PP_ITERATION_1 105
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 106 && BOOST_PP_ITERATION_FINISH_1 >= 106
+# define BOOST_PP_ITERATION_1 106
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 107 && BOOST_PP_ITERATION_FINISH_1 >= 107
+# define BOOST_PP_ITERATION_1 107
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 108 && BOOST_PP_ITERATION_FINISH_1 >= 108
+# define BOOST_PP_ITERATION_1 108
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 109 && BOOST_PP_ITERATION_FINISH_1 >= 109
+# define BOOST_PP_ITERATION_1 109
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 110 && BOOST_PP_ITERATION_FINISH_1 >= 110
+# define BOOST_PP_ITERATION_1 110
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 111 && BOOST_PP_ITERATION_FINISH_1 >= 111
+# define BOOST_PP_ITERATION_1 111
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 112 && BOOST_PP_ITERATION_FINISH_1 >= 112
+# define BOOST_PP_ITERATION_1 112
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 113 && BOOST_PP_ITERATION_FINISH_1 >= 113
+# define BOOST_PP_ITERATION_1 113
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 114 && BOOST_PP_ITERATION_FINISH_1 >= 114
+# define BOOST_PP_ITERATION_1 114
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 115 && BOOST_PP_ITERATION_FINISH_1 >= 115
+# define BOOST_PP_ITERATION_1 115
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 116 && BOOST_PP_ITERATION_FINISH_1 >= 116
+# define BOOST_PP_ITERATION_1 116
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 117 && BOOST_PP_ITERATION_FINISH_1 >= 117
+# define BOOST_PP_ITERATION_1 117
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 118 && BOOST_PP_ITERATION_FINISH_1 >= 118
+# define BOOST_PP_ITERATION_1 118
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 119 && BOOST_PP_ITERATION_FINISH_1 >= 119
+# define BOOST_PP_ITERATION_1 119
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 120 && BOOST_PP_ITERATION_FINISH_1 >= 120
+# define BOOST_PP_ITERATION_1 120
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 121 && BOOST_PP_ITERATION_FINISH_1 >= 121
+# define BOOST_PP_ITERATION_1 121
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 122 && BOOST_PP_ITERATION_FINISH_1 >= 122
+# define BOOST_PP_ITERATION_1 122
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 123 && BOOST_PP_ITERATION_FINISH_1 >= 123
+# define BOOST_PP_ITERATION_1 123
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 124 && BOOST_PP_ITERATION_FINISH_1 >= 124
+# define BOOST_PP_ITERATION_1 124
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 125 && BOOST_PP_ITERATION_FINISH_1 >= 125
+# define BOOST_PP_ITERATION_1 125
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 126 && BOOST_PP_ITERATION_FINISH_1 >= 126
+# define BOOST_PP_ITERATION_1 126
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 127 && BOOST_PP_ITERATION_FINISH_1 >= 127
+# define BOOST_PP_ITERATION_1 127
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 128 && BOOST_PP_ITERATION_FINISH_1 >= 128
+# define BOOST_PP_ITERATION_1 128
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 129 && BOOST_PP_ITERATION_FINISH_1 >= 129
+# define BOOST_PP_ITERATION_1 129
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 130 && BOOST_PP_ITERATION_FINISH_1 >= 130
+# define BOOST_PP_ITERATION_1 130
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 131 && BOOST_PP_ITERATION_FINISH_1 >= 131
+# define BOOST_PP_ITERATION_1 131
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 132 && BOOST_PP_ITERATION_FINISH_1 >= 132
+# define BOOST_PP_ITERATION_1 132
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 133 && BOOST_PP_ITERATION_FINISH_1 >= 133
+# define BOOST_PP_ITERATION_1 133
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 134 && BOOST_PP_ITERATION_FINISH_1 >= 134
+# define BOOST_PP_ITERATION_1 134
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 135 && BOOST_PP_ITERATION_FINISH_1 >= 135
+# define BOOST_PP_ITERATION_1 135
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 136 && BOOST_PP_ITERATION_FINISH_1 >= 136
+# define BOOST_PP_ITERATION_1 136
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 137 && BOOST_PP_ITERATION_FINISH_1 >= 137
+# define BOOST_PP_ITERATION_1 137
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 138 && BOOST_PP_ITERATION_FINISH_1 >= 138
+# define BOOST_PP_ITERATION_1 138
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 139 && BOOST_PP_ITERATION_FINISH_1 >= 139
+# define BOOST_PP_ITERATION_1 139
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 140 && BOOST_PP_ITERATION_FINISH_1 >= 140
+# define BOOST_PP_ITERATION_1 140
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 141 && BOOST_PP_ITERATION_FINISH_1 >= 141
+# define BOOST_PP_ITERATION_1 141
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 142 && BOOST_PP_ITERATION_FINISH_1 >= 142
+# define BOOST_PP_ITERATION_1 142
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 143 && BOOST_PP_ITERATION_FINISH_1 >= 143
+# define BOOST_PP_ITERATION_1 143
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 144 && BOOST_PP_ITERATION_FINISH_1 >= 144
+# define BOOST_PP_ITERATION_1 144
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 145 && BOOST_PP_ITERATION_FINISH_1 >= 145
+# define BOOST_PP_ITERATION_1 145
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 146 && BOOST_PP_ITERATION_FINISH_1 >= 146
+# define BOOST_PP_ITERATION_1 146
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 147 && BOOST_PP_ITERATION_FINISH_1 >= 147
+# define BOOST_PP_ITERATION_1 147
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 148 && BOOST_PP_ITERATION_FINISH_1 >= 148
+# define BOOST_PP_ITERATION_1 148
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 149 && BOOST_PP_ITERATION_FINISH_1 >= 149
+# define BOOST_PP_ITERATION_1 149
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 150 && BOOST_PP_ITERATION_FINISH_1 >= 150
+# define BOOST_PP_ITERATION_1 150
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 151 && BOOST_PP_ITERATION_FINISH_1 >= 151
+# define BOOST_PP_ITERATION_1 151
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 152 && BOOST_PP_ITERATION_FINISH_1 >= 152
+# define BOOST_PP_ITERATION_1 152
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 153 && BOOST_PP_ITERATION_FINISH_1 >= 153
+# define BOOST_PP_ITERATION_1 153
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 154 && BOOST_PP_ITERATION_FINISH_1 >= 154
+# define BOOST_PP_ITERATION_1 154
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 155 && BOOST_PP_ITERATION_FINISH_1 >= 155
+# define BOOST_PP_ITERATION_1 155
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 156 && BOOST_PP_ITERATION_FINISH_1 >= 156
+# define BOOST_PP_ITERATION_1 156
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 157 && BOOST_PP_ITERATION_FINISH_1 >= 157
+# define BOOST_PP_ITERATION_1 157
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 158 && BOOST_PP_ITERATION_FINISH_1 >= 158
+# define BOOST_PP_ITERATION_1 158
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 159 && BOOST_PP_ITERATION_FINISH_1 >= 159
+# define BOOST_PP_ITERATION_1 159
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 160 && BOOST_PP_ITERATION_FINISH_1 >= 160
+# define BOOST_PP_ITERATION_1 160
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 161 && BOOST_PP_ITERATION_FINISH_1 >= 161
+# define BOOST_PP_ITERATION_1 161
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 162 && BOOST_PP_ITERATION_FINISH_1 >= 162
+# define BOOST_PP_ITERATION_1 162
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 163 && BOOST_PP_ITERATION_FINISH_1 >= 163
+# define BOOST_PP_ITERATION_1 163
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 164 && BOOST_PP_ITERATION_FINISH_1 >= 164
+# define BOOST_PP_ITERATION_1 164
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 165 && BOOST_PP_ITERATION_FINISH_1 >= 165
+# define BOOST_PP_ITERATION_1 165
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 166 && BOOST_PP_ITERATION_FINISH_1 >= 166
+# define BOOST_PP_ITERATION_1 166
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 167 && BOOST_PP_ITERATION_FINISH_1 >= 167
+# define BOOST_PP_ITERATION_1 167
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 168 && BOOST_PP_ITERATION_FINISH_1 >= 168
+# define BOOST_PP_ITERATION_1 168
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 169 && BOOST_PP_ITERATION_FINISH_1 >= 169
+# define BOOST_PP_ITERATION_1 169
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 170 && BOOST_PP_ITERATION_FINISH_1 >= 170
+# define BOOST_PP_ITERATION_1 170
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 171 && BOOST_PP_ITERATION_FINISH_1 >= 171
+# define BOOST_PP_ITERATION_1 171
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 172 && BOOST_PP_ITERATION_FINISH_1 >= 172
+# define BOOST_PP_ITERATION_1 172
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 173 && BOOST_PP_ITERATION_FINISH_1 >= 173
+# define BOOST_PP_ITERATION_1 173
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 174 && BOOST_PP_ITERATION_FINISH_1 >= 174
+# define BOOST_PP_ITERATION_1 174
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 175 && BOOST_PP_ITERATION_FINISH_1 >= 175
+# define BOOST_PP_ITERATION_1 175
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 176 && BOOST_PP_ITERATION_FINISH_1 >= 176
+# define BOOST_PP_ITERATION_1 176
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 177 && BOOST_PP_ITERATION_FINISH_1 >= 177
+# define BOOST_PP_ITERATION_1 177
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 178 && BOOST_PP_ITERATION_FINISH_1 >= 178
+# define BOOST_PP_ITERATION_1 178
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 179 && BOOST_PP_ITERATION_FINISH_1 >= 179
+# define BOOST_PP_ITERATION_1 179
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 180 && BOOST_PP_ITERATION_FINISH_1 >= 180
+# define BOOST_PP_ITERATION_1 180
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 181 && BOOST_PP_ITERATION_FINISH_1 >= 181
+# define BOOST_PP_ITERATION_1 181
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 182 && BOOST_PP_ITERATION_FINISH_1 >= 182
+# define BOOST_PP_ITERATION_1 182
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 183 && BOOST_PP_ITERATION_FINISH_1 >= 183
+# define BOOST_PP_ITERATION_1 183
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 184 && BOOST_PP_ITERATION_FINISH_1 >= 184
+# define BOOST_PP_ITERATION_1 184
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 185 && BOOST_PP_ITERATION_FINISH_1 >= 185
+# define BOOST_PP_ITERATION_1 185
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 186 && BOOST_PP_ITERATION_FINISH_1 >= 186
+# define BOOST_PP_ITERATION_1 186
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 187 && BOOST_PP_ITERATION_FINISH_1 >= 187
+# define BOOST_PP_ITERATION_1 187
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 188 && BOOST_PP_ITERATION_FINISH_1 >= 188
+# define BOOST_PP_ITERATION_1 188
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 189 && BOOST_PP_ITERATION_FINISH_1 >= 189
+# define BOOST_PP_ITERATION_1 189
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 190 && BOOST_PP_ITERATION_FINISH_1 >= 190
+# define BOOST_PP_ITERATION_1 190
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 191 && BOOST_PP_ITERATION_FINISH_1 >= 191
+# define BOOST_PP_ITERATION_1 191
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 192 && BOOST_PP_ITERATION_FINISH_1 >= 192
+# define BOOST_PP_ITERATION_1 192
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 193 && BOOST_PP_ITERATION_FINISH_1 >= 193
+# define BOOST_PP_ITERATION_1 193
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 194 && BOOST_PP_ITERATION_FINISH_1 >= 194
+# define BOOST_PP_ITERATION_1 194
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 195 && BOOST_PP_ITERATION_FINISH_1 >= 195
+# define BOOST_PP_ITERATION_1 195
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 196 && BOOST_PP_ITERATION_FINISH_1 >= 196
+# define BOOST_PP_ITERATION_1 196
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 197 && BOOST_PP_ITERATION_FINISH_1 >= 197
+# define BOOST_PP_ITERATION_1 197
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 198 && BOOST_PP_ITERATION_FINISH_1 >= 198
+# define BOOST_PP_ITERATION_1 198
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 199 && BOOST_PP_ITERATION_FINISH_1 >= 199
+# define BOOST_PP_ITERATION_1 199
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 200 && BOOST_PP_ITERATION_FINISH_1 >= 200
+# define BOOST_PP_ITERATION_1 200
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 201 && BOOST_PP_ITERATION_FINISH_1 >= 201
+# define BOOST_PP_ITERATION_1 201
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 202 && BOOST_PP_ITERATION_FINISH_1 >= 202
+# define BOOST_PP_ITERATION_1 202
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 203 && BOOST_PP_ITERATION_FINISH_1 >= 203
+# define BOOST_PP_ITERATION_1 203
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 204 && BOOST_PP_ITERATION_FINISH_1 >= 204
+# define BOOST_PP_ITERATION_1 204
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 205 && BOOST_PP_ITERATION_FINISH_1 >= 205
+# define BOOST_PP_ITERATION_1 205
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 206 && BOOST_PP_ITERATION_FINISH_1 >= 206
+# define BOOST_PP_ITERATION_1 206
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 207 && BOOST_PP_ITERATION_FINISH_1 >= 207
+# define BOOST_PP_ITERATION_1 207
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 208 && BOOST_PP_ITERATION_FINISH_1 >= 208
+# define BOOST_PP_ITERATION_1 208
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 209 && BOOST_PP_ITERATION_FINISH_1 >= 209
+# define BOOST_PP_ITERATION_1 209
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 210 && BOOST_PP_ITERATION_FINISH_1 >= 210
+# define BOOST_PP_ITERATION_1 210
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 211 && BOOST_PP_ITERATION_FINISH_1 >= 211
+# define BOOST_PP_ITERATION_1 211
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 212 && BOOST_PP_ITERATION_FINISH_1 >= 212
+# define BOOST_PP_ITERATION_1 212
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 213 && BOOST_PP_ITERATION_FINISH_1 >= 213
+# define BOOST_PP_ITERATION_1 213
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 214 && BOOST_PP_ITERATION_FINISH_1 >= 214
+# define BOOST_PP_ITERATION_1 214
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 215 && BOOST_PP_ITERATION_FINISH_1 >= 215
+# define BOOST_PP_ITERATION_1 215
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 216 && BOOST_PP_ITERATION_FINISH_1 >= 216
+# define BOOST_PP_ITERATION_1 216
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 217 && BOOST_PP_ITERATION_FINISH_1 >= 217
+# define BOOST_PP_ITERATION_1 217
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 218 && BOOST_PP_ITERATION_FINISH_1 >= 218
+# define BOOST_PP_ITERATION_1 218
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 219 && BOOST_PP_ITERATION_FINISH_1 >= 219
+# define BOOST_PP_ITERATION_1 219
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 220 && BOOST_PP_ITERATION_FINISH_1 >= 220
+# define BOOST_PP_ITERATION_1 220
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 221 && BOOST_PP_ITERATION_FINISH_1 >= 221
+# define BOOST_PP_ITERATION_1 221
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 222 && BOOST_PP_ITERATION_FINISH_1 >= 222
+# define BOOST_PP_ITERATION_1 222
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 223 && BOOST_PP_ITERATION_FINISH_1 >= 223
+# define BOOST_PP_ITERATION_1 223
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 224 && BOOST_PP_ITERATION_FINISH_1 >= 224
+# define BOOST_PP_ITERATION_1 224
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 225 && BOOST_PP_ITERATION_FINISH_1 >= 225
+# define BOOST_PP_ITERATION_1 225
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 226 && BOOST_PP_ITERATION_FINISH_1 >= 226
+# define BOOST_PP_ITERATION_1 226
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 227 && BOOST_PP_ITERATION_FINISH_1 >= 227
+# define BOOST_PP_ITERATION_1 227
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 228 && BOOST_PP_ITERATION_FINISH_1 >= 228
+# define BOOST_PP_ITERATION_1 228
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 229 && BOOST_PP_ITERATION_FINISH_1 >= 229
+# define BOOST_PP_ITERATION_1 229
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 230 && BOOST_PP_ITERATION_FINISH_1 >= 230
+# define BOOST_PP_ITERATION_1 230
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 231 && BOOST_PP_ITERATION_FINISH_1 >= 231
+# define BOOST_PP_ITERATION_1 231
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 232 && BOOST_PP_ITERATION_FINISH_1 >= 232
+# define BOOST_PP_ITERATION_1 232
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 233 && BOOST_PP_ITERATION_FINISH_1 >= 233
+# define BOOST_PP_ITERATION_1 233
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 234 && BOOST_PP_ITERATION_FINISH_1 >= 234
+# define BOOST_PP_ITERATION_1 234
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 235 && BOOST_PP_ITERATION_FINISH_1 >= 235
+# define BOOST_PP_ITERATION_1 235
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 236 && BOOST_PP_ITERATION_FINISH_1 >= 236
+# define BOOST_PP_ITERATION_1 236
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 237 && BOOST_PP_ITERATION_FINISH_1 >= 237
+# define BOOST_PP_ITERATION_1 237
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 238 && BOOST_PP_ITERATION_FINISH_1 >= 238
+# define BOOST_PP_ITERATION_1 238
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 239 && BOOST_PP_ITERATION_FINISH_1 >= 239
+# define BOOST_PP_ITERATION_1 239
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 240 && BOOST_PP_ITERATION_FINISH_1 >= 240
+# define BOOST_PP_ITERATION_1 240
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 241 && BOOST_PP_ITERATION_FINISH_1 >= 241
+# define BOOST_PP_ITERATION_1 241
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 242 && BOOST_PP_ITERATION_FINISH_1 >= 242
+# define BOOST_PP_ITERATION_1 242
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 243 && BOOST_PP_ITERATION_FINISH_1 >= 243
+# define BOOST_PP_ITERATION_1 243
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 244 && BOOST_PP_ITERATION_FINISH_1 >= 244
+# define BOOST_PP_ITERATION_1 244
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 245 && BOOST_PP_ITERATION_FINISH_1 >= 245
+# define BOOST_PP_ITERATION_1 245
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 246 && BOOST_PP_ITERATION_FINISH_1 >= 246
+# define BOOST_PP_ITERATION_1 246
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 247 && BOOST_PP_ITERATION_FINISH_1 >= 247
+# define BOOST_PP_ITERATION_1 247
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 248 && BOOST_PP_ITERATION_FINISH_1 >= 248
+# define BOOST_PP_ITERATION_1 248
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 249 && BOOST_PP_ITERATION_FINISH_1 >= 249
+# define BOOST_PP_ITERATION_1 249
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 250 && BOOST_PP_ITERATION_FINISH_1 >= 250
+# define BOOST_PP_ITERATION_1 250
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 251 && BOOST_PP_ITERATION_FINISH_1 >= 251
+# define BOOST_PP_ITERATION_1 251
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 252 && BOOST_PP_ITERATION_FINISH_1 >= 252
+# define BOOST_PP_ITERATION_1 252
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 253 && BOOST_PP_ITERATION_FINISH_1 >= 253
+# define BOOST_PP_ITERATION_1 253
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 254 && BOOST_PP_ITERATION_FINISH_1 >= 254
+# define BOOST_PP_ITERATION_1 254
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 255 && BOOST_PP_ITERATION_FINISH_1 >= 255
+# define BOOST_PP_ITERATION_1 255
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_START_1 <= 256 && BOOST_PP_ITERATION_FINISH_1 >= 256
+# define BOOST_PP_ITERATION_1 256
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# endif
+#
+# undef BOOST_PP_IS_ITERATING
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 0
+#
+# undef BOOST_PP_ITERATION_START_1
+# undef BOOST_PP_ITERATION_FINISH_1
+# undef BOOST_PP_FILENAME_1
+#
+# undef BOOST_PP_ITERATION_FLAGS_1
+# undef BOOST_PP_ITERATION_PARAMS_1
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward2.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward2.hpp
new file mode 100644
index 0000000..e61a329
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward2.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_2)
+# error BOOST_PP_ERROR: depth #2 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower2.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper2.hpp>
+# define BOOST_PP_ITERATION_FLAGS_2() 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_2)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_2)
+# include <boost/preprocessor/iteration/detail/bounds/lower2.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_2)
+# include <boost/preprocessor/iteration/detail/bounds/upper2.hpp>
+# define BOOST_PP_FILENAME_2 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_2)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_2) >= 4
+# define BOOST_PP_ITERATION_FLAGS_2() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_2)
+# else
+# define BOOST_PP_ITERATION_FLAGS_2() 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #2 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 2
+#
+# if (BOOST_PP_ITERATION_START_2) > (BOOST_PP_ITERATION_FINISH_2)
+# include <boost/preprocessor/iteration/detail/iter/reverse2.hpp>
+# else
+# if BOOST_PP_ITERATION_START_2 <= 0 && BOOST_PP_ITERATION_FINISH_2 >= 0
+# define BOOST_PP_ITERATION_2 0
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 1 && BOOST_PP_ITERATION_FINISH_2 >= 1
+# define BOOST_PP_ITERATION_2 1
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 2 && BOOST_PP_ITERATION_FINISH_2 >= 2
+# define BOOST_PP_ITERATION_2 2
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 3 && BOOST_PP_ITERATION_FINISH_2 >= 3
+# define BOOST_PP_ITERATION_2 3
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 4 && BOOST_PP_ITERATION_FINISH_2 >= 4
+# define BOOST_PP_ITERATION_2 4
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 5 && BOOST_PP_ITERATION_FINISH_2 >= 5
+# define BOOST_PP_ITERATION_2 5
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 6 && BOOST_PP_ITERATION_FINISH_2 >= 6
+# define BOOST_PP_ITERATION_2 6
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 7 && BOOST_PP_ITERATION_FINISH_2 >= 7
+# define BOOST_PP_ITERATION_2 7
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 8 && BOOST_PP_ITERATION_FINISH_2 >= 8
+# define BOOST_PP_ITERATION_2 8
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 9 && BOOST_PP_ITERATION_FINISH_2 >= 9
+# define BOOST_PP_ITERATION_2 9
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 10 && BOOST_PP_ITERATION_FINISH_2 >= 10
+# define BOOST_PP_ITERATION_2 10
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 11 && BOOST_PP_ITERATION_FINISH_2 >= 11
+# define BOOST_PP_ITERATION_2 11
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 12 && BOOST_PP_ITERATION_FINISH_2 >= 12
+# define BOOST_PP_ITERATION_2 12
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 13 && BOOST_PP_ITERATION_FINISH_2 >= 13
+# define BOOST_PP_ITERATION_2 13
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 14 && BOOST_PP_ITERATION_FINISH_2 >= 14
+# define BOOST_PP_ITERATION_2 14
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 15 && BOOST_PP_ITERATION_FINISH_2 >= 15
+# define BOOST_PP_ITERATION_2 15
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 16 && BOOST_PP_ITERATION_FINISH_2 >= 16
+# define BOOST_PP_ITERATION_2 16
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 17 && BOOST_PP_ITERATION_FINISH_2 >= 17
+# define BOOST_PP_ITERATION_2 17
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 18 && BOOST_PP_ITERATION_FINISH_2 >= 18
+# define BOOST_PP_ITERATION_2 18
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 19 && BOOST_PP_ITERATION_FINISH_2 >= 19
+# define BOOST_PP_ITERATION_2 19
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 20 && BOOST_PP_ITERATION_FINISH_2 >= 20
+# define BOOST_PP_ITERATION_2 20
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 21 && BOOST_PP_ITERATION_FINISH_2 >= 21
+# define BOOST_PP_ITERATION_2 21
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 22 && BOOST_PP_ITERATION_FINISH_2 >= 22
+# define BOOST_PP_ITERATION_2 22
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 23 && BOOST_PP_ITERATION_FINISH_2 >= 23
+# define BOOST_PP_ITERATION_2 23
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 24 && BOOST_PP_ITERATION_FINISH_2 >= 24
+# define BOOST_PP_ITERATION_2 24
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 25 && BOOST_PP_ITERATION_FINISH_2 >= 25
+# define BOOST_PP_ITERATION_2 25
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 26 && BOOST_PP_ITERATION_FINISH_2 >= 26
+# define BOOST_PP_ITERATION_2 26
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 27 && BOOST_PP_ITERATION_FINISH_2 >= 27
+# define BOOST_PP_ITERATION_2 27
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 28 && BOOST_PP_ITERATION_FINISH_2 >= 28
+# define BOOST_PP_ITERATION_2 28
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 29 && BOOST_PP_ITERATION_FINISH_2 >= 29
+# define BOOST_PP_ITERATION_2 29
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 30 && BOOST_PP_ITERATION_FINISH_2 >= 30
+# define BOOST_PP_ITERATION_2 30
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 31 && BOOST_PP_ITERATION_FINISH_2 >= 31
+# define BOOST_PP_ITERATION_2 31
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 32 && BOOST_PP_ITERATION_FINISH_2 >= 32
+# define BOOST_PP_ITERATION_2 32
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 33 && BOOST_PP_ITERATION_FINISH_2 >= 33
+# define BOOST_PP_ITERATION_2 33
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 34 && BOOST_PP_ITERATION_FINISH_2 >= 34
+# define BOOST_PP_ITERATION_2 34
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 35 && BOOST_PP_ITERATION_FINISH_2 >= 35
+# define BOOST_PP_ITERATION_2 35
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 36 && BOOST_PP_ITERATION_FINISH_2 >= 36
+# define BOOST_PP_ITERATION_2 36
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 37 && BOOST_PP_ITERATION_FINISH_2 >= 37
+# define BOOST_PP_ITERATION_2 37
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 38 && BOOST_PP_ITERATION_FINISH_2 >= 38
+# define BOOST_PP_ITERATION_2 38
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 39 && BOOST_PP_ITERATION_FINISH_2 >= 39
+# define BOOST_PP_ITERATION_2 39
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 40 && BOOST_PP_ITERATION_FINISH_2 >= 40
+# define BOOST_PP_ITERATION_2 40
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 41 && BOOST_PP_ITERATION_FINISH_2 >= 41
+# define BOOST_PP_ITERATION_2 41
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 42 && BOOST_PP_ITERATION_FINISH_2 >= 42
+# define BOOST_PP_ITERATION_2 42
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 43 && BOOST_PP_ITERATION_FINISH_2 >= 43
+# define BOOST_PP_ITERATION_2 43
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 44 && BOOST_PP_ITERATION_FINISH_2 >= 44
+# define BOOST_PP_ITERATION_2 44
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 45 && BOOST_PP_ITERATION_FINISH_2 >= 45
+# define BOOST_PP_ITERATION_2 45
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 46 && BOOST_PP_ITERATION_FINISH_2 >= 46
+# define BOOST_PP_ITERATION_2 46
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 47 && BOOST_PP_ITERATION_FINISH_2 >= 47
+# define BOOST_PP_ITERATION_2 47
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 48 && BOOST_PP_ITERATION_FINISH_2 >= 48
+# define BOOST_PP_ITERATION_2 48
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 49 && BOOST_PP_ITERATION_FINISH_2 >= 49
+# define BOOST_PP_ITERATION_2 49
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 50 && BOOST_PP_ITERATION_FINISH_2 >= 50
+# define BOOST_PP_ITERATION_2 50
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 51 && BOOST_PP_ITERATION_FINISH_2 >= 51
+# define BOOST_PP_ITERATION_2 51
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 52 && BOOST_PP_ITERATION_FINISH_2 >= 52
+# define BOOST_PP_ITERATION_2 52
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 53 && BOOST_PP_ITERATION_FINISH_2 >= 53
+# define BOOST_PP_ITERATION_2 53
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 54 && BOOST_PP_ITERATION_FINISH_2 >= 54
+# define BOOST_PP_ITERATION_2 54
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 55 && BOOST_PP_ITERATION_FINISH_2 >= 55
+# define BOOST_PP_ITERATION_2 55
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 56 && BOOST_PP_ITERATION_FINISH_2 >= 56
+# define BOOST_PP_ITERATION_2 56
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 57 && BOOST_PP_ITERATION_FINISH_2 >= 57
+# define BOOST_PP_ITERATION_2 57
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 58 && BOOST_PP_ITERATION_FINISH_2 >= 58
+# define BOOST_PP_ITERATION_2 58
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 59 && BOOST_PP_ITERATION_FINISH_2 >= 59
+# define BOOST_PP_ITERATION_2 59
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 60 && BOOST_PP_ITERATION_FINISH_2 >= 60
+# define BOOST_PP_ITERATION_2 60
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 61 && BOOST_PP_ITERATION_FINISH_2 >= 61
+# define BOOST_PP_ITERATION_2 61
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 62 && BOOST_PP_ITERATION_FINISH_2 >= 62
+# define BOOST_PP_ITERATION_2 62
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 63 && BOOST_PP_ITERATION_FINISH_2 >= 63
+# define BOOST_PP_ITERATION_2 63
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 64 && BOOST_PP_ITERATION_FINISH_2 >= 64
+# define BOOST_PP_ITERATION_2 64
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 65 && BOOST_PP_ITERATION_FINISH_2 >= 65
+# define BOOST_PP_ITERATION_2 65
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 66 && BOOST_PP_ITERATION_FINISH_2 >= 66
+# define BOOST_PP_ITERATION_2 66
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 67 && BOOST_PP_ITERATION_FINISH_2 >= 67
+# define BOOST_PP_ITERATION_2 67
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 68 && BOOST_PP_ITERATION_FINISH_2 >= 68
+# define BOOST_PP_ITERATION_2 68
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 69 && BOOST_PP_ITERATION_FINISH_2 >= 69
+# define BOOST_PP_ITERATION_2 69
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 70 && BOOST_PP_ITERATION_FINISH_2 >= 70
+# define BOOST_PP_ITERATION_2 70
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 71 && BOOST_PP_ITERATION_FINISH_2 >= 71
+# define BOOST_PP_ITERATION_2 71
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 72 && BOOST_PP_ITERATION_FINISH_2 >= 72
+# define BOOST_PP_ITERATION_2 72
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 73 && BOOST_PP_ITERATION_FINISH_2 >= 73
+# define BOOST_PP_ITERATION_2 73
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 74 && BOOST_PP_ITERATION_FINISH_2 >= 74
+# define BOOST_PP_ITERATION_2 74
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 75 && BOOST_PP_ITERATION_FINISH_2 >= 75
+# define BOOST_PP_ITERATION_2 75
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 76 && BOOST_PP_ITERATION_FINISH_2 >= 76
+# define BOOST_PP_ITERATION_2 76
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 77 && BOOST_PP_ITERATION_FINISH_2 >= 77
+# define BOOST_PP_ITERATION_2 77
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 78 && BOOST_PP_ITERATION_FINISH_2 >= 78
+# define BOOST_PP_ITERATION_2 78
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 79 && BOOST_PP_ITERATION_FINISH_2 >= 79
+# define BOOST_PP_ITERATION_2 79
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 80 && BOOST_PP_ITERATION_FINISH_2 >= 80
+# define BOOST_PP_ITERATION_2 80
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 81 && BOOST_PP_ITERATION_FINISH_2 >= 81
+# define BOOST_PP_ITERATION_2 81
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 82 && BOOST_PP_ITERATION_FINISH_2 >= 82
+# define BOOST_PP_ITERATION_2 82
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 83 && BOOST_PP_ITERATION_FINISH_2 >= 83
+# define BOOST_PP_ITERATION_2 83
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 84 && BOOST_PP_ITERATION_FINISH_2 >= 84
+# define BOOST_PP_ITERATION_2 84
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 85 && BOOST_PP_ITERATION_FINISH_2 >= 85
+# define BOOST_PP_ITERATION_2 85
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 86 && BOOST_PP_ITERATION_FINISH_2 >= 86
+# define BOOST_PP_ITERATION_2 86
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 87 && BOOST_PP_ITERATION_FINISH_2 >= 87
+# define BOOST_PP_ITERATION_2 87
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 88 && BOOST_PP_ITERATION_FINISH_2 >= 88
+# define BOOST_PP_ITERATION_2 88
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 89 && BOOST_PP_ITERATION_FINISH_2 >= 89
+# define BOOST_PP_ITERATION_2 89
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 90 && BOOST_PP_ITERATION_FINISH_2 >= 90
+# define BOOST_PP_ITERATION_2 90
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 91 && BOOST_PP_ITERATION_FINISH_2 >= 91
+# define BOOST_PP_ITERATION_2 91
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 92 && BOOST_PP_ITERATION_FINISH_2 >= 92
+# define BOOST_PP_ITERATION_2 92
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 93 && BOOST_PP_ITERATION_FINISH_2 >= 93
+# define BOOST_PP_ITERATION_2 93
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 94 && BOOST_PP_ITERATION_FINISH_2 >= 94
+# define BOOST_PP_ITERATION_2 94
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 95 && BOOST_PP_ITERATION_FINISH_2 >= 95
+# define BOOST_PP_ITERATION_2 95
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 96 && BOOST_PP_ITERATION_FINISH_2 >= 96
+# define BOOST_PP_ITERATION_2 96
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 97 && BOOST_PP_ITERATION_FINISH_2 >= 97
+# define BOOST_PP_ITERATION_2 97
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 98 && BOOST_PP_ITERATION_FINISH_2 >= 98
+# define BOOST_PP_ITERATION_2 98
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 99 && BOOST_PP_ITERATION_FINISH_2 >= 99
+# define BOOST_PP_ITERATION_2 99
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 100 && BOOST_PP_ITERATION_FINISH_2 >= 100
+# define BOOST_PP_ITERATION_2 100
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 101 && BOOST_PP_ITERATION_FINISH_2 >= 101
+# define BOOST_PP_ITERATION_2 101
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 102 && BOOST_PP_ITERATION_FINISH_2 >= 102
+# define BOOST_PP_ITERATION_2 102
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 103 && BOOST_PP_ITERATION_FINISH_2 >= 103
+# define BOOST_PP_ITERATION_2 103
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 104 && BOOST_PP_ITERATION_FINISH_2 >= 104
+# define BOOST_PP_ITERATION_2 104
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 105 && BOOST_PP_ITERATION_FINISH_2 >= 105
+# define BOOST_PP_ITERATION_2 105
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 106 && BOOST_PP_ITERATION_FINISH_2 >= 106
+# define BOOST_PP_ITERATION_2 106
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 107 && BOOST_PP_ITERATION_FINISH_2 >= 107
+# define BOOST_PP_ITERATION_2 107
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 108 && BOOST_PP_ITERATION_FINISH_2 >= 108
+# define BOOST_PP_ITERATION_2 108
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 109 && BOOST_PP_ITERATION_FINISH_2 >= 109
+# define BOOST_PP_ITERATION_2 109
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 110 && BOOST_PP_ITERATION_FINISH_2 >= 110
+# define BOOST_PP_ITERATION_2 110
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 111 && BOOST_PP_ITERATION_FINISH_2 >= 111
+# define BOOST_PP_ITERATION_2 111
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 112 && BOOST_PP_ITERATION_FINISH_2 >= 112
+# define BOOST_PP_ITERATION_2 112
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 113 && BOOST_PP_ITERATION_FINISH_2 >= 113
+# define BOOST_PP_ITERATION_2 113
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 114 && BOOST_PP_ITERATION_FINISH_2 >= 114
+# define BOOST_PP_ITERATION_2 114
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 115 && BOOST_PP_ITERATION_FINISH_2 >= 115
+# define BOOST_PP_ITERATION_2 115
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 116 && BOOST_PP_ITERATION_FINISH_2 >= 116
+# define BOOST_PP_ITERATION_2 116
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 117 && BOOST_PP_ITERATION_FINISH_2 >= 117
+# define BOOST_PP_ITERATION_2 117
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 118 && BOOST_PP_ITERATION_FINISH_2 >= 118
+# define BOOST_PP_ITERATION_2 118
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 119 && BOOST_PP_ITERATION_FINISH_2 >= 119
+# define BOOST_PP_ITERATION_2 119
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 120 && BOOST_PP_ITERATION_FINISH_2 >= 120
+# define BOOST_PP_ITERATION_2 120
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 121 && BOOST_PP_ITERATION_FINISH_2 >= 121
+# define BOOST_PP_ITERATION_2 121
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 122 && BOOST_PP_ITERATION_FINISH_2 >= 122
+# define BOOST_PP_ITERATION_2 122
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 123 && BOOST_PP_ITERATION_FINISH_2 >= 123
+# define BOOST_PP_ITERATION_2 123
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 124 && BOOST_PP_ITERATION_FINISH_2 >= 124
+# define BOOST_PP_ITERATION_2 124
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 125 && BOOST_PP_ITERATION_FINISH_2 >= 125
+# define BOOST_PP_ITERATION_2 125
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 126 && BOOST_PP_ITERATION_FINISH_2 >= 126
+# define BOOST_PP_ITERATION_2 126
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 127 && BOOST_PP_ITERATION_FINISH_2 >= 127
+# define BOOST_PP_ITERATION_2 127
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 128 && BOOST_PP_ITERATION_FINISH_2 >= 128
+# define BOOST_PP_ITERATION_2 128
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 129 && BOOST_PP_ITERATION_FINISH_2 >= 129
+# define BOOST_PP_ITERATION_2 129
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 130 && BOOST_PP_ITERATION_FINISH_2 >= 130
+# define BOOST_PP_ITERATION_2 130
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 131 && BOOST_PP_ITERATION_FINISH_2 >= 131
+# define BOOST_PP_ITERATION_2 131
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 132 && BOOST_PP_ITERATION_FINISH_2 >= 132
+# define BOOST_PP_ITERATION_2 132
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 133 && BOOST_PP_ITERATION_FINISH_2 >= 133
+# define BOOST_PP_ITERATION_2 133
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 134 && BOOST_PP_ITERATION_FINISH_2 >= 134
+# define BOOST_PP_ITERATION_2 134
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 135 && BOOST_PP_ITERATION_FINISH_2 >= 135
+# define BOOST_PP_ITERATION_2 135
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 136 && BOOST_PP_ITERATION_FINISH_2 >= 136
+# define BOOST_PP_ITERATION_2 136
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 137 && BOOST_PP_ITERATION_FINISH_2 >= 137
+# define BOOST_PP_ITERATION_2 137
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 138 && BOOST_PP_ITERATION_FINISH_2 >= 138
+# define BOOST_PP_ITERATION_2 138
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 139 && BOOST_PP_ITERATION_FINISH_2 >= 139
+# define BOOST_PP_ITERATION_2 139
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 140 && BOOST_PP_ITERATION_FINISH_2 >= 140
+# define BOOST_PP_ITERATION_2 140
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 141 && BOOST_PP_ITERATION_FINISH_2 >= 141
+# define BOOST_PP_ITERATION_2 141
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 142 && BOOST_PP_ITERATION_FINISH_2 >= 142
+# define BOOST_PP_ITERATION_2 142
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 143 && BOOST_PP_ITERATION_FINISH_2 >= 143
+# define BOOST_PP_ITERATION_2 143
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 144 && BOOST_PP_ITERATION_FINISH_2 >= 144
+# define BOOST_PP_ITERATION_2 144
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 145 && BOOST_PP_ITERATION_FINISH_2 >= 145
+# define BOOST_PP_ITERATION_2 145
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 146 && BOOST_PP_ITERATION_FINISH_2 >= 146
+# define BOOST_PP_ITERATION_2 146
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 147 && BOOST_PP_ITERATION_FINISH_2 >= 147
+# define BOOST_PP_ITERATION_2 147
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 148 && BOOST_PP_ITERATION_FINISH_2 >= 148
+# define BOOST_PP_ITERATION_2 148
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 149 && BOOST_PP_ITERATION_FINISH_2 >= 149
+# define BOOST_PP_ITERATION_2 149
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 150 && BOOST_PP_ITERATION_FINISH_2 >= 150
+# define BOOST_PP_ITERATION_2 150
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 151 && BOOST_PP_ITERATION_FINISH_2 >= 151
+# define BOOST_PP_ITERATION_2 151
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 152 && BOOST_PP_ITERATION_FINISH_2 >= 152
+# define BOOST_PP_ITERATION_2 152
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 153 && BOOST_PP_ITERATION_FINISH_2 >= 153
+# define BOOST_PP_ITERATION_2 153
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 154 && BOOST_PP_ITERATION_FINISH_2 >= 154
+# define BOOST_PP_ITERATION_2 154
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 155 && BOOST_PP_ITERATION_FINISH_2 >= 155
+# define BOOST_PP_ITERATION_2 155
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 156 && BOOST_PP_ITERATION_FINISH_2 >= 156
+# define BOOST_PP_ITERATION_2 156
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 157 && BOOST_PP_ITERATION_FINISH_2 >= 157
+# define BOOST_PP_ITERATION_2 157
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 158 && BOOST_PP_ITERATION_FINISH_2 >= 158
+# define BOOST_PP_ITERATION_2 158
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 159 && BOOST_PP_ITERATION_FINISH_2 >= 159
+# define BOOST_PP_ITERATION_2 159
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 160 && BOOST_PP_ITERATION_FINISH_2 >= 160
+# define BOOST_PP_ITERATION_2 160
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 161 && BOOST_PP_ITERATION_FINISH_2 >= 161
+# define BOOST_PP_ITERATION_2 161
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 162 && BOOST_PP_ITERATION_FINISH_2 >= 162
+# define BOOST_PP_ITERATION_2 162
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 163 && BOOST_PP_ITERATION_FINISH_2 >= 163
+# define BOOST_PP_ITERATION_2 163
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 164 && BOOST_PP_ITERATION_FINISH_2 >= 164
+# define BOOST_PP_ITERATION_2 164
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 165 && BOOST_PP_ITERATION_FINISH_2 >= 165
+# define BOOST_PP_ITERATION_2 165
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 166 && BOOST_PP_ITERATION_FINISH_2 >= 166
+# define BOOST_PP_ITERATION_2 166
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 167 && BOOST_PP_ITERATION_FINISH_2 >= 167
+# define BOOST_PP_ITERATION_2 167
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 168 && BOOST_PP_ITERATION_FINISH_2 >= 168
+# define BOOST_PP_ITERATION_2 168
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 169 && BOOST_PP_ITERATION_FINISH_2 >= 169
+# define BOOST_PP_ITERATION_2 169
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 170 && BOOST_PP_ITERATION_FINISH_2 >= 170
+# define BOOST_PP_ITERATION_2 170
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 171 && BOOST_PP_ITERATION_FINISH_2 >= 171
+# define BOOST_PP_ITERATION_2 171
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 172 && BOOST_PP_ITERATION_FINISH_2 >= 172
+# define BOOST_PP_ITERATION_2 172
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 173 && BOOST_PP_ITERATION_FINISH_2 >= 173
+# define BOOST_PP_ITERATION_2 173
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 174 && BOOST_PP_ITERATION_FINISH_2 >= 174
+# define BOOST_PP_ITERATION_2 174
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 175 && BOOST_PP_ITERATION_FINISH_2 >= 175
+# define BOOST_PP_ITERATION_2 175
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 176 && BOOST_PP_ITERATION_FINISH_2 >= 176
+# define BOOST_PP_ITERATION_2 176
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 177 && BOOST_PP_ITERATION_FINISH_2 >= 177
+# define BOOST_PP_ITERATION_2 177
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 178 && BOOST_PP_ITERATION_FINISH_2 >= 178
+# define BOOST_PP_ITERATION_2 178
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 179 && BOOST_PP_ITERATION_FINISH_2 >= 179
+# define BOOST_PP_ITERATION_2 179
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 180 && BOOST_PP_ITERATION_FINISH_2 >= 180
+# define BOOST_PP_ITERATION_2 180
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 181 && BOOST_PP_ITERATION_FINISH_2 >= 181
+# define BOOST_PP_ITERATION_2 181
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 182 && BOOST_PP_ITERATION_FINISH_2 >= 182
+# define BOOST_PP_ITERATION_2 182
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 183 && BOOST_PP_ITERATION_FINISH_2 >= 183
+# define BOOST_PP_ITERATION_2 183
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 184 && BOOST_PP_ITERATION_FINISH_2 >= 184
+# define BOOST_PP_ITERATION_2 184
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 185 && BOOST_PP_ITERATION_FINISH_2 >= 185
+# define BOOST_PP_ITERATION_2 185
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 186 && BOOST_PP_ITERATION_FINISH_2 >= 186
+# define BOOST_PP_ITERATION_2 186
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 187 && BOOST_PP_ITERATION_FINISH_2 >= 187
+# define BOOST_PP_ITERATION_2 187
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 188 && BOOST_PP_ITERATION_FINISH_2 >= 188
+# define BOOST_PP_ITERATION_2 188
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 189 && BOOST_PP_ITERATION_FINISH_2 >= 189
+# define BOOST_PP_ITERATION_2 189
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 190 && BOOST_PP_ITERATION_FINISH_2 >= 190
+# define BOOST_PP_ITERATION_2 190
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 191 && BOOST_PP_ITERATION_FINISH_2 >= 191
+# define BOOST_PP_ITERATION_2 191
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 192 && BOOST_PP_ITERATION_FINISH_2 >= 192
+# define BOOST_PP_ITERATION_2 192
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 193 && BOOST_PP_ITERATION_FINISH_2 >= 193
+# define BOOST_PP_ITERATION_2 193
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 194 && BOOST_PP_ITERATION_FINISH_2 >= 194
+# define BOOST_PP_ITERATION_2 194
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 195 && BOOST_PP_ITERATION_FINISH_2 >= 195
+# define BOOST_PP_ITERATION_2 195
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 196 && BOOST_PP_ITERATION_FINISH_2 >= 196
+# define BOOST_PP_ITERATION_2 196
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 197 && BOOST_PP_ITERATION_FINISH_2 >= 197
+# define BOOST_PP_ITERATION_2 197
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 198 && BOOST_PP_ITERATION_FINISH_2 >= 198
+# define BOOST_PP_ITERATION_2 198
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 199 && BOOST_PP_ITERATION_FINISH_2 >= 199
+# define BOOST_PP_ITERATION_2 199
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 200 && BOOST_PP_ITERATION_FINISH_2 >= 200
+# define BOOST_PP_ITERATION_2 200
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 201 && BOOST_PP_ITERATION_FINISH_2 >= 201
+# define BOOST_PP_ITERATION_2 201
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 202 && BOOST_PP_ITERATION_FINISH_2 >= 202
+# define BOOST_PP_ITERATION_2 202
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 203 && BOOST_PP_ITERATION_FINISH_2 >= 203
+# define BOOST_PP_ITERATION_2 203
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 204 && BOOST_PP_ITERATION_FINISH_2 >= 204
+# define BOOST_PP_ITERATION_2 204
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 205 && BOOST_PP_ITERATION_FINISH_2 >= 205
+# define BOOST_PP_ITERATION_2 205
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 206 && BOOST_PP_ITERATION_FINISH_2 >= 206
+# define BOOST_PP_ITERATION_2 206
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 207 && BOOST_PP_ITERATION_FINISH_2 >= 207
+# define BOOST_PP_ITERATION_2 207
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 208 && BOOST_PP_ITERATION_FINISH_2 >= 208
+# define BOOST_PP_ITERATION_2 208
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 209 && BOOST_PP_ITERATION_FINISH_2 >= 209
+# define BOOST_PP_ITERATION_2 209
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 210 && BOOST_PP_ITERATION_FINISH_2 >= 210
+# define BOOST_PP_ITERATION_2 210
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 211 && BOOST_PP_ITERATION_FINISH_2 >= 211
+# define BOOST_PP_ITERATION_2 211
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 212 && BOOST_PP_ITERATION_FINISH_2 >= 212
+# define BOOST_PP_ITERATION_2 212
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 213 && BOOST_PP_ITERATION_FINISH_2 >= 213
+# define BOOST_PP_ITERATION_2 213
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 214 && BOOST_PP_ITERATION_FINISH_2 >= 214
+# define BOOST_PP_ITERATION_2 214
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 215 && BOOST_PP_ITERATION_FINISH_2 >= 215
+# define BOOST_PP_ITERATION_2 215
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 216 && BOOST_PP_ITERATION_FINISH_2 >= 216
+# define BOOST_PP_ITERATION_2 216
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 217 && BOOST_PP_ITERATION_FINISH_2 >= 217
+# define BOOST_PP_ITERATION_2 217
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 218 && BOOST_PP_ITERATION_FINISH_2 >= 218
+# define BOOST_PP_ITERATION_2 218
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 219 && BOOST_PP_ITERATION_FINISH_2 >= 219
+# define BOOST_PP_ITERATION_2 219
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 220 && BOOST_PP_ITERATION_FINISH_2 >= 220
+# define BOOST_PP_ITERATION_2 220
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 221 && BOOST_PP_ITERATION_FINISH_2 >= 221
+# define BOOST_PP_ITERATION_2 221
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 222 && BOOST_PP_ITERATION_FINISH_2 >= 222
+# define BOOST_PP_ITERATION_2 222
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 223 && BOOST_PP_ITERATION_FINISH_2 >= 223
+# define BOOST_PP_ITERATION_2 223
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 224 && BOOST_PP_ITERATION_FINISH_2 >= 224
+# define BOOST_PP_ITERATION_2 224
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 225 && BOOST_PP_ITERATION_FINISH_2 >= 225
+# define BOOST_PP_ITERATION_2 225
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 226 && BOOST_PP_ITERATION_FINISH_2 >= 226
+# define BOOST_PP_ITERATION_2 226
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 227 && BOOST_PP_ITERATION_FINISH_2 >= 227
+# define BOOST_PP_ITERATION_2 227
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 228 && BOOST_PP_ITERATION_FINISH_2 >= 228
+# define BOOST_PP_ITERATION_2 228
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 229 && BOOST_PP_ITERATION_FINISH_2 >= 229
+# define BOOST_PP_ITERATION_2 229
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 230 && BOOST_PP_ITERATION_FINISH_2 >= 230
+# define BOOST_PP_ITERATION_2 230
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 231 && BOOST_PP_ITERATION_FINISH_2 >= 231
+# define BOOST_PP_ITERATION_2 231
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 232 && BOOST_PP_ITERATION_FINISH_2 >= 232
+# define BOOST_PP_ITERATION_2 232
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 233 && BOOST_PP_ITERATION_FINISH_2 >= 233
+# define BOOST_PP_ITERATION_2 233
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 234 && BOOST_PP_ITERATION_FINISH_2 >= 234
+# define BOOST_PP_ITERATION_2 234
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 235 && BOOST_PP_ITERATION_FINISH_2 >= 235
+# define BOOST_PP_ITERATION_2 235
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 236 && BOOST_PP_ITERATION_FINISH_2 >= 236
+# define BOOST_PP_ITERATION_2 236
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 237 && BOOST_PP_ITERATION_FINISH_2 >= 237
+# define BOOST_PP_ITERATION_2 237
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 238 && BOOST_PP_ITERATION_FINISH_2 >= 238
+# define BOOST_PP_ITERATION_2 238
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 239 && BOOST_PP_ITERATION_FINISH_2 >= 239
+# define BOOST_PP_ITERATION_2 239
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 240 && BOOST_PP_ITERATION_FINISH_2 >= 240
+# define BOOST_PP_ITERATION_2 240
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 241 && BOOST_PP_ITERATION_FINISH_2 >= 241
+# define BOOST_PP_ITERATION_2 241
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 242 && BOOST_PP_ITERATION_FINISH_2 >= 242
+# define BOOST_PP_ITERATION_2 242
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 243 && BOOST_PP_ITERATION_FINISH_2 >= 243
+# define BOOST_PP_ITERATION_2 243
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 244 && BOOST_PP_ITERATION_FINISH_2 >= 244
+# define BOOST_PP_ITERATION_2 244
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 245 && BOOST_PP_ITERATION_FINISH_2 >= 245
+# define BOOST_PP_ITERATION_2 245
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 246 && BOOST_PP_ITERATION_FINISH_2 >= 246
+# define BOOST_PP_ITERATION_2 246
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 247 && BOOST_PP_ITERATION_FINISH_2 >= 247
+# define BOOST_PP_ITERATION_2 247
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 248 && BOOST_PP_ITERATION_FINISH_2 >= 248
+# define BOOST_PP_ITERATION_2 248
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 249 && BOOST_PP_ITERATION_FINISH_2 >= 249
+# define BOOST_PP_ITERATION_2 249
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 250 && BOOST_PP_ITERATION_FINISH_2 >= 250
+# define BOOST_PP_ITERATION_2 250
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 251 && BOOST_PP_ITERATION_FINISH_2 >= 251
+# define BOOST_PP_ITERATION_2 251
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 252 && BOOST_PP_ITERATION_FINISH_2 >= 252
+# define BOOST_PP_ITERATION_2 252
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 253 && BOOST_PP_ITERATION_FINISH_2 >= 253
+# define BOOST_PP_ITERATION_2 253
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 254 && BOOST_PP_ITERATION_FINISH_2 >= 254
+# define BOOST_PP_ITERATION_2 254
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 255 && BOOST_PP_ITERATION_FINISH_2 >= 255
+# define BOOST_PP_ITERATION_2 255
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_START_2 <= 256 && BOOST_PP_ITERATION_FINISH_2 >= 256
+# define BOOST_PP_ITERATION_2 256
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 1
+#
+# undef BOOST_PP_ITERATION_START_2
+# undef BOOST_PP_ITERATION_FINISH_2
+# undef BOOST_PP_FILENAME_2
+#
+# undef BOOST_PP_ITERATION_FLAGS_2
+# undef BOOST_PP_ITERATION_PARAMS_2
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward3.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward3.hpp
new file mode 100644
index 0000000..e68966f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward3.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_3)
+# error BOOST_PP_ERROR: depth #3 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower3.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper3.hpp>
+# define BOOST_PP_ITERATION_FLAGS_3() 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_3)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_3)
+# include <boost/preprocessor/iteration/detail/bounds/lower3.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_3)
+# include <boost/preprocessor/iteration/detail/bounds/upper3.hpp>
+# define BOOST_PP_FILENAME_3 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_3)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_3) >= 4
+# define BOOST_PP_ITERATION_FLAGS_3() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_3)
+# else
+# define BOOST_PP_ITERATION_FLAGS_3() 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #3 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 3
+#
+# if (BOOST_PP_ITERATION_START_3) > (BOOST_PP_ITERATION_FINISH_3)
+# include <boost/preprocessor/iteration/detail/iter/reverse3.hpp>
+# else
+# if BOOST_PP_ITERATION_START_3 <= 0 && BOOST_PP_ITERATION_FINISH_3 >= 0
+# define BOOST_PP_ITERATION_3 0
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 1 && BOOST_PP_ITERATION_FINISH_3 >= 1
+# define BOOST_PP_ITERATION_3 1
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 2 && BOOST_PP_ITERATION_FINISH_3 >= 2
+# define BOOST_PP_ITERATION_3 2
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 3 && BOOST_PP_ITERATION_FINISH_3 >= 3
+# define BOOST_PP_ITERATION_3 3
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 4 && BOOST_PP_ITERATION_FINISH_3 >= 4
+# define BOOST_PP_ITERATION_3 4
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 5 && BOOST_PP_ITERATION_FINISH_3 >= 5
+# define BOOST_PP_ITERATION_3 5
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 6 && BOOST_PP_ITERATION_FINISH_3 >= 6
+# define BOOST_PP_ITERATION_3 6
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 7 && BOOST_PP_ITERATION_FINISH_3 >= 7
+# define BOOST_PP_ITERATION_3 7
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 8 && BOOST_PP_ITERATION_FINISH_3 >= 8
+# define BOOST_PP_ITERATION_3 8
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 9 && BOOST_PP_ITERATION_FINISH_3 >= 9
+# define BOOST_PP_ITERATION_3 9
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 10 && BOOST_PP_ITERATION_FINISH_3 >= 10
+# define BOOST_PP_ITERATION_3 10
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 11 && BOOST_PP_ITERATION_FINISH_3 >= 11
+# define BOOST_PP_ITERATION_3 11
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 12 && BOOST_PP_ITERATION_FINISH_3 >= 12
+# define BOOST_PP_ITERATION_3 12
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 13 && BOOST_PP_ITERATION_FINISH_3 >= 13
+# define BOOST_PP_ITERATION_3 13
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 14 && BOOST_PP_ITERATION_FINISH_3 >= 14
+# define BOOST_PP_ITERATION_3 14
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 15 && BOOST_PP_ITERATION_FINISH_3 >= 15
+# define BOOST_PP_ITERATION_3 15
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 16 && BOOST_PP_ITERATION_FINISH_3 >= 16
+# define BOOST_PP_ITERATION_3 16
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 17 && BOOST_PP_ITERATION_FINISH_3 >= 17
+# define BOOST_PP_ITERATION_3 17
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 18 && BOOST_PP_ITERATION_FINISH_3 >= 18
+# define BOOST_PP_ITERATION_3 18
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 19 && BOOST_PP_ITERATION_FINISH_3 >= 19
+# define BOOST_PP_ITERATION_3 19
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 20 && BOOST_PP_ITERATION_FINISH_3 >= 20
+# define BOOST_PP_ITERATION_3 20
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 21 && BOOST_PP_ITERATION_FINISH_3 >= 21
+# define BOOST_PP_ITERATION_3 21
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 22 && BOOST_PP_ITERATION_FINISH_3 >= 22
+# define BOOST_PP_ITERATION_3 22
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 23 && BOOST_PP_ITERATION_FINISH_3 >= 23
+# define BOOST_PP_ITERATION_3 23
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 24 && BOOST_PP_ITERATION_FINISH_3 >= 24
+# define BOOST_PP_ITERATION_3 24
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 25 && BOOST_PP_ITERATION_FINISH_3 >= 25
+# define BOOST_PP_ITERATION_3 25
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 26 && BOOST_PP_ITERATION_FINISH_3 >= 26
+# define BOOST_PP_ITERATION_3 26
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 27 && BOOST_PP_ITERATION_FINISH_3 >= 27
+# define BOOST_PP_ITERATION_3 27
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 28 && BOOST_PP_ITERATION_FINISH_3 >= 28
+# define BOOST_PP_ITERATION_3 28
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 29 && BOOST_PP_ITERATION_FINISH_3 >= 29
+# define BOOST_PP_ITERATION_3 29
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 30 && BOOST_PP_ITERATION_FINISH_3 >= 30
+# define BOOST_PP_ITERATION_3 30
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 31 && BOOST_PP_ITERATION_FINISH_3 >= 31
+# define BOOST_PP_ITERATION_3 31
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 32 && BOOST_PP_ITERATION_FINISH_3 >= 32
+# define BOOST_PP_ITERATION_3 32
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 33 && BOOST_PP_ITERATION_FINISH_3 >= 33
+# define BOOST_PP_ITERATION_3 33
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 34 && BOOST_PP_ITERATION_FINISH_3 >= 34
+# define BOOST_PP_ITERATION_3 34
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 35 && BOOST_PP_ITERATION_FINISH_3 >= 35
+# define BOOST_PP_ITERATION_3 35
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 36 && BOOST_PP_ITERATION_FINISH_3 >= 36
+# define BOOST_PP_ITERATION_3 36
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 37 && BOOST_PP_ITERATION_FINISH_3 >= 37
+# define BOOST_PP_ITERATION_3 37
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 38 && BOOST_PP_ITERATION_FINISH_3 >= 38
+# define BOOST_PP_ITERATION_3 38
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 39 && BOOST_PP_ITERATION_FINISH_3 >= 39
+# define BOOST_PP_ITERATION_3 39
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 40 && BOOST_PP_ITERATION_FINISH_3 >= 40
+# define BOOST_PP_ITERATION_3 40
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 41 && BOOST_PP_ITERATION_FINISH_3 >= 41
+# define BOOST_PP_ITERATION_3 41
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 42 && BOOST_PP_ITERATION_FINISH_3 >= 42
+# define BOOST_PP_ITERATION_3 42
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 43 && BOOST_PP_ITERATION_FINISH_3 >= 43
+# define BOOST_PP_ITERATION_3 43
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 44 && BOOST_PP_ITERATION_FINISH_3 >= 44
+# define BOOST_PP_ITERATION_3 44
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 45 && BOOST_PP_ITERATION_FINISH_3 >= 45
+# define BOOST_PP_ITERATION_3 45
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 46 && BOOST_PP_ITERATION_FINISH_3 >= 46
+# define BOOST_PP_ITERATION_3 46
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 47 && BOOST_PP_ITERATION_FINISH_3 >= 47
+# define BOOST_PP_ITERATION_3 47
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 48 && BOOST_PP_ITERATION_FINISH_3 >= 48
+# define BOOST_PP_ITERATION_3 48
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 49 && BOOST_PP_ITERATION_FINISH_3 >= 49
+# define BOOST_PP_ITERATION_3 49
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 50 && BOOST_PP_ITERATION_FINISH_3 >= 50
+# define BOOST_PP_ITERATION_3 50
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 51 && BOOST_PP_ITERATION_FINISH_3 >= 51
+# define BOOST_PP_ITERATION_3 51
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 52 && BOOST_PP_ITERATION_FINISH_3 >= 52
+# define BOOST_PP_ITERATION_3 52
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 53 && BOOST_PP_ITERATION_FINISH_3 >= 53
+# define BOOST_PP_ITERATION_3 53
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 54 && BOOST_PP_ITERATION_FINISH_3 >= 54
+# define BOOST_PP_ITERATION_3 54
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 55 && BOOST_PP_ITERATION_FINISH_3 >= 55
+# define BOOST_PP_ITERATION_3 55
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 56 && BOOST_PP_ITERATION_FINISH_3 >= 56
+# define BOOST_PP_ITERATION_3 56
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 57 && BOOST_PP_ITERATION_FINISH_3 >= 57
+# define BOOST_PP_ITERATION_3 57
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 58 && BOOST_PP_ITERATION_FINISH_3 >= 58
+# define BOOST_PP_ITERATION_3 58
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 59 && BOOST_PP_ITERATION_FINISH_3 >= 59
+# define BOOST_PP_ITERATION_3 59
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 60 && BOOST_PP_ITERATION_FINISH_3 >= 60
+# define BOOST_PP_ITERATION_3 60
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 61 && BOOST_PP_ITERATION_FINISH_3 >= 61
+# define BOOST_PP_ITERATION_3 61
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 62 && BOOST_PP_ITERATION_FINISH_3 >= 62
+# define BOOST_PP_ITERATION_3 62
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 63 && BOOST_PP_ITERATION_FINISH_3 >= 63
+# define BOOST_PP_ITERATION_3 63
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 64 && BOOST_PP_ITERATION_FINISH_3 >= 64
+# define BOOST_PP_ITERATION_3 64
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 65 && BOOST_PP_ITERATION_FINISH_3 >= 65
+# define BOOST_PP_ITERATION_3 65
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 66 && BOOST_PP_ITERATION_FINISH_3 >= 66
+# define BOOST_PP_ITERATION_3 66
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 67 && BOOST_PP_ITERATION_FINISH_3 >= 67
+# define BOOST_PP_ITERATION_3 67
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 68 && BOOST_PP_ITERATION_FINISH_3 >= 68
+# define BOOST_PP_ITERATION_3 68
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 69 && BOOST_PP_ITERATION_FINISH_3 >= 69
+# define BOOST_PP_ITERATION_3 69
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 70 && BOOST_PP_ITERATION_FINISH_3 >= 70
+# define BOOST_PP_ITERATION_3 70
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 71 && BOOST_PP_ITERATION_FINISH_3 >= 71
+# define BOOST_PP_ITERATION_3 71
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 72 && BOOST_PP_ITERATION_FINISH_3 >= 72
+# define BOOST_PP_ITERATION_3 72
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 73 && BOOST_PP_ITERATION_FINISH_3 >= 73
+# define BOOST_PP_ITERATION_3 73
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 74 && BOOST_PP_ITERATION_FINISH_3 >= 74
+# define BOOST_PP_ITERATION_3 74
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 75 && BOOST_PP_ITERATION_FINISH_3 >= 75
+# define BOOST_PP_ITERATION_3 75
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 76 && BOOST_PP_ITERATION_FINISH_3 >= 76
+# define BOOST_PP_ITERATION_3 76
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 77 && BOOST_PP_ITERATION_FINISH_3 >= 77
+# define BOOST_PP_ITERATION_3 77
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 78 && BOOST_PP_ITERATION_FINISH_3 >= 78
+# define BOOST_PP_ITERATION_3 78
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 79 && BOOST_PP_ITERATION_FINISH_3 >= 79
+# define BOOST_PP_ITERATION_3 79
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 80 && BOOST_PP_ITERATION_FINISH_3 >= 80
+# define BOOST_PP_ITERATION_3 80
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 81 && BOOST_PP_ITERATION_FINISH_3 >= 81
+# define BOOST_PP_ITERATION_3 81
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 82 && BOOST_PP_ITERATION_FINISH_3 >= 82
+# define BOOST_PP_ITERATION_3 82
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 83 && BOOST_PP_ITERATION_FINISH_3 >= 83
+# define BOOST_PP_ITERATION_3 83
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 84 && BOOST_PP_ITERATION_FINISH_3 >= 84
+# define BOOST_PP_ITERATION_3 84
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 85 && BOOST_PP_ITERATION_FINISH_3 >= 85
+# define BOOST_PP_ITERATION_3 85
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 86 && BOOST_PP_ITERATION_FINISH_3 >= 86
+# define BOOST_PP_ITERATION_3 86
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 87 && BOOST_PP_ITERATION_FINISH_3 >= 87
+# define BOOST_PP_ITERATION_3 87
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 88 && BOOST_PP_ITERATION_FINISH_3 >= 88
+# define BOOST_PP_ITERATION_3 88
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 89 && BOOST_PP_ITERATION_FINISH_3 >= 89
+# define BOOST_PP_ITERATION_3 89
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 90 && BOOST_PP_ITERATION_FINISH_3 >= 90
+# define BOOST_PP_ITERATION_3 90
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 91 && BOOST_PP_ITERATION_FINISH_3 >= 91
+# define BOOST_PP_ITERATION_3 91
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 92 && BOOST_PP_ITERATION_FINISH_3 >= 92
+# define BOOST_PP_ITERATION_3 92
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 93 && BOOST_PP_ITERATION_FINISH_3 >= 93
+# define BOOST_PP_ITERATION_3 93
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 94 && BOOST_PP_ITERATION_FINISH_3 >= 94
+# define BOOST_PP_ITERATION_3 94
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 95 && BOOST_PP_ITERATION_FINISH_3 >= 95
+# define BOOST_PP_ITERATION_3 95
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 96 && BOOST_PP_ITERATION_FINISH_3 >= 96
+# define BOOST_PP_ITERATION_3 96
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 97 && BOOST_PP_ITERATION_FINISH_3 >= 97
+# define BOOST_PP_ITERATION_3 97
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 98 && BOOST_PP_ITERATION_FINISH_3 >= 98
+# define BOOST_PP_ITERATION_3 98
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 99 && BOOST_PP_ITERATION_FINISH_3 >= 99
+# define BOOST_PP_ITERATION_3 99
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 100 && BOOST_PP_ITERATION_FINISH_3 >= 100
+# define BOOST_PP_ITERATION_3 100
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 101 && BOOST_PP_ITERATION_FINISH_3 >= 101
+# define BOOST_PP_ITERATION_3 101
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 102 && BOOST_PP_ITERATION_FINISH_3 >= 102
+# define BOOST_PP_ITERATION_3 102
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 103 && BOOST_PP_ITERATION_FINISH_3 >= 103
+# define BOOST_PP_ITERATION_3 103
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 104 && BOOST_PP_ITERATION_FINISH_3 >= 104
+# define BOOST_PP_ITERATION_3 104
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 105 && BOOST_PP_ITERATION_FINISH_3 >= 105
+# define BOOST_PP_ITERATION_3 105
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 106 && BOOST_PP_ITERATION_FINISH_3 >= 106
+# define BOOST_PP_ITERATION_3 106
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 107 && BOOST_PP_ITERATION_FINISH_3 >= 107
+# define BOOST_PP_ITERATION_3 107
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 108 && BOOST_PP_ITERATION_FINISH_3 >= 108
+# define BOOST_PP_ITERATION_3 108
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 109 && BOOST_PP_ITERATION_FINISH_3 >= 109
+# define BOOST_PP_ITERATION_3 109
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 110 && BOOST_PP_ITERATION_FINISH_3 >= 110
+# define BOOST_PP_ITERATION_3 110
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 111 && BOOST_PP_ITERATION_FINISH_3 >= 111
+# define BOOST_PP_ITERATION_3 111
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 112 && BOOST_PP_ITERATION_FINISH_3 >= 112
+# define BOOST_PP_ITERATION_3 112
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 113 && BOOST_PP_ITERATION_FINISH_3 >= 113
+# define BOOST_PP_ITERATION_3 113
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 114 && BOOST_PP_ITERATION_FINISH_3 >= 114
+# define BOOST_PP_ITERATION_3 114
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 115 && BOOST_PP_ITERATION_FINISH_3 >= 115
+# define BOOST_PP_ITERATION_3 115
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 116 && BOOST_PP_ITERATION_FINISH_3 >= 116
+# define BOOST_PP_ITERATION_3 116
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 117 && BOOST_PP_ITERATION_FINISH_3 >= 117
+# define BOOST_PP_ITERATION_3 117
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 118 && BOOST_PP_ITERATION_FINISH_3 >= 118
+# define BOOST_PP_ITERATION_3 118
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 119 && BOOST_PP_ITERATION_FINISH_3 >= 119
+# define BOOST_PP_ITERATION_3 119
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 120 && BOOST_PP_ITERATION_FINISH_3 >= 120
+# define BOOST_PP_ITERATION_3 120
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 121 && BOOST_PP_ITERATION_FINISH_3 >= 121
+# define BOOST_PP_ITERATION_3 121
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 122 && BOOST_PP_ITERATION_FINISH_3 >= 122
+# define BOOST_PP_ITERATION_3 122
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 123 && BOOST_PP_ITERATION_FINISH_3 >= 123
+# define BOOST_PP_ITERATION_3 123
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 124 && BOOST_PP_ITERATION_FINISH_3 >= 124
+# define BOOST_PP_ITERATION_3 124
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 125 && BOOST_PP_ITERATION_FINISH_3 >= 125
+# define BOOST_PP_ITERATION_3 125
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 126 && BOOST_PP_ITERATION_FINISH_3 >= 126
+# define BOOST_PP_ITERATION_3 126
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 127 && BOOST_PP_ITERATION_FINISH_3 >= 127
+# define BOOST_PP_ITERATION_3 127
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 128 && BOOST_PP_ITERATION_FINISH_3 >= 128
+# define BOOST_PP_ITERATION_3 128
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 129 && BOOST_PP_ITERATION_FINISH_3 >= 129
+# define BOOST_PP_ITERATION_3 129
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 130 && BOOST_PP_ITERATION_FINISH_3 >= 130
+# define BOOST_PP_ITERATION_3 130
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 131 && BOOST_PP_ITERATION_FINISH_3 >= 131
+# define BOOST_PP_ITERATION_3 131
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 132 && BOOST_PP_ITERATION_FINISH_3 >= 132
+# define BOOST_PP_ITERATION_3 132
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 133 && BOOST_PP_ITERATION_FINISH_3 >= 133
+# define BOOST_PP_ITERATION_3 133
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 134 && BOOST_PP_ITERATION_FINISH_3 >= 134
+# define BOOST_PP_ITERATION_3 134
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 135 && BOOST_PP_ITERATION_FINISH_3 >= 135
+# define BOOST_PP_ITERATION_3 135
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 136 && BOOST_PP_ITERATION_FINISH_3 >= 136
+# define BOOST_PP_ITERATION_3 136
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 137 && BOOST_PP_ITERATION_FINISH_3 >= 137
+# define BOOST_PP_ITERATION_3 137
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 138 && BOOST_PP_ITERATION_FINISH_3 >= 138
+# define BOOST_PP_ITERATION_3 138
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 139 && BOOST_PP_ITERATION_FINISH_3 >= 139
+# define BOOST_PP_ITERATION_3 139
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 140 && BOOST_PP_ITERATION_FINISH_3 >= 140
+# define BOOST_PP_ITERATION_3 140
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 141 && BOOST_PP_ITERATION_FINISH_3 >= 141
+# define BOOST_PP_ITERATION_3 141
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 142 && BOOST_PP_ITERATION_FINISH_3 >= 142
+# define BOOST_PP_ITERATION_3 142
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 143 && BOOST_PP_ITERATION_FINISH_3 >= 143
+# define BOOST_PP_ITERATION_3 143
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 144 && BOOST_PP_ITERATION_FINISH_3 >= 144
+# define BOOST_PP_ITERATION_3 144
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 145 && BOOST_PP_ITERATION_FINISH_3 >= 145
+# define BOOST_PP_ITERATION_3 145
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 146 && BOOST_PP_ITERATION_FINISH_3 >= 146
+# define BOOST_PP_ITERATION_3 146
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 147 && BOOST_PP_ITERATION_FINISH_3 >= 147
+# define BOOST_PP_ITERATION_3 147
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 148 && BOOST_PP_ITERATION_FINISH_3 >= 148
+# define BOOST_PP_ITERATION_3 148
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 149 && BOOST_PP_ITERATION_FINISH_3 >= 149
+# define BOOST_PP_ITERATION_3 149
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 150 && BOOST_PP_ITERATION_FINISH_3 >= 150
+# define BOOST_PP_ITERATION_3 150
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 151 && BOOST_PP_ITERATION_FINISH_3 >= 151
+# define BOOST_PP_ITERATION_3 151
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 152 && BOOST_PP_ITERATION_FINISH_3 >= 152
+# define BOOST_PP_ITERATION_3 152
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 153 && BOOST_PP_ITERATION_FINISH_3 >= 153
+# define BOOST_PP_ITERATION_3 153
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 154 && BOOST_PP_ITERATION_FINISH_3 >= 154
+# define BOOST_PP_ITERATION_3 154
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 155 && BOOST_PP_ITERATION_FINISH_3 >= 155
+# define BOOST_PP_ITERATION_3 155
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 156 && BOOST_PP_ITERATION_FINISH_3 >= 156
+# define BOOST_PP_ITERATION_3 156
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 157 && BOOST_PP_ITERATION_FINISH_3 >= 157
+# define BOOST_PP_ITERATION_3 157
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 158 && BOOST_PP_ITERATION_FINISH_3 >= 158
+# define BOOST_PP_ITERATION_3 158
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 159 && BOOST_PP_ITERATION_FINISH_3 >= 159
+# define BOOST_PP_ITERATION_3 159
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 160 && BOOST_PP_ITERATION_FINISH_3 >= 160
+# define BOOST_PP_ITERATION_3 160
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 161 && BOOST_PP_ITERATION_FINISH_3 >= 161
+# define BOOST_PP_ITERATION_3 161
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 162 && BOOST_PP_ITERATION_FINISH_3 >= 162
+# define BOOST_PP_ITERATION_3 162
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 163 && BOOST_PP_ITERATION_FINISH_3 >= 163
+# define BOOST_PP_ITERATION_3 163
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 164 && BOOST_PP_ITERATION_FINISH_3 >= 164
+# define BOOST_PP_ITERATION_3 164
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 165 && BOOST_PP_ITERATION_FINISH_3 >= 165
+# define BOOST_PP_ITERATION_3 165
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 166 && BOOST_PP_ITERATION_FINISH_3 >= 166
+# define BOOST_PP_ITERATION_3 166
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 167 && BOOST_PP_ITERATION_FINISH_3 >= 167
+# define BOOST_PP_ITERATION_3 167
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 168 && BOOST_PP_ITERATION_FINISH_3 >= 168
+# define BOOST_PP_ITERATION_3 168
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 169 && BOOST_PP_ITERATION_FINISH_3 >= 169
+# define BOOST_PP_ITERATION_3 169
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 170 && BOOST_PP_ITERATION_FINISH_3 >= 170
+# define BOOST_PP_ITERATION_3 170
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 171 && BOOST_PP_ITERATION_FINISH_3 >= 171
+# define BOOST_PP_ITERATION_3 171
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 172 && BOOST_PP_ITERATION_FINISH_3 >= 172
+# define BOOST_PP_ITERATION_3 172
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 173 && BOOST_PP_ITERATION_FINISH_3 >= 173
+# define BOOST_PP_ITERATION_3 173
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 174 && BOOST_PP_ITERATION_FINISH_3 >= 174
+# define BOOST_PP_ITERATION_3 174
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 175 && BOOST_PP_ITERATION_FINISH_3 >= 175
+# define BOOST_PP_ITERATION_3 175
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 176 && BOOST_PP_ITERATION_FINISH_3 >= 176
+# define BOOST_PP_ITERATION_3 176
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 177 && BOOST_PP_ITERATION_FINISH_3 >= 177
+# define BOOST_PP_ITERATION_3 177
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 178 && BOOST_PP_ITERATION_FINISH_3 >= 178
+# define BOOST_PP_ITERATION_3 178
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 179 && BOOST_PP_ITERATION_FINISH_3 >= 179
+# define BOOST_PP_ITERATION_3 179
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 180 && BOOST_PP_ITERATION_FINISH_3 >= 180
+# define BOOST_PP_ITERATION_3 180
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 181 && BOOST_PP_ITERATION_FINISH_3 >= 181
+# define BOOST_PP_ITERATION_3 181
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 182 && BOOST_PP_ITERATION_FINISH_3 >= 182
+# define BOOST_PP_ITERATION_3 182
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 183 && BOOST_PP_ITERATION_FINISH_3 >= 183
+# define BOOST_PP_ITERATION_3 183
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 184 && BOOST_PP_ITERATION_FINISH_3 >= 184
+# define BOOST_PP_ITERATION_3 184
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 185 && BOOST_PP_ITERATION_FINISH_3 >= 185
+# define BOOST_PP_ITERATION_3 185
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 186 && BOOST_PP_ITERATION_FINISH_3 >= 186
+# define BOOST_PP_ITERATION_3 186
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 187 && BOOST_PP_ITERATION_FINISH_3 >= 187
+# define BOOST_PP_ITERATION_3 187
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 188 && BOOST_PP_ITERATION_FINISH_3 >= 188
+# define BOOST_PP_ITERATION_3 188
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 189 && BOOST_PP_ITERATION_FINISH_3 >= 189
+# define BOOST_PP_ITERATION_3 189
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 190 && BOOST_PP_ITERATION_FINISH_3 >= 190
+# define BOOST_PP_ITERATION_3 190
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 191 && BOOST_PP_ITERATION_FINISH_3 >= 191
+# define BOOST_PP_ITERATION_3 191
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 192 && BOOST_PP_ITERATION_FINISH_3 >= 192
+# define BOOST_PP_ITERATION_3 192
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 193 && BOOST_PP_ITERATION_FINISH_3 >= 193
+# define BOOST_PP_ITERATION_3 193
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 194 && BOOST_PP_ITERATION_FINISH_3 >= 194
+# define BOOST_PP_ITERATION_3 194
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 195 && BOOST_PP_ITERATION_FINISH_3 >= 195
+# define BOOST_PP_ITERATION_3 195
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 196 && BOOST_PP_ITERATION_FINISH_3 >= 196
+# define BOOST_PP_ITERATION_3 196
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 197 && BOOST_PP_ITERATION_FINISH_3 >= 197
+# define BOOST_PP_ITERATION_3 197
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 198 && BOOST_PP_ITERATION_FINISH_3 >= 198
+# define BOOST_PP_ITERATION_3 198
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 199 && BOOST_PP_ITERATION_FINISH_3 >= 199
+# define BOOST_PP_ITERATION_3 199
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 200 && BOOST_PP_ITERATION_FINISH_3 >= 200
+# define BOOST_PP_ITERATION_3 200
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 201 && BOOST_PP_ITERATION_FINISH_3 >= 201
+# define BOOST_PP_ITERATION_3 201
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 202 && BOOST_PP_ITERATION_FINISH_3 >= 202
+# define BOOST_PP_ITERATION_3 202
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 203 && BOOST_PP_ITERATION_FINISH_3 >= 203
+# define BOOST_PP_ITERATION_3 203
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 204 && BOOST_PP_ITERATION_FINISH_3 >= 204
+# define BOOST_PP_ITERATION_3 204
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 205 && BOOST_PP_ITERATION_FINISH_3 >= 205
+# define BOOST_PP_ITERATION_3 205
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 206 && BOOST_PP_ITERATION_FINISH_3 >= 206
+# define BOOST_PP_ITERATION_3 206
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 207 && BOOST_PP_ITERATION_FINISH_3 >= 207
+# define BOOST_PP_ITERATION_3 207
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 208 && BOOST_PP_ITERATION_FINISH_3 >= 208
+# define BOOST_PP_ITERATION_3 208
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 209 && BOOST_PP_ITERATION_FINISH_3 >= 209
+# define BOOST_PP_ITERATION_3 209
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 210 && BOOST_PP_ITERATION_FINISH_3 >= 210
+# define BOOST_PP_ITERATION_3 210
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 211 && BOOST_PP_ITERATION_FINISH_3 >= 211
+# define BOOST_PP_ITERATION_3 211
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 212 && BOOST_PP_ITERATION_FINISH_3 >= 212
+# define BOOST_PP_ITERATION_3 212
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 213 && BOOST_PP_ITERATION_FINISH_3 >= 213
+# define BOOST_PP_ITERATION_3 213
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 214 && BOOST_PP_ITERATION_FINISH_3 >= 214
+# define BOOST_PP_ITERATION_3 214
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 215 && BOOST_PP_ITERATION_FINISH_3 >= 215
+# define BOOST_PP_ITERATION_3 215
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 216 && BOOST_PP_ITERATION_FINISH_3 >= 216
+# define BOOST_PP_ITERATION_3 216
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 217 && BOOST_PP_ITERATION_FINISH_3 >= 217
+# define BOOST_PP_ITERATION_3 217
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 218 && BOOST_PP_ITERATION_FINISH_3 >= 218
+# define BOOST_PP_ITERATION_3 218
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 219 && BOOST_PP_ITERATION_FINISH_3 >= 219
+# define BOOST_PP_ITERATION_3 219
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 220 && BOOST_PP_ITERATION_FINISH_3 >= 220
+# define BOOST_PP_ITERATION_3 220
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 221 && BOOST_PP_ITERATION_FINISH_3 >= 221
+# define BOOST_PP_ITERATION_3 221
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 222 && BOOST_PP_ITERATION_FINISH_3 >= 222
+# define BOOST_PP_ITERATION_3 222
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 223 && BOOST_PP_ITERATION_FINISH_3 >= 223
+# define BOOST_PP_ITERATION_3 223
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 224 && BOOST_PP_ITERATION_FINISH_3 >= 224
+# define BOOST_PP_ITERATION_3 224
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 225 && BOOST_PP_ITERATION_FINISH_3 >= 225
+# define BOOST_PP_ITERATION_3 225
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 226 && BOOST_PP_ITERATION_FINISH_3 >= 226
+# define BOOST_PP_ITERATION_3 226
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 227 && BOOST_PP_ITERATION_FINISH_3 >= 227
+# define BOOST_PP_ITERATION_3 227
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 228 && BOOST_PP_ITERATION_FINISH_3 >= 228
+# define BOOST_PP_ITERATION_3 228
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 229 && BOOST_PP_ITERATION_FINISH_3 >= 229
+# define BOOST_PP_ITERATION_3 229
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 230 && BOOST_PP_ITERATION_FINISH_3 >= 230
+# define BOOST_PP_ITERATION_3 230
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 231 && BOOST_PP_ITERATION_FINISH_3 >= 231
+# define BOOST_PP_ITERATION_3 231
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 232 && BOOST_PP_ITERATION_FINISH_3 >= 232
+# define BOOST_PP_ITERATION_3 232
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 233 && BOOST_PP_ITERATION_FINISH_3 >= 233
+# define BOOST_PP_ITERATION_3 233
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 234 && BOOST_PP_ITERATION_FINISH_3 >= 234
+# define BOOST_PP_ITERATION_3 234
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 235 && BOOST_PP_ITERATION_FINISH_3 >= 235
+# define BOOST_PP_ITERATION_3 235
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 236 && BOOST_PP_ITERATION_FINISH_3 >= 236
+# define BOOST_PP_ITERATION_3 236
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 237 && BOOST_PP_ITERATION_FINISH_3 >= 237
+# define BOOST_PP_ITERATION_3 237
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 238 && BOOST_PP_ITERATION_FINISH_3 >= 238
+# define BOOST_PP_ITERATION_3 238
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 239 && BOOST_PP_ITERATION_FINISH_3 >= 239
+# define BOOST_PP_ITERATION_3 239
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 240 && BOOST_PP_ITERATION_FINISH_3 >= 240
+# define BOOST_PP_ITERATION_3 240
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 241 && BOOST_PP_ITERATION_FINISH_3 >= 241
+# define BOOST_PP_ITERATION_3 241
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 242 && BOOST_PP_ITERATION_FINISH_3 >= 242
+# define BOOST_PP_ITERATION_3 242
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 243 && BOOST_PP_ITERATION_FINISH_3 >= 243
+# define BOOST_PP_ITERATION_3 243
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 244 && BOOST_PP_ITERATION_FINISH_3 >= 244
+# define BOOST_PP_ITERATION_3 244
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 245 && BOOST_PP_ITERATION_FINISH_3 >= 245
+# define BOOST_PP_ITERATION_3 245
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 246 && BOOST_PP_ITERATION_FINISH_3 >= 246
+# define BOOST_PP_ITERATION_3 246
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 247 && BOOST_PP_ITERATION_FINISH_3 >= 247
+# define BOOST_PP_ITERATION_3 247
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 248 && BOOST_PP_ITERATION_FINISH_3 >= 248
+# define BOOST_PP_ITERATION_3 248
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 249 && BOOST_PP_ITERATION_FINISH_3 >= 249
+# define BOOST_PP_ITERATION_3 249
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 250 && BOOST_PP_ITERATION_FINISH_3 >= 250
+# define BOOST_PP_ITERATION_3 250
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 251 && BOOST_PP_ITERATION_FINISH_3 >= 251
+# define BOOST_PP_ITERATION_3 251
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 252 && BOOST_PP_ITERATION_FINISH_3 >= 252
+# define BOOST_PP_ITERATION_3 252
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 253 && BOOST_PP_ITERATION_FINISH_3 >= 253
+# define BOOST_PP_ITERATION_3 253
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 254 && BOOST_PP_ITERATION_FINISH_3 >= 254
+# define BOOST_PP_ITERATION_3 254
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 255 && BOOST_PP_ITERATION_FINISH_3 >= 255
+# define BOOST_PP_ITERATION_3 255
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_START_3 <= 256 && BOOST_PP_ITERATION_FINISH_3 >= 256
+# define BOOST_PP_ITERATION_3 256
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 2
+#
+# undef BOOST_PP_ITERATION_START_3
+# undef BOOST_PP_ITERATION_FINISH_3
+# undef BOOST_PP_FILENAME_3
+#
+# undef BOOST_PP_ITERATION_FLAGS_3
+# undef BOOST_PP_ITERATION_PARAMS_3
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward4.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward4.hpp
new file mode 100644
index 0000000..1b4f588
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward4.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_4)
+# error BOOST_PP_ERROR: depth #4 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower4.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper4.hpp>
+# define BOOST_PP_ITERATION_FLAGS_4() 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_4)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_4)
+# include <boost/preprocessor/iteration/detail/bounds/lower4.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_4)
+# include <boost/preprocessor/iteration/detail/bounds/upper4.hpp>
+# define BOOST_PP_FILENAME_4 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_4)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_4) >= 4
+# define BOOST_PP_ITERATION_FLAGS_4() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_4)
+# else
+# define BOOST_PP_ITERATION_FLAGS_4() 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #4 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 4
+#
+# if (BOOST_PP_ITERATION_START_4) > (BOOST_PP_ITERATION_FINISH_4)
+# include <boost/preprocessor/iteration/detail/iter/reverse4.hpp>
+# else
+# if BOOST_PP_ITERATION_START_4 <= 0 && BOOST_PP_ITERATION_FINISH_4 >= 0
+# define BOOST_PP_ITERATION_4 0
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 1 && BOOST_PP_ITERATION_FINISH_4 >= 1
+# define BOOST_PP_ITERATION_4 1
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 2 && BOOST_PP_ITERATION_FINISH_4 >= 2
+# define BOOST_PP_ITERATION_4 2
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 3 && BOOST_PP_ITERATION_FINISH_4 >= 3
+# define BOOST_PP_ITERATION_4 3
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 4 && BOOST_PP_ITERATION_FINISH_4 >= 4
+# define BOOST_PP_ITERATION_4 4
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 5 && BOOST_PP_ITERATION_FINISH_4 >= 5
+# define BOOST_PP_ITERATION_4 5
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 6 && BOOST_PP_ITERATION_FINISH_4 >= 6
+# define BOOST_PP_ITERATION_4 6
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 7 && BOOST_PP_ITERATION_FINISH_4 >= 7
+# define BOOST_PP_ITERATION_4 7
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 8 && BOOST_PP_ITERATION_FINISH_4 >= 8
+# define BOOST_PP_ITERATION_4 8
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 9 && BOOST_PP_ITERATION_FINISH_4 >= 9
+# define BOOST_PP_ITERATION_4 9
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 10 && BOOST_PP_ITERATION_FINISH_4 >= 10
+# define BOOST_PP_ITERATION_4 10
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 11 && BOOST_PP_ITERATION_FINISH_4 >= 11
+# define BOOST_PP_ITERATION_4 11
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 12 && BOOST_PP_ITERATION_FINISH_4 >= 12
+# define BOOST_PP_ITERATION_4 12
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 13 && BOOST_PP_ITERATION_FINISH_4 >= 13
+# define BOOST_PP_ITERATION_4 13
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 14 && BOOST_PP_ITERATION_FINISH_4 >= 14
+# define BOOST_PP_ITERATION_4 14
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 15 && BOOST_PP_ITERATION_FINISH_4 >= 15
+# define BOOST_PP_ITERATION_4 15
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 16 && BOOST_PP_ITERATION_FINISH_4 >= 16
+# define BOOST_PP_ITERATION_4 16
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 17 && BOOST_PP_ITERATION_FINISH_4 >= 17
+# define BOOST_PP_ITERATION_4 17
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 18 && BOOST_PP_ITERATION_FINISH_4 >= 18
+# define BOOST_PP_ITERATION_4 18
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 19 && BOOST_PP_ITERATION_FINISH_4 >= 19
+# define BOOST_PP_ITERATION_4 19
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 20 && BOOST_PP_ITERATION_FINISH_4 >= 20
+# define BOOST_PP_ITERATION_4 20
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 21 && BOOST_PP_ITERATION_FINISH_4 >= 21
+# define BOOST_PP_ITERATION_4 21
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 22 && BOOST_PP_ITERATION_FINISH_4 >= 22
+# define BOOST_PP_ITERATION_4 22
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 23 && BOOST_PP_ITERATION_FINISH_4 >= 23
+# define BOOST_PP_ITERATION_4 23
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 24 && BOOST_PP_ITERATION_FINISH_4 >= 24
+# define BOOST_PP_ITERATION_4 24
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 25 && BOOST_PP_ITERATION_FINISH_4 >= 25
+# define BOOST_PP_ITERATION_4 25
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 26 && BOOST_PP_ITERATION_FINISH_4 >= 26
+# define BOOST_PP_ITERATION_4 26
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 27 && BOOST_PP_ITERATION_FINISH_4 >= 27
+# define BOOST_PP_ITERATION_4 27
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 28 && BOOST_PP_ITERATION_FINISH_4 >= 28
+# define BOOST_PP_ITERATION_4 28
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 29 && BOOST_PP_ITERATION_FINISH_4 >= 29
+# define BOOST_PP_ITERATION_4 29
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 30 && BOOST_PP_ITERATION_FINISH_4 >= 30
+# define BOOST_PP_ITERATION_4 30
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 31 && BOOST_PP_ITERATION_FINISH_4 >= 31
+# define BOOST_PP_ITERATION_4 31
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 32 && BOOST_PP_ITERATION_FINISH_4 >= 32
+# define BOOST_PP_ITERATION_4 32
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 33 && BOOST_PP_ITERATION_FINISH_4 >= 33
+# define BOOST_PP_ITERATION_4 33
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 34 && BOOST_PP_ITERATION_FINISH_4 >= 34
+# define BOOST_PP_ITERATION_4 34
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 35 && BOOST_PP_ITERATION_FINISH_4 >= 35
+# define BOOST_PP_ITERATION_4 35
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 36 && BOOST_PP_ITERATION_FINISH_4 >= 36
+# define BOOST_PP_ITERATION_4 36
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 37 && BOOST_PP_ITERATION_FINISH_4 >= 37
+# define BOOST_PP_ITERATION_4 37
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 38 && BOOST_PP_ITERATION_FINISH_4 >= 38
+# define BOOST_PP_ITERATION_4 38
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 39 && BOOST_PP_ITERATION_FINISH_4 >= 39
+# define BOOST_PP_ITERATION_4 39
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 40 && BOOST_PP_ITERATION_FINISH_4 >= 40
+# define BOOST_PP_ITERATION_4 40
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 41 && BOOST_PP_ITERATION_FINISH_4 >= 41
+# define BOOST_PP_ITERATION_4 41
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 42 && BOOST_PP_ITERATION_FINISH_4 >= 42
+# define BOOST_PP_ITERATION_4 42
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 43 && BOOST_PP_ITERATION_FINISH_4 >= 43
+# define BOOST_PP_ITERATION_4 43
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 44 && BOOST_PP_ITERATION_FINISH_4 >= 44
+# define BOOST_PP_ITERATION_4 44
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 45 && BOOST_PP_ITERATION_FINISH_4 >= 45
+# define BOOST_PP_ITERATION_4 45
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 46 && BOOST_PP_ITERATION_FINISH_4 >= 46
+# define BOOST_PP_ITERATION_4 46
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 47 && BOOST_PP_ITERATION_FINISH_4 >= 47
+# define BOOST_PP_ITERATION_4 47
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 48 && BOOST_PP_ITERATION_FINISH_4 >= 48
+# define BOOST_PP_ITERATION_4 48
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 49 && BOOST_PP_ITERATION_FINISH_4 >= 49
+# define BOOST_PP_ITERATION_4 49
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 50 && BOOST_PP_ITERATION_FINISH_4 >= 50
+# define BOOST_PP_ITERATION_4 50
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 51 && BOOST_PP_ITERATION_FINISH_4 >= 51
+# define BOOST_PP_ITERATION_4 51
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 52 && BOOST_PP_ITERATION_FINISH_4 >= 52
+# define BOOST_PP_ITERATION_4 52
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 53 && BOOST_PP_ITERATION_FINISH_4 >= 53
+# define BOOST_PP_ITERATION_4 53
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 54 && BOOST_PP_ITERATION_FINISH_4 >= 54
+# define BOOST_PP_ITERATION_4 54
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 55 && BOOST_PP_ITERATION_FINISH_4 >= 55
+# define BOOST_PP_ITERATION_4 55
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 56 && BOOST_PP_ITERATION_FINISH_4 >= 56
+# define BOOST_PP_ITERATION_4 56
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 57 && BOOST_PP_ITERATION_FINISH_4 >= 57
+# define BOOST_PP_ITERATION_4 57
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 58 && BOOST_PP_ITERATION_FINISH_4 >= 58
+# define BOOST_PP_ITERATION_4 58
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 59 && BOOST_PP_ITERATION_FINISH_4 >= 59
+# define BOOST_PP_ITERATION_4 59
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 60 && BOOST_PP_ITERATION_FINISH_4 >= 60
+# define BOOST_PP_ITERATION_4 60
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 61 && BOOST_PP_ITERATION_FINISH_4 >= 61
+# define BOOST_PP_ITERATION_4 61
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 62 && BOOST_PP_ITERATION_FINISH_4 >= 62
+# define BOOST_PP_ITERATION_4 62
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 63 && BOOST_PP_ITERATION_FINISH_4 >= 63
+# define BOOST_PP_ITERATION_4 63
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 64 && BOOST_PP_ITERATION_FINISH_4 >= 64
+# define BOOST_PP_ITERATION_4 64
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 65 && BOOST_PP_ITERATION_FINISH_4 >= 65
+# define BOOST_PP_ITERATION_4 65
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 66 && BOOST_PP_ITERATION_FINISH_4 >= 66
+# define BOOST_PP_ITERATION_4 66
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 67 && BOOST_PP_ITERATION_FINISH_4 >= 67
+# define BOOST_PP_ITERATION_4 67
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 68 && BOOST_PP_ITERATION_FINISH_4 >= 68
+# define BOOST_PP_ITERATION_4 68
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 69 && BOOST_PP_ITERATION_FINISH_4 >= 69
+# define BOOST_PP_ITERATION_4 69
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 70 && BOOST_PP_ITERATION_FINISH_4 >= 70
+# define BOOST_PP_ITERATION_4 70
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 71 && BOOST_PP_ITERATION_FINISH_4 >= 71
+# define BOOST_PP_ITERATION_4 71
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 72 && BOOST_PP_ITERATION_FINISH_4 >= 72
+# define BOOST_PP_ITERATION_4 72
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 73 && BOOST_PP_ITERATION_FINISH_4 >= 73
+# define BOOST_PP_ITERATION_4 73
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 74 && BOOST_PP_ITERATION_FINISH_4 >= 74
+# define BOOST_PP_ITERATION_4 74
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 75 && BOOST_PP_ITERATION_FINISH_4 >= 75
+# define BOOST_PP_ITERATION_4 75
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 76 && BOOST_PP_ITERATION_FINISH_4 >= 76
+# define BOOST_PP_ITERATION_4 76
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 77 && BOOST_PP_ITERATION_FINISH_4 >= 77
+# define BOOST_PP_ITERATION_4 77
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 78 && BOOST_PP_ITERATION_FINISH_4 >= 78
+# define BOOST_PP_ITERATION_4 78
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 79 && BOOST_PP_ITERATION_FINISH_4 >= 79
+# define BOOST_PP_ITERATION_4 79
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 80 && BOOST_PP_ITERATION_FINISH_4 >= 80
+# define BOOST_PP_ITERATION_4 80
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 81 && BOOST_PP_ITERATION_FINISH_4 >= 81
+# define BOOST_PP_ITERATION_4 81
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 82 && BOOST_PP_ITERATION_FINISH_4 >= 82
+# define BOOST_PP_ITERATION_4 82
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 83 && BOOST_PP_ITERATION_FINISH_4 >= 83
+# define BOOST_PP_ITERATION_4 83
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 84 && BOOST_PP_ITERATION_FINISH_4 >= 84
+# define BOOST_PP_ITERATION_4 84
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 85 && BOOST_PP_ITERATION_FINISH_4 >= 85
+# define BOOST_PP_ITERATION_4 85
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 86 && BOOST_PP_ITERATION_FINISH_4 >= 86
+# define BOOST_PP_ITERATION_4 86
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 87 && BOOST_PP_ITERATION_FINISH_4 >= 87
+# define BOOST_PP_ITERATION_4 87
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 88 && BOOST_PP_ITERATION_FINISH_4 >= 88
+# define BOOST_PP_ITERATION_4 88
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 89 && BOOST_PP_ITERATION_FINISH_4 >= 89
+# define BOOST_PP_ITERATION_4 89
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 90 && BOOST_PP_ITERATION_FINISH_4 >= 90
+# define BOOST_PP_ITERATION_4 90
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 91 && BOOST_PP_ITERATION_FINISH_4 >= 91
+# define BOOST_PP_ITERATION_4 91
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 92 && BOOST_PP_ITERATION_FINISH_4 >= 92
+# define BOOST_PP_ITERATION_4 92
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 93 && BOOST_PP_ITERATION_FINISH_4 >= 93
+# define BOOST_PP_ITERATION_4 93
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 94 && BOOST_PP_ITERATION_FINISH_4 >= 94
+# define BOOST_PP_ITERATION_4 94
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 95 && BOOST_PP_ITERATION_FINISH_4 >= 95
+# define BOOST_PP_ITERATION_4 95
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 96 && BOOST_PP_ITERATION_FINISH_4 >= 96
+# define BOOST_PP_ITERATION_4 96
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 97 && BOOST_PP_ITERATION_FINISH_4 >= 97
+# define BOOST_PP_ITERATION_4 97
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 98 && BOOST_PP_ITERATION_FINISH_4 >= 98
+# define BOOST_PP_ITERATION_4 98
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 99 && BOOST_PP_ITERATION_FINISH_4 >= 99
+# define BOOST_PP_ITERATION_4 99
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 100 && BOOST_PP_ITERATION_FINISH_4 >= 100
+# define BOOST_PP_ITERATION_4 100
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 101 && BOOST_PP_ITERATION_FINISH_4 >= 101
+# define BOOST_PP_ITERATION_4 101
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 102 && BOOST_PP_ITERATION_FINISH_4 >= 102
+# define BOOST_PP_ITERATION_4 102
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 103 && BOOST_PP_ITERATION_FINISH_4 >= 103
+# define BOOST_PP_ITERATION_4 103
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 104 && BOOST_PP_ITERATION_FINISH_4 >= 104
+# define BOOST_PP_ITERATION_4 104
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 105 && BOOST_PP_ITERATION_FINISH_4 >= 105
+# define BOOST_PP_ITERATION_4 105
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 106 && BOOST_PP_ITERATION_FINISH_4 >= 106
+# define BOOST_PP_ITERATION_4 106
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 107 && BOOST_PP_ITERATION_FINISH_4 >= 107
+# define BOOST_PP_ITERATION_4 107
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 108 && BOOST_PP_ITERATION_FINISH_4 >= 108
+# define BOOST_PP_ITERATION_4 108
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 109 && BOOST_PP_ITERATION_FINISH_4 >= 109
+# define BOOST_PP_ITERATION_4 109
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 110 && BOOST_PP_ITERATION_FINISH_4 >= 110
+# define BOOST_PP_ITERATION_4 110
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 111 && BOOST_PP_ITERATION_FINISH_4 >= 111
+# define BOOST_PP_ITERATION_4 111
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 112 && BOOST_PP_ITERATION_FINISH_4 >= 112
+# define BOOST_PP_ITERATION_4 112
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 113 && BOOST_PP_ITERATION_FINISH_4 >= 113
+# define BOOST_PP_ITERATION_4 113
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 114 && BOOST_PP_ITERATION_FINISH_4 >= 114
+# define BOOST_PP_ITERATION_4 114
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 115 && BOOST_PP_ITERATION_FINISH_4 >= 115
+# define BOOST_PP_ITERATION_4 115
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 116 && BOOST_PP_ITERATION_FINISH_4 >= 116
+# define BOOST_PP_ITERATION_4 116
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 117 && BOOST_PP_ITERATION_FINISH_4 >= 117
+# define BOOST_PP_ITERATION_4 117
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 118 && BOOST_PP_ITERATION_FINISH_4 >= 118
+# define BOOST_PP_ITERATION_4 118
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 119 && BOOST_PP_ITERATION_FINISH_4 >= 119
+# define BOOST_PP_ITERATION_4 119
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 120 && BOOST_PP_ITERATION_FINISH_4 >= 120
+# define BOOST_PP_ITERATION_4 120
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 121 && BOOST_PP_ITERATION_FINISH_4 >= 121
+# define BOOST_PP_ITERATION_4 121
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 122 && BOOST_PP_ITERATION_FINISH_4 >= 122
+# define BOOST_PP_ITERATION_4 122
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 123 && BOOST_PP_ITERATION_FINISH_4 >= 123
+# define BOOST_PP_ITERATION_4 123
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 124 && BOOST_PP_ITERATION_FINISH_4 >= 124
+# define BOOST_PP_ITERATION_4 124
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 125 && BOOST_PP_ITERATION_FINISH_4 >= 125
+# define BOOST_PP_ITERATION_4 125
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 126 && BOOST_PP_ITERATION_FINISH_4 >= 126
+# define BOOST_PP_ITERATION_4 126
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 127 && BOOST_PP_ITERATION_FINISH_4 >= 127
+# define BOOST_PP_ITERATION_4 127
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 128 && BOOST_PP_ITERATION_FINISH_4 >= 128
+# define BOOST_PP_ITERATION_4 128
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 129 && BOOST_PP_ITERATION_FINISH_4 >= 129
+# define BOOST_PP_ITERATION_4 129
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 130 && BOOST_PP_ITERATION_FINISH_4 >= 130
+# define BOOST_PP_ITERATION_4 130
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 131 && BOOST_PP_ITERATION_FINISH_4 >= 131
+# define BOOST_PP_ITERATION_4 131
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 132 && BOOST_PP_ITERATION_FINISH_4 >= 132
+# define BOOST_PP_ITERATION_4 132
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 133 && BOOST_PP_ITERATION_FINISH_4 >= 133
+# define BOOST_PP_ITERATION_4 133
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 134 && BOOST_PP_ITERATION_FINISH_4 >= 134
+# define BOOST_PP_ITERATION_4 134
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 135 && BOOST_PP_ITERATION_FINISH_4 >= 135
+# define BOOST_PP_ITERATION_4 135
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 136 && BOOST_PP_ITERATION_FINISH_4 >= 136
+# define BOOST_PP_ITERATION_4 136
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 137 && BOOST_PP_ITERATION_FINISH_4 >= 137
+# define BOOST_PP_ITERATION_4 137
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 138 && BOOST_PP_ITERATION_FINISH_4 >= 138
+# define BOOST_PP_ITERATION_4 138
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 139 && BOOST_PP_ITERATION_FINISH_4 >= 139
+# define BOOST_PP_ITERATION_4 139
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 140 && BOOST_PP_ITERATION_FINISH_4 >= 140
+# define BOOST_PP_ITERATION_4 140
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 141 && BOOST_PP_ITERATION_FINISH_4 >= 141
+# define BOOST_PP_ITERATION_4 141
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 142 && BOOST_PP_ITERATION_FINISH_4 >= 142
+# define BOOST_PP_ITERATION_4 142
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 143 && BOOST_PP_ITERATION_FINISH_4 >= 143
+# define BOOST_PP_ITERATION_4 143
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 144 && BOOST_PP_ITERATION_FINISH_4 >= 144
+# define BOOST_PP_ITERATION_4 144
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 145 && BOOST_PP_ITERATION_FINISH_4 >= 145
+# define BOOST_PP_ITERATION_4 145
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 146 && BOOST_PP_ITERATION_FINISH_4 >= 146
+# define BOOST_PP_ITERATION_4 146
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 147 && BOOST_PP_ITERATION_FINISH_4 >= 147
+# define BOOST_PP_ITERATION_4 147
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 148 && BOOST_PP_ITERATION_FINISH_4 >= 148
+# define BOOST_PP_ITERATION_4 148
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 149 && BOOST_PP_ITERATION_FINISH_4 >= 149
+# define BOOST_PP_ITERATION_4 149
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 150 && BOOST_PP_ITERATION_FINISH_4 >= 150
+# define BOOST_PP_ITERATION_4 150
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 151 && BOOST_PP_ITERATION_FINISH_4 >= 151
+# define BOOST_PP_ITERATION_4 151
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 152 && BOOST_PP_ITERATION_FINISH_4 >= 152
+# define BOOST_PP_ITERATION_4 152
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 153 && BOOST_PP_ITERATION_FINISH_4 >= 153
+# define BOOST_PP_ITERATION_4 153
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 154 && BOOST_PP_ITERATION_FINISH_4 >= 154
+# define BOOST_PP_ITERATION_4 154
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 155 && BOOST_PP_ITERATION_FINISH_4 >= 155
+# define BOOST_PP_ITERATION_4 155
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 156 && BOOST_PP_ITERATION_FINISH_4 >= 156
+# define BOOST_PP_ITERATION_4 156
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 157 && BOOST_PP_ITERATION_FINISH_4 >= 157
+# define BOOST_PP_ITERATION_4 157
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 158 && BOOST_PP_ITERATION_FINISH_4 >= 158
+# define BOOST_PP_ITERATION_4 158
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 159 && BOOST_PP_ITERATION_FINISH_4 >= 159
+# define BOOST_PP_ITERATION_4 159
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 160 && BOOST_PP_ITERATION_FINISH_4 >= 160
+# define BOOST_PP_ITERATION_4 160
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 161 && BOOST_PP_ITERATION_FINISH_4 >= 161
+# define BOOST_PP_ITERATION_4 161
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 162 && BOOST_PP_ITERATION_FINISH_4 >= 162
+# define BOOST_PP_ITERATION_4 162
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 163 && BOOST_PP_ITERATION_FINISH_4 >= 163
+# define BOOST_PP_ITERATION_4 163
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 164 && BOOST_PP_ITERATION_FINISH_4 >= 164
+# define BOOST_PP_ITERATION_4 164
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 165 && BOOST_PP_ITERATION_FINISH_4 >= 165
+# define BOOST_PP_ITERATION_4 165
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 166 && BOOST_PP_ITERATION_FINISH_4 >= 166
+# define BOOST_PP_ITERATION_4 166
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 167 && BOOST_PP_ITERATION_FINISH_4 >= 167
+# define BOOST_PP_ITERATION_4 167
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 168 && BOOST_PP_ITERATION_FINISH_4 >= 168
+# define BOOST_PP_ITERATION_4 168
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 169 && BOOST_PP_ITERATION_FINISH_4 >= 169
+# define BOOST_PP_ITERATION_4 169
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 170 && BOOST_PP_ITERATION_FINISH_4 >= 170
+# define BOOST_PP_ITERATION_4 170
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 171 && BOOST_PP_ITERATION_FINISH_4 >= 171
+# define BOOST_PP_ITERATION_4 171
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 172 && BOOST_PP_ITERATION_FINISH_4 >= 172
+# define BOOST_PP_ITERATION_4 172
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 173 && BOOST_PP_ITERATION_FINISH_4 >= 173
+# define BOOST_PP_ITERATION_4 173
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 174 && BOOST_PP_ITERATION_FINISH_4 >= 174
+# define BOOST_PP_ITERATION_4 174
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 175 && BOOST_PP_ITERATION_FINISH_4 >= 175
+# define BOOST_PP_ITERATION_4 175
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 176 && BOOST_PP_ITERATION_FINISH_4 >= 176
+# define BOOST_PP_ITERATION_4 176
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 177 && BOOST_PP_ITERATION_FINISH_4 >= 177
+# define BOOST_PP_ITERATION_4 177
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 178 && BOOST_PP_ITERATION_FINISH_4 >= 178
+# define BOOST_PP_ITERATION_4 178
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 179 && BOOST_PP_ITERATION_FINISH_4 >= 179
+# define BOOST_PP_ITERATION_4 179
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 180 && BOOST_PP_ITERATION_FINISH_4 >= 180
+# define BOOST_PP_ITERATION_4 180
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 181 && BOOST_PP_ITERATION_FINISH_4 >= 181
+# define BOOST_PP_ITERATION_4 181
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 182 && BOOST_PP_ITERATION_FINISH_4 >= 182
+# define BOOST_PP_ITERATION_4 182
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 183 && BOOST_PP_ITERATION_FINISH_4 >= 183
+# define BOOST_PP_ITERATION_4 183
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 184 && BOOST_PP_ITERATION_FINISH_4 >= 184
+# define BOOST_PP_ITERATION_4 184
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 185 && BOOST_PP_ITERATION_FINISH_4 >= 185
+# define BOOST_PP_ITERATION_4 185
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 186 && BOOST_PP_ITERATION_FINISH_4 >= 186
+# define BOOST_PP_ITERATION_4 186
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 187 && BOOST_PP_ITERATION_FINISH_4 >= 187
+# define BOOST_PP_ITERATION_4 187
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 188 && BOOST_PP_ITERATION_FINISH_4 >= 188
+# define BOOST_PP_ITERATION_4 188
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 189 && BOOST_PP_ITERATION_FINISH_4 >= 189
+# define BOOST_PP_ITERATION_4 189
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 190 && BOOST_PP_ITERATION_FINISH_4 >= 190
+# define BOOST_PP_ITERATION_4 190
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 191 && BOOST_PP_ITERATION_FINISH_4 >= 191
+# define BOOST_PP_ITERATION_4 191
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 192 && BOOST_PP_ITERATION_FINISH_4 >= 192
+# define BOOST_PP_ITERATION_4 192
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 193 && BOOST_PP_ITERATION_FINISH_4 >= 193
+# define BOOST_PP_ITERATION_4 193
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 194 && BOOST_PP_ITERATION_FINISH_4 >= 194
+# define BOOST_PP_ITERATION_4 194
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 195 && BOOST_PP_ITERATION_FINISH_4 >= 195
+# define BOOST_PP_ITERATION_4 195
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 196 && BOOST_PP_ITERATION_FINISH_4 >= 196
+# define BOOST_PP_ITERATION_4 196
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 197 && BOOST_PP_ITERATION_FINISH_4 >= 197
+# define BOOST_PP_ITERATION_4 197
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 198 && BOOST_PP_ITERATION_FINISH_4 >= 198
+# define BOOST_PP_ITERATION_4 198
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 199 && BOOST_PP_ITERATION_FINISH_4 >= 199
+# define BOOST_PP_ITERATION_4 199
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 200 && BOOST_PP_ITERATION_FINISH_4 >= 200
+# define BOOST_PP_ITERATION_4 200
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 201 && BOOST_PP_ITERATION_FINISH_4 >= 201
+# define BOOST_PP_ITERATION_4 201
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 202 && BOOST_PP_ITERATION_FINISH_4 >= 202
+# define BOOST_PP_ITERATION_4 202
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 203 && BOOST_PP_ITERATION_FINISH_4 >= 203
+# define BOOST_PP_ITERATION_4 203
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 204 && BOOST_PP_ITERATION_FINISH_4 >= 204
+# define BOOST_PP_ITERATION_4 204
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 205 && BOOST_PP_ITERATION_FINISH_4 >= 205
+# define BOOST_PP_ITERATION_4 205
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 206 && BOOST_PP_ITERATION_FINISH_4 >= 206
+# define BOOST_PP_ITERATION_4 206
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 207 && BOOST_PP_ITERATION_FINISH_4 >= 207
+# define BOOST_PP_ITERATION_4 207
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 208 && BOOST_PP_ITERATION_FINISH_4 >= 208
+# define BOOST_PP_ITERATION_4 208
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 209 && BOOST_PP_ITERATION_FINISH_4 >= 209
+# define BOOST_PP_ITERATION_4 209
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 210 && BOOST_PP_ITERATION_FINISH_4 >= 210
+# define BOOST_PP_ITERATION_4 210
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 211 && BOOST_PP_ITERATION_FINISH_4 >= 211
+# define BOOST_PP_ITERATION_4 211
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 212 && BOOST_PP_ITERATION_FINISH_4 >= 212
+# define BOOST_PP_ITERATION_4 212
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 213 && BOOST_PP_ITERATION_FINISH_4 >= 213
+# define BOOST_PP_ITERATION_4 213
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 214 && BOOST_PP_ITERATION_FINISH_4 >= 214
+# define BOOST_PP_ITERATION_4 214
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 215 && BOOST_PP_ITERATION_FINISH_4 >= 215
+# define BOOST_PP_ITERATION_4 215
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 216 && BOOST_PP_ITERATION_FINISH_4 >= 216
+# define BOOST_PP_ITERATION_4 216
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 217 && BOOST_PP_ITERATION_FINISH_4 >= 217
+# define BOOST_PP_ITERATION_4 217
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 218 && BOOST_PP_ITERATION_FINISH_4 >= 218
+# define BOOST_PP_ITERATION_4 218
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 219 && BOOST_PP_ITERATION_FINISH_4 >= 219
+# define BOOST_PP_ITERATION_4 219
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 220 && BOOST_PP_ITERATION_FINISH_4 >= 220
+# define BOOST_PP_ITERATION_4 220
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 221 && BOOST_PP_ITERATION_FINISH_4 >= 221
+# define BOOST_PP_ITERATION_4 221
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 222 && BOOST_PP_ITERATION_FINISH_4 >= 222
+# define BOOST_PP_ITERATION_4 222
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 223 && BOOST_PP_ITERATION_FINISH_4 >= 223
+# define BOOST_PP_ITERATION_4 223
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 224 && BOOST_PP_ITERATION_FINISH_4 >= 224
+# define BOOST_PP_ITERATION_4 224
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 225 && BOOST_PP_ITERATION_FINISH_4 >= 225
+# define BOOST_PP_ITERATION_4 225
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 226 && BOOST_PP_ITERATION_FINISH_4 >= 226
+# define BOOST_PP_ITERATION_4 226
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 227 && BOOST_PP_ITERATION_FINISH_4 >= 227
+# define BOOST_PP_ITERATION_4 227
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 228 && BOOST_PP_ITERATION_FINISH_4 >= 228
+# define BOOST_PP_ITERATION_4 228
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 229 && BOOST_PP_ITERATION_FINISH_4 >= 229
+# define BOOST_PP_ITERATION_4 229
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 230 && BOOST_PP_ITERATION_FINISH_4 >= 230
+# define BOOST_PP_ITERATION_4 230
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 231 && BOOST_PP_ITERATION_FINISH_4 >= 231
+# define BOOST_PP_ITERATION_4 231
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 232 && BOOST_PP_ITERATION_FINISH_4 >= 232
+# define BOOST_PP_ITERATION_4 232
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 233 && BOOST_PP_ITERATION_FINISH_4 >= 233
+# define BOOST_PP_ITERATION_4 233
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 234 && BOOST_PP_ITERATION_FINISH_4 >= 234
+# define BOOST_PP_ITERATION_4 234
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 235 && BOOST_PP_ITERATION_FINISH_4 >= 235
+# define BOOST_PP_ITERATION_4 235
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 236 && BOOST_PP_ITERATION_FINISH_4 >= 236
+# define BOOST_PP_ITERATION_4 236
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 237 && BOOST_PP_ITERATION_FINISH_4 >= 237
+# define BOOST_PP_ITERATION_4 237
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 238 && BOOST_PP_ITERATION_FINISH_4 >= 238
+# define BOOST_PP_ITERATION_4 238
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 239 && BOOST_PP_ITERATION_FINISH_4 >= 239
+# define BOOST_PP_ITERATION_4 239
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 240 && BOOST_PP_ITERATION_FINISH_4 >= 240
+# define BOOST_PP_ITERATION_4 240
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 241 && BOOST_PP_ITERATION_FINISH_4 >= 241
+# define BOOST_PP_ITERATION_4 241
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 242 && BOOST_PP_ITERATION_FINISH_4 >= 242
+# define BOOST_PP_ITERATION_4 242
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 243 && BOOST_PP_ITERATION_FINISH_4 >= 243
+# define BOOST_PP_ITERATION_4 243
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 244 && BOOST_PP_ITERATION_FINISH_4 >= 244
+# define BOOST_PP_ITERATION_4 244
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 245 && BOOST_PP_ITERATION_FINISH_4 >= 245
+# define BOOST_PP_ITERATION_4 245
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 246 && BOOST_PP_ITERATION_FINISH_4 >= 246
+# define BOOST_PP_ITERATION_4 246
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 247 && BOOST_PP_ITERATION_FINISH_4 >= 247
+# define BOOST_PP_ITERATION_4 247
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 248 && BOOST_PP_ITERATION_FINISH_4 >= 248
+# define BOOST_PP_ITERATION_4 248
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 249 && BOOST_PP_ITERATION_FINISH_4 >= 249
+# define BOOST_PP_ITERATION_4 249
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 250 && BOOST_PP_ITERATION_FINISH_4 >= 250
+# define BOOST_PP_ITERATION_4 250
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 251 && BOOST_PP_ITERATION_FINISH_4 >= 251
+# define BOOST_PP_ITERATION_4 251
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 252 && BOOST_PP_ITERATION_FINISH_4 >= 252
+# define BOOST_PP_ITERATION_4 252
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 253 && BOOST_PP_ITERATION_FINISH_4 >= 253
+# define BOOST_PP_ITERATION_4 253
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 254 && BOOST_PP_ITERATION_FINISH_4 >= 254
+# define BOOST_PP_ITERATION_4 254
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 255 && BOOST_PP_ITERATION_FINISH_4 >= 255
+# define BOOST_PP_ITERATION_4 255
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_START_4 <= 256 && BOOST_PP_ITERATION_FINISH_4 >= 256
+# define BOOST_PP_ITERATION_4 256
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 3
+#
+# undef BOOST_PP_ITERATION_START_4
+# undef BOOST_PP_ITERATION_FINISH_4
+# undef BOOST_PP_FILENAME_4
+#
+# undef BOOST_PP_ITERATION_FLAGS_4
+# undef BOOST_PP_ITERATION_PARAMS_4
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward5.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward5.hpp
new file mode 100644
index 0000000..7617607
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/forward5.hpp
@@ -0,0 +1,1338 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if defined(BOOST_PP_ITERATION_LIMITS)
+# if !defined(BOOST_PP_FILENAME_5)
+# error BOOST_PP_ERROR: depth #5 filename is not defined
+# endif
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/lower5.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_ITERATION_LIMITS)
+# include <boost/preprocessor/iteration/detail/bounds/upper5.hpp>
+# define BOOST_PP_ITERATION_FLAGS_5() 0
+# undef BOOST_PP_ITERATION_LIMITS
+# elif defined(BOOST_PP_ITERATION_PARAMS_5)
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ITERATION_PARAMS_5)
+# include <boost/preprocessor/iteration/detail/bounds/lower5.hpp>
+# define BOOST_PP_VALUE BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ITERATION_PARAMS_5)
+# include <boost/preprocessor/iteration/detail/bounds/upper5.hpp>
+# define BOOST_PP_FILENAME_5 BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ITERATION_PARAMS_5)
+# if BOOST_PP_ARRAY_SIZE(BOOST_PP_ITERATION_PARAMS_5) >= 4
+# define BOOST_PP_ITERATION_FLAGS_5() BOOST_PP_ARRAY_ELEM(3, BOOST_PP_ITERATION_PARAMS_5)
+# else
+# define BOOST_PP_ITERATION_FLAGS_5() 0
+# endif
+# else
+# error BOOST_PP_ERROR: depth #5 iteration boundaries or filename not defined
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 5
+#
+# if (BOOST_PP_ITERATION_START_5) > (BOOST_PP_ITERATION_FINISH_5)
+# include <boost/preprocessor/iteration/detail/iter/reverse5.hpp>
+# else
+# if BOOST_PP_ITERATION_START_5 <= 0 && BOOST_PP_ITERATION_FINISH_5 >= 0
+# define BOOST_PP_ITERATION_5 0
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 1 && BOOST_PP_ITERATION_FINISH_5 >= 1
+# define BOOST_PP_ITERATION_5 1
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 2 && BOOST_PP_ITERATION_FINISH_5 >= 2
+# define BOOST_PP_ITERATION_5 2
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 3 && BOOST_PP_ITERATION_FINISH_5 >= 3
+# define BOOST_PP_ITERATION_5 3
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 4 && BOOST_PP_ITERATION_FINISH_5 >= 4
+# define BOOST_PP_ITERATION_5 4
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 5 && BOOST_PP_ITERATION_FINISH_5 >= 5
+# define BOOST_PP_ITERATION_5 5
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 6 && BOOST_PP_ITERATION_FINISH_5 >= 6
+# define BOOST_PP_ITERATION_5 6
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 7 && BOOST_PP_ITERATION_FINISH_5 >= 7
+# define BOOST_PP_ITERATION_5 7
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 8 && BOOST_PP_ITERATION_FINISH_5 >= 8
+# define BOOST_PP_ITERATION_5 8
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 9 && BOOST_PP_ITERATION_FINISH_5 >= 9
+# define BOOST_PP_ITERATION_5 9
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 10 && BOOST_PP_ITERATION_FINISH_5 >= 10
+# define BOOST_PP_ITERATION_5 10
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 11 && BOOST_PP_ITERATION_FINISH_5 >= 11
+# define BOOST_PP_ITERATION_5 11
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 12 && BOOST_PP_ITERATION_FINISH_5 >= 12
+# define BOOST_PP_ITERATION_5 12
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 13 && BOOST_PP_ITERATION_FINISH_5 >= 13
+# define BOOST_PP_ITERATION_5 13
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 14 && BOOST_PP_ITERATION_FINISH_5 >= 14
+# define BOOST_PP_ITERATION_5 14
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 15 && BOOST_PP_ITERATION_FINISH_5 >= 15
+# define BOOST_PP_ITERATION_5 15
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 16 && BOOST_PP_ITERATION_FINISH_5 >= 16
+# define BOOST_PP_ITERATION_5 16
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 17 && BOOST_PP_ITERATION_FINISH_5 >= 17
+# define BOOST_PP_ITERATION_5 17
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 18 && BOOST_PP_ITERATION_FINISH_5 >= 18
+# define BOOST_PP_ITERATION_5 18
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 19 && BOOST_PP_ITERATION_FINISH_5 >= 19
+# define BOOST_PP_ITERATION_5 19
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 20 && BOOST_PP_ITERATION_FINISH_5 >= 20
+# define BOOST_PP_ITERATION_5 20
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 21 && BOOST_PP_ITERATION_FINISH_5 >= 21
+# define BOOST_PP_ITERATION_5 21
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 22 && BOOST_PP_ITERATION_FINISH_5 >= 22
+# define BOOST_PP_ITERATION_5 22
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 23 && BOOST_PP_ITERATION_FINISH_5 >= 23
+# define BOOST_PP_ITERATION_5 23
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 24 && BOOST_PP_ITERATION_FINISH_5 >= 24
+# define BOOST_PP_ITERATION_5 24
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 25 && BOOST_PP_ITERATION_FINISH_5 >= 25
+# define BOOST_PP_ITERATION_5 25
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 26 && BOOST_PP_ITERATION_FINISH_5 >= 26
+# define BOOST_PP_ITERATION_5 26
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 27 && BOOST_PP_ITERATION_FINISH_5 >= 27
+# define BOOST_PP_ITERATION_5 27
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 28 && BOOST_PP_ITERATION_FINISH_5 >= 28
+# define BOOST_PP_ITERATION_5 28
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 29 && BOOST_PP_ITERATION_FINISH_5 >= 29
+# define BOOST_PP_ITERATION_5 29
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 30 && BOOST_PP_ITERATION_FINISH_5 >= 30
+# define BOOST_PP_ITERATION_5 30
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 31 && BOOST_PP_ITERATION_FINISH_5 >= 31
+# define BOOST_PP_ITERATION_5 31
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 32 && BOOST_PP_ITERATION_FINISH_5 >= 32
+# define BOOST_PP_ITERATION_5 32
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 33 && BOOST_PP_ITERATION_FINISH_5 >= 33
+# define BOOST_PP_ITERATION_5 33
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 34 && BOOST_PP_ITERATION_FINISH_5 >= 34
+# define BOOST_PP_ITERATION_5 34
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 35 && BOOST_PP_ITERATION_FINISH_5 >= 35
+# define BOOST_PP_ITERATION_5 35
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 36 && BOOST_PP_ITERATION_FINISH_5 >= 36
+# define BOOST_PP_ITERATION_5 36
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 37 && BOOST_PP_ITERATION_FINISH_5 >= 37
+# define BOOST_PP_ITERATION_5 37
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 38 && BOOST_PP_ITERATION_FINISH_5 >= 38
+# define BOOST_PP_ITERATION_5 38
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 39 && BOOST_PP_ITERATION_FINISH_5 >= 39
+# define BOOST_PP_ITERATION_5 39
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 40 && BOOST_PP_ITERATION_FINISH_5 >= 40
+# define BOOST_PP_ITERATION_5 40
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 41 && BOOST_PP_ITERATION_FINISH_5 >= 41
+# define BOOST_PP_ITERATION_5 41
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 42 && BOOST_PP_ITERATION_FINISH_5 >= 42
+# define BOOST_PP_ITERATION_5 42
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 43 && BOOST_PP_ITERATION_FINISH_5 >= 43
+# define BOOST_PP_ITERATION_5 43
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 44 && BOOST_PP_ITERATION_FINISH_5 >= 44
+# define BOOST_PP_ITERATION_5 44
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 45 && BOOST_PP_ITERATION_FINISH_5 >= 45
+# define BOOST_PP_ITERATION_5 45
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 46 && BOOST_PP_ITERATION_FINISH_5 >= 46
+# define BOOST_PP_ITERATION_5 46
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 47 && BOOST_PP_ITERATION_FINISH_5 >= 47
+# define BOOST_PP_ITERATION_5 47
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 48 && BOOST_PP_ITERATION_FINISH_5 >= 48
+# define BOOST_PP_ITERATION_5 48
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 49 && BOOST_PP_ITERATION_FINISH_5 >= 49
+# define BOOST_PP_ITERATION_5 49
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 50 && BOOST_PP_ITERATION_FINISH_5 >= 50
+# define BOOST_PP_ITERATION_5 50
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 51 && BOOST_PP_ITERATION_FINISH_5 >= 51
+# define BOOST_PP_ITERATION_5 51
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 52 && BOOST_PP_ITERATION_FINISH_5 >= 52
+# define BOOST_PP_ITERATION_5 52
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 53 && BOOST_PP_ITERATION_FINISH_5 >= 53
+# define BOOST_PP_ITERATION_5 53
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 54 && BOOST_PP_ITERATION_FINISH_5 >= 54
+# define BOOST_PP_ITERATION_5 54
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 55 && BOOST_PP_ITERATION_FINISH_5 >= 55
+# define BOOST_PP_ITERATION_5 55
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 56 && BOOST_PP_ITERATION_FINISH_5 >= 56
+# define BOOST_PP_ITERATION_5 56
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 57 && BOOST_PP_ITERATION_FINISH_5 >= 57
+# define BOOST_PP_ITERATION_5 57
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 58 && BOOST_PP_ITERATION_FINISH_5 >= 58
+# define BOOST_PP_ITERATION_5 58
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 59 && BOOST_PP_ITERATION_FINISH_5 >= 59
+# define BOOST_PP_ITERATION_5 59
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 60 && BOOST_PP_ITERATION_FINISH_5 >= 60
+# define BOOST_PP_ITERATION_5 60
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 61 && BOOST_PP_ITERATION_FINISH_5 >= 61
+# define BOOST_PP_ITERATION_5 61
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 62 && BOOST_PP_ITERATION_FINISH_5 >= 62
+# define BOOST_PP_ITERATION_5 62
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 63 && BOOST_PP_ITERATION_FINISH_5 >= 63
+# define BOOST_PP_ITERATION_5 63
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 64 && BOOST_PP_ITERATION_FINISH_5 >= 64
+# define BOOST_PP_ITERATION_5 64
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 65 && BOOST_PP_ITERATION_FINISH_5 >= 65
+# define BOOST_PP_ITERATION_5 65
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 66 && BOOST_PP_ITERATION_FINISH_5 >= 66
+# define BOOST_PP_ITERATION_5 66
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 67 && BOOST_PP_ITERATION_FINISH_5 >= 67
+# define BOOST_PP_ITERATION_5 67
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 68 && BOOST_PP_ITERATION_FINISH_5 >= 68
+# define BOOST_PP_ITERATION_5 68
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 69 && BOOST_PP_ITERATION_FINISH_5 >= 69
+# define BOOST_PP_ITERATION_5 69
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 70 && BOOST_PP_ITERATION_FINISH_5 >= 70
+# define BOOST_PP_ITERATION_5 70
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 71 && BOOST_PP_ITERATION_FINISH_5 >= 71
+# define BOOST_PP_ITERATION_5 71
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 72 && BOOST_PP_ITERATION_FINISH_5 >= 72
+# define BOOST_PP_ITERATION_5 72
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 73 && BOOST_PP_ITERATION_FINISH_5 >= 73
+# define BOOST_PP_ITERATION_5 73
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 74 && BOOST_PP_ITERATION_FINISH_5 >= 74
+# define BOOST_PP_ITERATION_5 74
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 75 && BOOST_PP_ITERATION_FINISH_5 >= 75
+# define BOOST_PP_ITERATION_5 75
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 76 && BOOST_PP_ITERATION_FINISH_5 >= 76
+# define BOOST_PP_ITERATION_5 76
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 77 && BOOST_PP_ITERATION_FINISH_5 >= 77
+# define BOOST_PP_ITERATION_5 77
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 78 && BOOST_PP_ITERATION_FINISH_5 >= 78
+# define BOOST_PP_ITERATION_5 78
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 79 && BOOST_PP_ITERATION_FINISH_5 >= 79
+# define BOOST_PP_ITERATION_5 79
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 80 && BOOST_PP_ITERATION_FINISH_5 >= 80
+# define BOOST_PP_ITERATION_5 80
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 81 && BOOST_PP_ITERATION_FINISH_5 >= 81
+# define BOOST_PP_ITERATION_5 81
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 82 && BOOST_PP_ITERATION_FINISH_5 >= 82
+# define BOOST_PP_ITERATION_5 82
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 83 && BOOST_PP_ITERATION_FINISH_5 >= 83
+# define BOOST_PP_ITERATION_5 83
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 84 && BOOST_PP_ITERATION_FINISH_5 >= 84
+# define BOOST_PP_ITERATION_5 84
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 85 && BOOST_PP_ITERATION_FINISH_5 >= 85
+# define BOOST_PP_ITERATION_5 85
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 86 && BOOST_PP_ITERATION_FINISH_5 >= 86
+# define BOOST_PP_ITERATION_5 86
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 87 && BOOST_PP_ITERATION_FINISH_5 >= 87
+# define BOOST_PP_ITERATION_5 87
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 88 && BOOST_PP_ITERATION_FINISH_5 >= 88
+# define BOOST_PP_ITERATION_5 88
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 89 && BOOST_PP_ITERATION_FINISH_5 >= 89
+# define BOOST_PP_ITERATION_5 89
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 90 && BOOST_PP_ITERATION_FINISH_5 >= 90
+# define BOOST_PP_ITERATION_5 90
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 91 && BOOST_PP_ITERATION_FINISH_5 >= 91
+# define BOOST_PP_ITERATION_5 91
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 92 && BOOST_PP_ITERATION_FINISH_5 >= 92
+# define BOOST_PP_ITERATION_5 92
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 93 && BOOST_PP_ITERATION_FINISH_5 >= 93
+# define BOOST_PP_ITERATION_5 93
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 94 && BOOST_PP_ITERATION_FINISH_5 >= 94
+# define BOOST_PP_ITERATION_5 94
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 95 && BOOST_PP_ITERATION_FINISH_5 >= 95
+# define BOOST_PP_ITERATION_5 95
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 96 && BOOST_PP_ITERATION_FINISH_5 >= 96
+# define BOOST_PP_ITERATION_5 96
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 97 && BOOST_PP_ITERATION_FINISH_5 >= 97
+# define BOOST_PP_ITERATION_5 97
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 98 && BOOST_PP_ITERATION_FINISH_5 >= 98
+# define BOOST_PP_ITERATION_5 98
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 99 && BOOST_PP_ITERATION_FINISH_5 >= 99
+# define BOOST_PP_ITERATION_5 99
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 100 && BOOST_PP_ITERATION_FINISH_5 >= 100
+# define BOOST_PP_ITERATION_5 100
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 101 && BOOST_PP_ITERATION_FINISH_5 >= 101
+# define BOOST_PP_ITERATION_5 101
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 102 && BOOST_PP_ITERATION_FINISH_5 >= 102
+# define BOOST_PP_ITERATION_5 102
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 103 && BOOST_PP_ITERATION_FINISH_5 >= 103
+# define BOOST_PP_ITERATION_5 103
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 104 && BOOST_PP_ITERATION_FINISH_5 >= 104
+# define BOOST_PP_ITERATION_5 104
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 105 && BOOST_PP_ITERATION_FINISH_5 >= 105
+# define BOOST_PP_ITERATION_5 105
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 106 && BOOST_PP_ITERATION_FINISH_5 >= 106
+# define BOOST_PP_ITERATION_5 106
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 107 && BOOST_PP_ITERATION_FINISH_5 >= 107
+# define BOOST_PP_ITERATION_5 107
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 108 && BOOST_PP_ITERATION_FINISH_5 >= 108
+# define BOOST_PP_ITERATION_5 108
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 109 && BOOST_PP_ITERATION_FINISH_5 >= 109
+# define BOOST_PP_ITERATION_5 109
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 110 && BOOST_PP_ITERATION_FINISH_5 >= 110
+# define BOOST_PP_ITERATION_5 110
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 111 && BOOST_PP_ITERATION_FINISH_5 >= 111
+# define BOOST_PP_ITERATION_5 111
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 112 && BOOST_PP_ITERATION_FINISH_5 >= 112
+# define BOOST_PP_ITERATION_5 112
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 113 && BOOST_PP_ITERATION_FINISH_5 >= 113
+# define BOOST_PP_ITERATION_5 113
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 114 && BOOST_PP_ITERATION_FINISH_5 >= 114
+# define BOOST_PP_ITERATION_5 114
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 115 && BOOST_PP_ITERATION_FINISH_5 >= 115
+# define BOOST_PP_ITERATION_5 115
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 116 && BOOST_PP_ITERATION_FINISH_5 >= 116
+# define BOOST_PP_ITERATION_5 116
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 117 && BOOST_PP_ITERATION_FINISH_5 >= 117
+# define BOOST_PP_ITERATION_5 117
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 118 && BOOST_PP_ITERATION_FINISH_5 >= 118
+# define BOOST_PP_ITERATION_5 118
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 119 && BOOST_PP_ITERATION_FINISH_5 >= 119
+# define BOOST_PP_ITERATION_5 119
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 120 && BOOST_PP_ITERATION_FINISH_5 >= 120
+# define BOOST_PP_ITERATION_5 120
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 121 && BOOST_PP_ITERATION_FINISH_5 >= 121
+# define BOOST_PP_ITERATION_5 121
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 122 && BOOST_PP_ITERATION_FINISH_5 >= 122
+# define BOOST_PP_ITERATION_5 122
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 123 && BOOST_PP_ITERATION_FINISH_5 >= 123
+# define BOOST_PP_ITERATION_5 123
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 124 && BOOST_PP_ITERATION_FINISH_5 >= 124
+# define BOOST_PP_ITERATION_5 124
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 125 && BOOST_PP_ITERATION_FINISH_5 >= 125
+# define BOOST_PP_ITERATION_5 125
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 126 && BOOST_PP_ITERATION_FINISH_5 >= 126
+# define BOOST_PP_ITERATION_5 126
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 127 && BOOST_PP_ITERATION_FINISH_5 >= 127
+# define BOOST_PP_ITERATION_5 127
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 128 && BOOST_PP_ITERATION_FINISH_5 >= 128
+# define BOOST_PP_ITERATION_5 128
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 129 && BOOST_PP_ITERATION_FINISH_5 >= 129
+# define BOOST_PP_ITERATION_5 129
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 130 && BOOST_PP_ITERATION_FINISH_5 >= 130
+# define BOOST_PP_ITERATION_5 130
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 131 && BOOST_PP_ITERATION_FINISH_5 >= 131
+# define BOOST_PP_ITERATION_5 131
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 132 && BOOST_PP_ITERATION_FINISH_5 >= 132
+# define BOOST_PP_ITERATION_5 132
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 133 && BOOST_PP_ITERATION_FINISH_5 >= 133
+# define BOOST_PP_ITERATION_5 133
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 134 && BOOST_PP_ITERATION_FINISH_5 >= 134
+# define BOOST_PP_ITERATION_5 134
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 135 && BOOST_PP_ITERATION_FINISH_5 >= 135
+# define BOOST_PP_ITERATION_5 135
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 136 && BOOST_PP_ITERATION_FINISH_5 >= 136
+# define BOOST_PP_ITERATION_5 136
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 137 && BOOST_PP_ITERATION_FINISH_5 >= 137
+# define BOOST_PP_ITERATION_5 137
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 138 && BOOST_PP_ITERATION_FINISH_5 >= 138
+# define BOOST_PP_ITERATION_5 138
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 139 && BOOST_PP_ITERATION_FINISH_5 >= 139
+# define BOOST_PP_ITERATION_5 139
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 140 && BOOST_PP_ITERATION_FINISH_5 >= 140
+# define BOOST_PP_ITERATION_5 140
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 141 && BOOST_PP_ITERATION_FINISH_5 >= 141
+# define BOOST_PP_ITERATION_5 141
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 142 && BOOST_PP_ITERATION_FINISH_5 >= 142
+# define BOOST_PP_ITERATION_5 142
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 143 && BOOST_PP_ITERATION_FINISH_5 >= 143
+# define BOOST_PP_ITERATION_5 143
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 144 && BOOST_PP_ITERATION_FINISH_5 >= 144
+# define BOOST_PP_ITERATION_5 144
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 145 && BOOST_PP_ITERATION_FINISH_5 >= 145
+# define BOOST_PP_ITERATION_5 145
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 146 && BOOST_PP_ITERATION_FINISH_5 >= 146
+# define BOOST_PP_ITERATION_5 146
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 147 && BOOST_PP_ITERATION_FINISH_5 >= 147
+# define BOOST_PP_ITERATION_5 147
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 148 && BOOST_PP_ITERATION_FINISH_5 >= 148
+# define BOOST_PP_ITERATION_5 148
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 149 && BOOST_PP_ITERATION_FINISH_5 >= 149
+# define BOOST_PP_ITERATION_5 149
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 150 && BOOST_PP_ITERATION_FINISH_5 >= 150
+# define BOOST_PP_ITERATION_5 150
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 151 && BOOST_PP_ITERATION_FINISH_5 >= 151
+# define BOOST_PP_ITERATION_5 151
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 152 && BOOST_PP_ITERATION_FINISH_5 >= 152
+# define BOOST_PP_ITERATION_5 152
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 153 && BOOST_PP_ITERATION_FINISH_5 >= 153
+# define BOOST_PP_ITERATION_5 153
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 154 && BOOST_PP_ITERATION_FINISH_5 >= 154
+# define BOOST_PP_ITERATION_5 154
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 155 && BOOST_PP_ITERATION_FINISH_5 >= 155
+# define BOOST_PP_ITERATION_5 155
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 156 && BOOST_PP_ITERATION_FINISH_5 >= 156
+# define BOOST_PP_ITERATION_5 156
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 157 && BOOST_PP_ITERATION_FINISH_5 >= 157
+# define BOOST_PP_ITERATION_5 157
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 158 && BOOST_PP_ITERATION_FINISH_5 >= 158
+# define BOOST_PP_ITERATION_5 158
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 159 && BOOST_PP_ITERATION_FINISH_5 >= 159
+# define BOOST_PP_ITERATION_5 159
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 160 && BOOST_PP_ITERATION_FINISH_5 >= 160
+# define BOOST_PP_ITERATION_5 160
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 161 && BOOST_PP_ITERATION_FINISH_5 >= 161
+# define BOOST_PP_ITERATION_5 161
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 162 && BOOST_PP_ITERATION_FINISH_5 >= 162
+# define BOOST_PP_ITERATION_5 162
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 163 && BOOST_PP_ITERATION_FINISH_5 >= 163
+# define BOOST_PP_ITERATION_5 163
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 164 && BOOST_PP_ITERATION_FINISH_5 >= 164
+# define BOOST_PP_ITERATION_5 164
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 165 && BOOST_PP_ITERATION_FINISH_5 >= 165
+# define BOOST_PP_ITERATION_5 165
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 166 && BOOST_PP_ITERATION_FINISH_5 >= 166
+# define BOOST_PP_ITERATION_5 166
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 167 && BOOST_PP_ITERATION_FINISH_5 >= 167
+# define BOOST_PP_ITERATION_5 167
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 168 && BOOST_PP_ITERATION_FINISH_5 >= 168
+# define BOOST_PP_ITERATION_5 168
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 169 && BOOST_PP_ITERATION_FINISH_5 >= 169
+# define BOOST_PP_ITERATION_5 169
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 170 && BOOST_PP_ITERATION_FINISH_5 >= 170
+# define BOOST_PP_ITERATION_5 170
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 171 && BOOST_PP_ITERATION_FINISH_5 >= 171
+# define BOOST_PP_ITERATION_5 171
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 172 && BOOST_PP_ITERATION_FINISH_5 >= 172
+# define BOOST_PP_ITERATION_5 172
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 173 && BOOST_PP_ITERATION_FINISH_5 >= 173
+# define BOOST_PP_ITERATION_5 173
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 174 && BOOST_PP_ITERATION_FINISH_5 >= 174
+# define BOOST_PP_ITERATION_5 174
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 175 && BOOST_PP_ITERATION_FINISH_5 >= 175
+# define BOOST_PP_ITERATION_5 175
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 176 && BOOST_PP_ITERATION_FINISH_5 >= 176
+# define BOOST_PP_ITERATION_5 176
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 177 && BOOST_PP_ITERATION_FINISH_5 >= 177
+# define BOOST_PP_ITERATION_5 177
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 178 && BOOST_PP_ITERATION_FINISH_5 >= 178
+# define BOOST_PP_ITERATION_5 178
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 179 && BOOST_PP_ITERATION_FINISH_5 >= 179
+# define BOOST_PP_ITERATION_5 179
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 180 && BOOST_PP_ITERATION_FINISH_5 >= 180
+# define BOOST_PP_ITERATION_5 180
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 181 && BOOST_PP_ITERATION_FINISH_5 >= 181
+# define BOOST_PP_ITERATION_5 181
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 182 && BOOST_PP_ITERATION_FINISH_5 >= 182
+# define BOOST_PP_ITERATION_5 182
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 183 && BOOST_PP_ITERATION_FINISH_5 >= 183
+# define BOOST_PP_ITERATION_5 183
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 184 && BOOST_PP_ITERATION_FINISH_5 >= 184
+# define BOOST_PP_ITERATION_5 184
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 185 && BOOST_PP_ITERATION_FINISH_5 >= 185
+# define BOOST_PP_ITERATION_5 185
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 186 && BOOST_PP_ITERATION_FINISH_5 >= 186
+# define BOOST_PP_ITERATION_5 186
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 187 && BOOST_PP_ITERATION_FINISH_5 >= 187
+# define BOOST_PP_ITERATION_5 187
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 188 && BOOST_PP_ITERATION_FINISH_5 >= 188
+# define BOOST_PP_ITERATION_5 188
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 189 && BOOST_PP_ITERATION_FINISH_5 >= 189
+# define BOOST_PP_ITERATION_5 189
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 190 && BOOST_PP_ITERATION_FINISH_5 >= 190
+# define BOOST_PP_ITERATION_5 190
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 191 && BOOST_PP_ITERATION_FINISH_5 >= 191
+# define BOOST_PP_ITERATION_5 191
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 192 && BOOST_PP_ITERATION_FINISH_5 >= 192
+# define BOOST_PP_ITERATION_5 192
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 193 && BOOST_PP_ITERATION_FINISH_5 >= 193
+# define BOOST_PP_ITERATION_5 193
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 194 && BOOST_PP_ITERATION_FINISH_5 >= 194
+# define BOOST_PP_ITERATION_5 194
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 195 && BOOST_PP_ITERATION_FINISH_5 >= 195
+# define BOOST_PP_ITERATION_5 195
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 196 && BOOST_PP_ITERATION_FINISH_5 >= 196
+# define BOOST_PP_ITERATION_5 196
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 197 && BOOST_PP_ITERATION_FINISH_5 >= 197
+# define BOOST_PP_ITERATION_5 197
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 198 && BOOST_PP_ITERATION_FINISH_5 >= 198
+# define BOOST_PP_ITERATION_5 198
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 199 && BOOST_PP_ITERATION_FINISH_5 >= 199
+# define BOOST_PP_ITERATION_5 199
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 200 && BOOST_PP_ITERATION_FINISH_5 >= 200
+# define BOOST_PP_ITERATION_5 200
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 201 && BOOST_PP_ITERATION_FINISH_5 >= 201
+# define BOOST_PP_ITERATION_5 201
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 202 && BOOST_PP_ITERATION_FINISH_5 >= 202
+# define BOOST_PP_ITERATION_5 202
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 203 && BOOST_PP_ITERATION_FINISH_5 >= 203
+# define BOOST_PP_ITERATION_5 203
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 204 && BOOST_PP_ITERATION_FINISH_5 >= 204
+# define BOOST_PP_ITERATION_5 204
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 205 && BOOST_PP_ITERATION_FINISH_5 >= 205
+# define BOOST_PP_ITERATION_5 205
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 206 && BOOST_PP_ITERATION_FINISH_5 >= 206
+# define BOOST_PP_ITERATION_5 206
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 207 && BOOST_PP_ITERATION_FINISH_5 >= 207
+# define BOOST_PP_ITERATION_5 207
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 208 && BOOST_PP_ITERATION_FINISH_5 >= 208
+# define BOOST_PP_ITERATION_5 208
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 209 && BOOST_PP_ITERATION_FINISH_5 >= 209
+# define BOOST_PP_ITERATION_5 209
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 210 && BOOST_PP_ITERATION_FINISH_5 >= 210
+# define BOOST_PP_ITERATION_5 210
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 211 && BOOST_PP_ITERATION_FINISH_5 >= 211
+# define BOOST_PP_ITERATION_5 211
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 212 && BOOST_PP_ITERATION_FINISH_5 >= 212
+# define BOOST_PP_ITERATION_5 212
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 213 && BOOST_PP_ITERATION_FINISH_5 >= 213
+# define BOOST_PP_ITERATION_5 213
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 214 && BOOST_PP_ITERATION_FINISH_5 >= 214
+# define BOOST_PP_ITERATION_5 214
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 215 && BOOST_PP_ITERATION_FINISH_5 >= 215
+# define BOOST_PP_ITERATION_5 215
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 216 && BOOST_PP_ITERATION_FINISH_5 >= 216
+# define BOOST_PP_ITERATION_5 216
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 217 && BOOST_PP_ITERATION_FINISH_5 >= 217
+# define BOOST_PP_ITERATION_5 217
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 218 && BOOST_PP_ITERATION_FINISH_5 >= 218
+# define BOOST_PP_ITERATION_5 218
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 219 && BOOST_PP_ITERATION_FINISH_5 >= 219
+# define BOOST_PP_ITERATION_5 219
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 220 && BOOST_PP_ITERATION_FINISH_5 >= 220
+# define BOOST_PP_ITERATION_5 220
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 221 && BOOST_PP_ITERATION_FINISH_5 >= 221
+# define BOOST_PP_ITERATION_5 221
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 222 && BOOST_PP_ITERATION_FINISH_5 >= 222
+# define BOOST_PP_ITERATION_5 222
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 223 && BOOST_PP_ITERATION_FINISH_5 >= 223
+# define BOOST_PP_ITERATION_5 223
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 224 && BOOST_PP_ITERATION_FINISH_5 >= 224
+# define BOOST_PP_ITERATION_5 224
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 225 && BOOST_PP_ITERATION_FINISH_5 >= 225
+# define BOOST_PP_ITERATION_5 225
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 226 && BOOST_PP_ITERATION_FINISH_5 >= 226
+# define BOOST_PP_ITERATION_5 226
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 227 && BOOST_PP_ITERATION_FINISH_5 >= 227
+# define BOOST_PP_ITERATION_5 227
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 228 && BOOST_PP_ITERATION_FINISH_5 >= 228
+# define BOOST_PP_ITERATION_5 228
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 229 && BOOST_PP_ITERATION_FINISH_5 >= 229
+# define BOOST_PP_ITERATION_5 229
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 230 && BOOST_PP_ITERATION_FINISH_5 >= 230
+# define BOOST_PP_ITERATION_5 230
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 231 && BOOST_PP_ITERATION_FINISH_5 >= 231
+# define BOOST_PP_ITERATION_5 231
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 232 && BOOST_PP_ITERATION_FINISH_5 >= 232
+# define BOOST_PP_ITERATION_5 232
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 233 && BOOST_PP_ITERATION_FINISH_5 >= 233
+# define BOOST_PP_ITERATION_5 233
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 234 && BOOST_PP_ITERATION_FINISH_5 >= 234
+# define BOOST_PP_ITERATION_5 234
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 235 && BOOST_PP_ITERATION_FINISH_5 >= 235
+# define BOOST_PP_ITERATION_5 235
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 236 && BOOST_PP_ITERATION_FINISH_5 >= 236
+# define BOOST_PP_ITERATION_5 236
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 237 && BOOST_PP_ITERATION_FINISH_5 >= 237
+# define BOOST_PP_ITERATION_5 237
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 238 && BOOST_PP_ITERATION_FINISH_5 >= 238
+# define BOOST_PP_ITERATION_5 238
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 239 && BOOST_PP_ITERATION_FINISH_5 >= 239
+# define BOOST_PP_ITERATION_5 239
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 240 && BOOST_PP_ITERATION_FINISH_5 >= 240
+# define BOOST_PP_ITERATION_5 240
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 241 && BOOST_PP_ITERATION_FINISH_5 >= 241
+# define BOOST_PP_ITERATION_5 241
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 242 && BOOST_PP_ITERATION_FINISH_5 >= 242
+# define BOOST_PP_ITERATION_5 242
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 243 && BOOST_PP_ITERATION_FINISH_5 >= 243
+# define BOOST_PP_ITERATION_5 243
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 244 && BOOST_PP_ITERATION_FINISH_5 >= 244
+# define BOOST_PP_ITERATION_5 244
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 245 && BOOST_PP_ITERATION_FINISH_5 >= 245
+# define BOOST_PP_ITERATION_5 245
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 246 && BOOST_PP_ITERATION_FINISH_5 >= 246
+# define BOOST_PP_ITERATION_5 246
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 247 && BOOST_PP_ITERATION_FINISH_5 >= 247
+# define BOOST_PP_ITERATION_5 247
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 248 && BOOST_PP_ITERATION_FINISH_5 >= 248
+# define BOOST_PP_ITERATION_5 248
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 249 && BOOST_PP_ITERATION_FINISH_5 >= 249
+# define BOOST_PP_ITERATION_5 249
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 250 && BOOST_PP_ITERATION_FINISH_5 >= 250
+# define BOOST_PP_ITERATION_5 250
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 251 && BOOST_PP_ITERATION_FINISH_5 >= 251
+# define BOOST_PP_ITERATION_5 251
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 252 && BOOST_PP_ITERATION_FINISH_5 >= 252
+# define BOOST_PP_ITERATION_5 252
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 253 && BOOST_PP_ITERATION_FINISH_5 >= 253
+# define BOOST_PP_ITERATION_5 253
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 254 && BOOST_PP_ITERATION_FINISH_5 >= 254
+# define BOOST_PP_ITERATION_5 254
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 255 && BOOST_PP_ITERATION_FINISH_5 >= 255
+# define BOOST_PP_ITERATION_5 255
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_START_5 <= 256 && BOOST_PP_ITERATION_FINISH_5 >= 256
+# define BOOST_PP_ITERATION_5 256
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# endif
+#
+# undef BOOST_PP_ITERATION_DEPTH
+# define BOOST_PP_ITERATION_DEPTH() 4
+#
+# undef BOOST_PP_ITERATION_START_5
+# undef BOOST_PP_ITERATION_FINISH_5
+# undef BOOST_PP_FILENAME_5
+#
+# undef BOOST_PP_ITERATION_FLAGS_5
+# undef BOOST_PP_ITERATION_PARAMS_5
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp
new file mode 100644
index 0000000..bf88d2f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_ITERATION_FINISH_1 <= 256 && BOOST_PP_ITERATION_START_1 >= 256
+# define BOOST_PP_ITERATION_1 256
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 255 && BOOST_PP_ITERATION_START_1 >= 255
+# define BOOST_PP_ITERATION_1 255
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 254 && BOOST_PP_ITERATION_START_1 >= 254
+# define BOOST_PP_ITERATION_1 254
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 253 && BOOST_PP_ITERATION_START_1 >= 253
+# define BOOST_PP_ITERATION_1 253
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 252 && BOOST_PP_ITERATION_START_1 >= 252
+# define BOOST_PP_ITERATION_1 252
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 251 && BOOST_PP_ITERATION_START_1 >= 251
+# define BOOST_PP_ITERATION_1 251
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 250 && BOOST_PP_ITERATION_START_1 >= 250
+# define BOOST_PP_ITERATION_1 250
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 249 && BOOST_PP_ITERATION_START_1 >= 249
+# define BOOST_PP_ITERATION_1 249
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 248 && BOOST_PP_ITERATION_START_1 >= 248
+# define BOOST_PP_ITERATION_1 248
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 247 && BOOST_PP_ITERATION_START_1 >= 247
+# define BOOST_PP_ITERATION_1 247
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 246 && BOOST_PP_ITERATION_START_1 >= 246
+# define BOOST_PP_ITERATION_1 246
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 245 && BOOST_PP_ITERATION_START_1 >= 245
+# define BOOST_PP_ITERATION_1 245
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 244 && BOOST_PP_ITERATION_START_1 >= 244
+# define BOOST_PP_ITERATION_1 244
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 243 && BOOST_PP_ITERATION_START_1 >= 243
+# define BOOST_PP_ITERATION_1 243
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 242 && BOOST_PP_ITERATION_START_1 >= 242
+# define BOOST_PP_ITERATION_1 242
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 241 && BOOST_PP_ITERATION_START_1 >= 241
+# define BOOST_PP_ITERATION_1 241
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 240 && BOOST_PP_ITERATION_START_1 >= 240
+# define BOOST_PP_ITERATION_1 240
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 239 && BOOST_PP_ITERATION_START_1 >= 239
+# define BOOST_PP_ITERATION_1 239
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 238 && BOOST_PP_ITERATION_START_1 >= 238
+# define BOOST_PP_ITERATION_1 238
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 237 && BOOST_PP_ITERATION_START_1 >= 237
+# define BOOST_PP_ITERATION_1 237
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 236 && BOOST_PP_ITERATION_START_1 >= 236
+# define BOOST_PP_ITERATION_1 236
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 235 && BOOST_PP_ITERATION_START_1 >= 235
+# define BOOST_PP_ITERATION_1 235
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 234 && BOOST_PP_ITERATION_START_1 >= 234
+# define BOOST_PP_ITERATION_1 234
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 233 && BOOST_PP_ITERATION_START_1 >= 233
+# define BOOST_PP_ITERATION_1 233
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 232 && BOOST_PP_ITERATION_START_1 >= 232
+# define BOOST_PP_ITERATION_1 232
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 231 && BOOST_PP_ITERATION_START_1 >= 231
+# define BOOST_PP_ITERATION_1 231
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 230 && BOOST_PP_ITERATION_START_1 >= 230
+# define BOOST_PP_ITERATION_1 230
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 229 && BOOST_PP_ITERATION_START_1 >= 229
+# define BOOST_PP_ITERATION_1 229
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 228 && BOOST_PP_ITERATION_START_1 >= 228
+# define BOOST_PP_ITERATION_1 228
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 227 && BOOST_PP_ITERATION_START_1 >= 227
+# define BOOST_PP_ITERATION_1 227
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 226 && BOOST_PP_ITERATION_START_1 >= 226
+# define BOOST_PP_ITERATION_1 226
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 225 && BOOST_PP_ITERATION_START_1 >= 225
+# define BOOST_PP_ITERATION_1 225
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 224 && BOOST_PP_ITERATION_START_1 >= 224
+# define BOOST_PP_ITERATION_1 224
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 223 && BOOST_PP_ITERATION_START_1 >= 223
+# define BOOST_PP_ITERATION_1 223
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 222 && BOOST_PP_ITERATION_START_1 >= 222
+# define BOOST_PP_ITERATION_1 222
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 221 && BOOST_PP_ITERATION_START_1 >= 221
+# define BOOST_PP_ITERATION_1 221
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 220 && BOOST_PP_ITERATION_START_1 >= 220
+# define BOOST_PP_ITERATION_1 220
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 219 && BOOST_PP_ITERATION_START_1 >= 219
+# define BOOST_PP_ITERATION_1 219
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 218 && BOOST_PP_ITERATION_START_1 >= 218
+# define BOOST_PP_ITERATION_1 218
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 217 && BOOST_PP_ITERATION_START_1 >= 217
+# define BOOST_PP_ITERATION_1 217
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 216 && BOOST_PP_ITERATION_START_1 >= 216
+# define BOOST_PP_ITERATION_1 216
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 215 && BOOST_PP_ITERATION_START_1 >= 215
+# define BOOST_PP_ITERATION_1 215
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 214 && BOOST_PP_ITERATION_START_1 >= 214
+# define BOOST_PP_ITERATION_1 214
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 213 && BOOST_PP_ITERATION_START_1 >= 213
+# define BOOST_PP_ITERATION_1 213
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 212 && BOOST_PP_ITERATION_START_1 >= 212
+# define BOOST_PP_ITERATION_1 212
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 211 && BOOST_PP_ITERATION_START_1 >= 211
+# define BOOST_PP_ITERATION_1 211
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 210 && BOOST_PP_ITERATION_START_1 >= 210
+# define BOOST_PP_ITERATION_1 210
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 209 && BOOST_PP_ITERATION_START_1 >= 209
+# define BOOST_PP_ITERATION_1 209
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 208 && BOOST_PP_ITERATION_START_1 >= 208
+# define BOOST_PP_ITERATION_1 208
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 207 && BOOST_PP_ITERATION_START_1 >= 207
+# define BOOST_PP_ITERATION_1 207
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 206 && BOOST_PP_ITERATION_START_1 >= 206
+# define BOOST_PP_ITERATION_1 206
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 205 && BOOST_PP_ITERATION_START_1 >= 205
+# define BOOST_PP_ITERATION_1 205
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 204 && BOOST_PP_ITERATION_START_1 >= 204
+# define BOOST_PP_ITERATION_1 204
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 203 && BOOST_PP_ITERATION_START_1 >= 203
+# define BOOST_PP_ITERATION_1 203
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 202 && BOOST_PP_ITERATION_START_1 >= 202
+# define BOOST_PP_ITERATION_1 202
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 201 && BOOST_PP_ITERATION_START_1 >= 201
+# define BOOST_PP_ITERATION_1 201
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 200 && BOOST_PP_ITERATION_START_1 >= 200
+# define BOOST_PP_ITERATION_1 200
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 199 && BOOST_PP_ITERATION_START_1 >= 199
+# define BOOST_PP_ITERATION_1 199
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 198 && BOOST_PP_ITERATION_START_1 >= 198
+# define BOOST_PP_ITERATION_1 198
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 197 && BOOST_PP_ITERATION_START_1 >= 197
+# define BOOST_PP_ITERATION_1 197
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 196 && BOOST_PP_ITERATION_START_1 >= 196
+# define BOOST_PP_ITERATION_1 196
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 195 && BOOST_PP_ITERATION_START_1 >= 195
+# define BOOST_PP_ITERATION_1 195
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 194 && BOOST_PP_ITERATION_START_1 >= 194
+# define BOOST_PP_ITERATION_1 194
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 193 && BOOST_PP_ITERATION_START_1 >= 193
+# define BOOST_PP_ITERATION_1 193
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 192 && BOOST_PP_ITERATION_START_1 >= 192
+# define BOOST_PP_ITERATION_1 192
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 191 && BOOST_PP_ITERATION_START_1 >= 191
+# define BOOST_PP_ITERATION_1 191
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 190 && BOOST_PP_ITERATION_START_1 >= 190
+# define BOOST_PP_ITERATION_1 190
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 189 && BOOST_PP_ITERATION_START_1 >= 189
+# define BOOST_PP_ITERATION_1 189
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 188 && BOOST_PP_ITERATION_START_1 >= 188
+# define BOOST_PP_ITERATION_1 188
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 187 && BOOST_PP_ITERATION_START_1 >= 187
+# define BOOST_PP_ITERATION_1 187
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 186 && BOOST_PP_ITERATION_START_1 >= 186
+# define BOOST_PP_ITERATION_1 186
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 185 && BOOST_PP_ITERATION_START_1 >= 185
+# define BOOST_PP_ITERATION_1 185
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 184 && BOOST_PP_ITERATION_START_1 >= 184
+# define BOOST_PP_ITERATION_1 184
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 183 && BOOST_PP_ITERATION_START_1 >= 183
+# define BOOST_PP_ITERATION_1 183
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 182 && BOOST_PP_ITERATION_START_1 >= 182
+# define BOOST_PP_ITERATION_1 182
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 181 && BOOST_PP_ITERATION_START_1 >= 181
+# define BOOST_PP_ITERATION_1 181
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 180 && BOOST_PP_ITERATION_START_1 >= 180
+# define BOOST_PP_ITERATION_1 180
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 179 && BOOST_PP_ITERATION_START_1 >= 179
+# define BOOST_PP_ITERATION_1 179
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 178 && BOOST_PP_ITERATION_START_1 >= 178
+# define BOOST_PP_ITERATION_1 178
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 177 && BOOST_PP_ITERATION_START_1 >= 177
+# define BOOST_PP_ITERATION_1 177
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 176 && BOOST_PP_ITERATION_START_1 >= 176
+# define BOOST_PP_ITERATION_1 176
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 175 && BOOST_PP_ITERATION_START_1 >= 175
+# define BOOST_PP_ITERATION_1 175
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 174 && BOOST_PP_ITERATION_START_1 >= 174
+# define BOOST_PP_ITERATION_1 174
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 173 && BOOST_PP_ITERATION_START_1 >= 173
+# define BOOST_PP_ITERATION_1 173
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 172 && BOOST_PP_ITERATION_START_1 >= 172
+# define BOOST_PP_ITERATION_1 172
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 171 && BOOST_PP_ITERATION_START_1 >= 171
+# define BOOST_PP_ITERATION_1 171
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 170 && BOOST_PP_ITERATION_START_1 >= 170
+# define BOOST_PP_ITERATION_1 170
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 169 && BOOST_PP_ITERATION_START_1 >= 169
+# define BOOST_PP_ITERATION_1 169
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 168 && BOOST_PP_ITERATION_START_1 >= 168
+# define BOOST_PP_ITERATION_1 168
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 167 && BOOST_PP_ITERATION_START_1 >= 167
+# define BOOST_PP_ITERATION_1 167
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 166 && BOOST_PP_ITERATION_START_1 >= 166
+# define BOOST_PP_ITERATION_1 166
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 165 && BOOST_PP_ITERATION_START_1 >= 165
+# define BOOST_PP_ITERATION_1 165
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 164 && BOOST_PP_ITERATION_START_1 >= 164
+# define BOOST_PP_ITERATION_1 164
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 163 && BOOST_PP_ITERATION_START_1 >= 163
+# define BOOST_PP_ITERATION_1 163
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 162 && BOOST_PP_ITERATION_START_1 >= 162
+# define BOOST_PP_ITERATION_1 162
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 161 && BOOST_PP_ITERATION_START_1 >= 161
+# define BOOST_PP_ITERATION_1 161
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 160 && BOOST_PP_ITERATION_START_1 >= 160
+# define BOOST_PP_ITERATION_1 160
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 159 && BOOST_PP_ITERATION_START_1 >= 159
+# define BOOST_PP_ITERATION_1 159
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 158 && BOOST_PP_ITERATION_START_1 >= 158
+# define BOOST_PP_ITERATION_1 158
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 157 && BOOST_PP_ITERATION_START_1 >= 157
+# define BOOST_PP_ITERATION_1 157
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 156 && BOOST_PP_ITERATION_START_1 >= 156
+# define BOOST_PP_ITERATION_1 156
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 155 && BOOST_PP_ITERATION_START_1 >= 155
+# define BOOST_PP_ITERATION_1 155
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 154 && BOOST_PP_ITERATION_START_1 >= 154
+# define BOOST_PP_ITERATION_1 154
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 153 && BOOST_PP_ITERATION_START_1 >= 153
+# define BOOST_PP_ITERATION_1 153
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 152 && BOOST_PP_ITERATION_START_1 >= 152
+# define BOOST_PP_ITERATION_1 152
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 151 && BOOST_PP_ITERATION_START_1 >= 151
+# define BOOST_PP_ITERATION_1 151
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 150 && BOOST_PP_ITERATION_START_1 >= 150
+# define BOOST_PP_ITERATION_1 150
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 149 && BOOST_PP_ITERATION_START_1 >= 149
+# define BOOST_PP_ITERATION_1 149
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 148 && BOOST_PP_ITERATION_START_1 >= 148
+# define BOOST_PP_ITERATION_1 148
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 147 && BOOST_PP_ITERATION_START_1 >= 147
+# define BOOST_PP_ITERATION_1 147
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 146 && BOOST_PP_ITERATION_START_1 >= 146
+# define BOOST_PP_ITERATION_1 146
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 145 && BOOST_PP_ITERATION_START_1 >= 145
+# define BOOST_PP_ITERATION_1 145
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 144 && BOOST_PP_ITERATION_START_1 >= 144
+# define BOOST_PP_ITERATION_1 144
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 143 && BOOST_PP_ITERATION_START_1 >= 143
+# define BOOST_PP_ITERATION_1 143
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 142 && BOOST_PP_ITERATION_START_1 >= 142
+# define BOOST_PP_ITERATION_1 142
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 141 && BOOST_PP_ITERATION_START_1 >= 141
+# define BOOST_PP_ITERATION_1 141
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 140 && BOOST_PP_ITERATION_START_1 >= 140
+# define BOOST_PP_ITERATION_1 140
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 139 && BOOST_PP_ITERATION_START_1 >= 139
+# define BOOST_PP_ITERATION_1 139
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 138 && BOOST_PP_ITERATION_START_1 >= 138
+# define BOOST_PP_ITERATION_1 138
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 137 && BOOST_PP_ITERATION_START_1 >= 137
+# define BOOST_PP_ITERATION_1 137
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 136 && BOOST_PP_ITERATION_START_1 >= 136
+# define BOOST_PP_ITERATION_1 136
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 135 && BOOST_PP_ITERATION_START_1 >= 135
+# define BOOST_PP_ITERATION_1 135
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 134 && BOOST_PP_ITERATION_START_1 >= 134
+# define BOOST_PP_ITERATION_1 134
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 133 && BOOST_PP_ITERATION_START_1 >= 133
+# define BOOST_PP_ITERATION_1 133
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 132 && BOOST_PP_ITERATION_START_1 >= 132
+# define BOOST_PP_ITERATION_1 132
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 131 && BOOST_PP_ITERATION_START_1 >= 131
+# define BOOST_PP_ITERATION_1 131
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 130 && BOOST_PP_ITERATION_START_1 >= 130
+# define BOOST_PP_ITERATION_1 130
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 129 && BOOST_PP_ITERATION_START_1 >= 129
+# define BOOST_PP_ITERATION_1 129
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 128 && BOOST_PP_ITERATION_START_1 >= 128
+# define BOOST_PP_ITERATION_1 128
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 127 && BOOST_PP_ITERATION_START_1 >= 127
+# define BOOST_PP_ITERATION_1 127
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 126 && BOOST_PP_ITERATION_START_1 >= 126
+# define BOOST_PP_ITERATION_1 126
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 125 && BOOST_PP_ITERATION_START_1 >= 125
+# define BOOST_PP_ITERATION_1 125
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 124 && BOOST_PP_ITERATION_START_1 >= 124
+# define BOOST_PP_ITERATION_1 124
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 123 && BOOST_PP_ITERATION_START_1 >= 123
+# define BOOST_PP_ITERATION_1 123
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 122 && BOOST_PP_ITERATION_START_1 >= 122
+# define BOOST_PP_ITERATION_1 122
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 121 && BOOST_PP_ITERATION_START_1 >= 121
+# define BOOST_PP_ITERATION_1 121
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 120 && BOOST_PP_ITERATION_START_1 >= 120
+# define BOOST_PP_ITERATION_1 120
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 119 && BOOST_PP_ITERATION_START_1 >= 119
+# define BOOST_PP_ITERATION_1 119
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 118 && BOOST_PP_ITERATION_START_1 >= 118
+# define BOOST_PP_ITERATION_1 118
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 117 && BOOST_PP_ITERATION_START_1 >= 117
+# define BOOST_PP_ITERATION_1 117
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 116 && BOOST_PP_ITERATION_START_1 >= 116
+# define BOOST_PP_ITERATION_1 116
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 115 && BOOST_PP_ITERATION_START_1 >= 115
+# define BOOST_PP_ITERATION_1 115
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 114 && BOOST_PP_ITERATION_START_1 >= 114
+# define BOOST_PP_ITERATION_1 114
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 113 && BOOST_PP_ITERATION_START_1 >= 113
+# define BOOST_PP_ITERATION_1 113
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 112 && BOOST_PP_ITERATION_START_1 >= 112
+# define BOOST_PP_ITERATION_1 112
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 111 && BOOST_PP_ITERATION_START_1 >= 111
+# define BOOST_PP_ITERATION_1 111
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 110 && BOOST_PP_ITERATION_START_1 >= 110
+# define BOOST_PP_ITERATION_1 110
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 109 && BOOST_PP_ITERATION_START_1 >= 109
+# define BOOST_PP_ITERATION_1 109
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 108 && BOOST_PP_ITERATION_START_1 >= 108
+# define BOOST_PP_ITERATION_1 108
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 107 && BOOST_PP_ITERATION_START_1 >= 107
+# define BOOST_PP_ITERATION_1 107
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 106 && BOOST_PP_ITERATION_START_1 >= 106
+# define BOOST_PP_ITERATION_1 106
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 105 && BOOST_PP_ITERATION_START_1 >= 105
+# define BOOST_PP_ITERATION_1 105
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 104 && BOOST_PP_ITERATION_START_1 >= 104
+# define BOOST_PP_ITERATION_1 104
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 103 && BOOST_PP_ITERATION_START_1 >= 103
+# define BOOST_PP_ITERATION_1 103
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 102 && BOOST_PP_ITERATION_START_1 >= 102
+# define BOOST_PP_ITERATION_1 102
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 101 && BOOST_PP_ITERATION_START_1 >= 101
+# define BOOST_PP_ITERATION_1 101
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 100 && BOOST_PP_ITERATION_START_1 >= 100
+# define BOOST_PP_ITERATION_1 100
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 99 && BOOST_PP_ITERATION_START_1 >= 99
+# define BOOST_PP_ITERATION_1 99
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 98 && BOOST_PP_ITERATION_START_1 >= 98
+# define BOOST_PP_ITERATION_1 98
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 97 && BOOST_PP_ITERATION_START_1 >= 97
+# define BOOST_PP_ITERATION_1 97
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 96 && BOOST_PP_ITERATION_START_1 >= 96
+# define BOOST_PP_ITERATION_1 96
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 95 && BOOST_PP_ITERATION_START_1 >= 95
+# define BOOST_PP_ITERATION_1 95
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 94 && BOOST_PP_ITERATION_START_1 >= 94
+# define BOOST_PP_ITERATION_1 94
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 93 && BOOST_PP_ITERATION_START_1 >= 93
+# define BOOST_PP_ITERATION_1 93
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 92 && BOOST_PP_ITERATION_START_1 >= 92
+# define BOOST_PP_ITERATION_1 92
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 91 && BOOST_PP_ITERATION_START_1 >= 91
+# define BOOST_PP_ITERATION_1 91
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 90 && BOOST_PP_ITERATION_START_1 >= 90
+# define BOOST_PP_ITERATION_1 90
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 89 && BOOST_PP_ITERATION_START_1 >= 89
+# define BOOST_PP_ITERATION_1 89
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 88 && BOOST_PP_ITERATION_START_1 >= 88
+# define BOOST_PP_ITERATION_1 88
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 87 && BOOST_PP_ITERATION_START_1 >= 87
+# define BOOST_PP_ITERATION_1 87
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 86 && BOOST_PP_ITERATION_START_1 >= 86
+# define BOOST_PP_ITERATION_1 86
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 85 && BOOST_PP_ITERATION_START_1 >= 85
+# define BOOST_PP_ITERATION_1 85
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 84 && BOOST_PP_ITERATION_START_1 >= 84
+# define BOOST_PP_ITERATION_1 84
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 83 && BOOST_PP_ITERATION_START_1 >= 83
+# define BOOST_PP_ITERATION_1 83
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 82 && BOOST_PP_ITERATION_START_1 >= 82
+# define BOOST_PP_ITERATION_1 82
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 81 && BOOST_PP_ITERATION_START_1 >= 81
+# define BOOST_PP_ITERATION_1 81
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 80 && BOOST_PP_ITERATION_START_1 >= 80
+# define BOOST_PP_ITERATION_1 80
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 79 && BOOST_PP_ITERATION_START_1 >= 79
+# define BOOST_PP_ITERATION_1 79
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 78 && BOOST_PP_ITERATION_START_1 >= 78
+# define BOOST_PP_ITERATION_1 78
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 77 && BOOST_PP_ITERATION_START_1 >= 77
+# define BOOST_PP_ITERATION_1 77
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 76 && BOOST_PP_ITERATION_START_1 >= 76
+# define BOOST_PP_ITERATION_1 76
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 75 && BOOST_PP_ITERATION_START_1 >= 75
+# define BOOST_PP_ITERATION_1 75
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 74 && BOOST_PP_ITERATION_START_1 >= 74
+# define BOOST_PP_ITERATION_1 74
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 73 && BOOST_PP_ITERATION_START_1 >= 73
+# define BOOST_PP_ITERATION_1 73
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 72 && BOOST_PP_ITERATION_START_1 >= 72
+# define BOOST_PP_ITERATION_1 72
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 71 && BOOST_PP_ITERATION_START_1 >= 71
+# define BOOST_PP_ITERATION_1 71
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 70 && BOOST_PP_ITERATION_START_1 >= 70
+# define BOOST_PP_ITERATION_1 70
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 69 && BOOST_PP_ITERATION_START_1 >= 69
+# define BOOST_PP_ITERATION_1 69
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 68 && BOOST_PP_ITERATION_START_1 >= 68
+# define BOOST_PP_ITERATION_1 68
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 67 && BOOST_PP_ITERATION_START_1 >= 67
+# define BOOST_PP_ITERATION_1 67
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 66 && BOOST_PP_ITERATION_START_1 >= 66
+# define BOOST_PP_ITERATION_1 66
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 65 && BOOST_PP_ITERATION_START_1 >= 65
+# define BOOST_PP_ITERATION_1 65
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 64 && BOOST_PP_ITERATION_START_1 >= 64
+# define BOOST_PP_ITERATION_1 64
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 63 && BOOST_PP_ITERATION_START_1 >= 63
+# define BOOST_PP_ITERATION_1 63
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 62 && BOOST_PP_ITERATION_START_1 >= 62
+# define BOOST_PP_ITERATION_1 62
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 61 && BOOST_PP_ITERATION_START_1 >= 61
+# define BOOST_PP_ITERATION_1 61
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 60 && BOOST_PP_ITERATION_START_1 >= 60
+# define BOOST_PP_ITERATION_1 60
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 59 && BOOST_PP_ITERATION_START_1 >= 59
+# define BOOST_PP_ITERATION_1 59
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 58 && BOOST_PP_ITERATION_START_1 >= 58
+# define BOOST_PP_ITERATION_1 58
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 57 && BOOST_PP_ITERATION_START_1 >= 57
+# define BOOST_PP_ITERATION_1 57
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 56 && BOOST_PP_ITERATION_START_1 >= 56
+# define BOOST_PP_ITERATION_1 56
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 55 && BOOST_PP_ITERATION_START_1 >= 55
+# define BOOST_PP_ITERATION_1 55
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 54 && BOOST_PP_ITERATION_START_1 >= 54
+# define BOOST_PP_ITERATION_1 54
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 53 && BOOST_PP_ITERATION_START_1 >= 53
+# define BOOST_PP_ITERATION_1 53
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 52 && BOOST_PP_ITERATION_START_1 >= 52
+# define BOOST_PP_ITERATION_1 52
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 51 && BOOST_PP_ITERATION_START_1 >= 51
+# define BOOST_PP_ITERATION_1 51
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 50 && BOOST_PP_ITERATION_START_1 >= 50
+# define BOOST_PP_ITERATION_1 50
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 49 && BOOST_PP_ITERATION_START_1 >= 49
+# define BOOST_PP_ITERATION_1 49
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 48 && BOOST_PP_ITERATION_START_1 >= 48
+# define BOOST_PP_ITERATION_1 48
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 47 && BOOST_PP_ITERATION_START_1 >= 47
+# define BOOST_PP_ITERATION_1 47
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 46 && BOOST_PP_ITERATION_START_1 >= 46
+# define BOOST_PP_ITERATION_1 46
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 45 && BOOST_PP_ITERATION_START_1 >= 45
+# define BOOST_PP_ITERATION_1 45
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 44 && BOOST_PP_ITERATION_START_1 >= 44
+# define BOOST_PP_ITERATION_1 44
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 43 && BOOST_PP_ITERATION_START_1 >= 43
+# define BOOST_PP_ITERATION_1 43
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 42 && BOOST_PP_ITERATION_START_1 >= 42
+# define BOOST_PP_ITERATION_1 42
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 41 && BOOST_PP_ITERATION_START_1 >= 41
+# define BOOST_PP_ITERATION_1 41
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 40 && BOOST_PP_ITERATION_START_1 >= 40
+# define BOOST_PP_ITERATION_1 40
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 39 && BOOST_PP_ITERATION_START_1 >= 39
+# define BOOST_PP_ITERATION_1 39
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 38 && BOOST_PP_ITERATION_START_1 >= 38
+# define BOOST_PP_ITERATION_1 38
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 37 && BOOST_PP_ITERATION_START_1 >= 37
+# define BOOST_PP_ITERATION_1 37
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 36 && BOOST_PP_ITERATION_START_1 >= 36
+# define BOOST_PP_ITERATION_1 36
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 35 && BOOST_PP_ITERATION_START_1 >= 35
+# define BOOST_PP_ITERATION_1 35
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 34 && BOOST_PP_ITERATION_START_1 >= 34
+# define BOOST_PP_ITERATION_1 34
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 33 && BOOST_PP_ITERATION_START_1 >= 33
+# define BOOST_PP_ITERATION_1 33
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 32 && BOOST_PP_ITERATION_START_1 >= 32
+# define BOOST_PP_ITERATION_1 32
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 31 && BOOST_PP_ITERATION_START_1 >= 31
+# define BOOST_PP_ITERATION_1 31
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 30 && BOOST_PP_ITERATION_START_1 >= 30
+# define BOOST_PP_ITERATION_1 30
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 29 && BOOST_PP_ITERATION_START_1 >= 29
+# define BOOST_PP_ITERATION_1 29
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 28 && BOOST_PP_ITERATION_START_1 >= 28
+# define BOOST_PP_ITERATION_1 28
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 27 && BOOST_PP_ITERATION_START_1 >= 27
+# define BOOST_PP_ITERATION_1 27
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 26 && BOOST_PP_ITERATION_START_1 >= 26
+# define BOOST_PP_ITERATION_1 26
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 25 && BOOST_PP_ITERATION_START_1 >= 25
+# define BOOST_PP_ITERATION_1 25
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 24 && BOOST_PP_ITERATION_START_1 >= 24
+# define BOOST_PP_ITERATION_1 24
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 23 && BOOST_PP_ITERATION_START_1 >= 23
+# define BOOST_PP_ITERATION_1 23
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 22 && BOOST_PP_ITERATION_START_1 >= 22
+# define BOOST_PP_ITERATION_1 22
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 21 && BOOST_PP_ITERATION_START_1 >= 21
+# define BOOST_PP_ITERATION_1 21
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 20 && BOOST_PP_ITERATION_START_1 >= 20
+# define BOOST_PP_ITERATION_1 20
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 19 && BOOST_PP_ITERATION_START_1 >= 19
+# define BOOST_PP_ITERATION_1 19
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 18 && BOOST_PP_ITERATION_START_1 >= 18
+# define BOOST_PP_ITERATION_1 18
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 17 && BOOST_PP_ITERATION_START_1 >= 17
+# define BOOST_PP_ITERATION_1 17
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 16 && BOOST_PP_ITERATION_START_1 >= 16
+# define BOOST_PP_ITERATION_1 16
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 15 && BOOST_PP_ITERATION_START_1 >= 15
+# define BOOST_PP_ITERATION_1 15
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 14 && BOOST_PP_ITERATION_START_1 >= 14
+# define BOOST_PP_ITERATION_1 14
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 13 && BOOST_PP_ITERATION_START_1 >= 13
+# define BOOST_PP_ITERATION_1 13
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 12 && BOOST_PP_ITERATION_START_1 >= 12
+# define BOOST_PP_ITERATION_1 12
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 11 && BOOST_PP_ITERATION_START_1 >= 11
+# define BOOST_PP_ITERATION_1 11
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 10 && BOOST_PP_ITERATION_START_1 >= 10
+# define BOOST_PP_ITERATION_1 10
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 9 && BOOST_PP_ITERATION_START_1 >= 9
+# define BOOST_PP_ITERATION_1 9
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 8 && BOOST_PP_ITERATION_START_1 >= 8
+# define BOOST_PP_ITERATION_1 8
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 7 && BOOST_PP_ITERATION_START_1 >= 7
+# define BOOST_PP_ITERATION_1 7
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 6 && BOOST_PP_ITERATION_START_1 >= 6
+# define BOOST_PP_ITERATION_1 6
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 5 && BOOST_PP_ITERATION_START_1 >= 5
+# define BOOST_PP_ITERATION_1 5
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 4 && BOOST_PP_ITERATION_START_1 >= 4
+# define BOOST_PP_ITERATION_1 4
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 3 && BOOST_PP_ITERATION_START_1 >= 3
+# define BOOST_PP_ITERATION_1 3
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 2 && BOOST_PP_ITERATION_START_1 >= 2
+# define BOOST_PP_ITERATION_1 2
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 1 && BOOST_PP_ITERATION_START_1 >= 1
+# define BOOST_PP_ITERATION_1 1
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
+# if BOOST_PP_ITERATION_FINISH_1 <= 0 && BOOST_PP_ITERATION_START_1 >= 0
+# define BOOST_PP_ITERATION_1 0
+# include BOOST_PP_FILENAME_1
+# undef BOOST_PP_ITERATION_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp
new file mode 100644
index 0000000..521bd24
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_ITERATION_FINISH_2 <= 256 && BOOST_PP_ITERATION_START_2 >= 256
+# define BOOST_PP_ITERATION_2 256
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 255 && BOOST_PP_ITERATION_START_2 >= 255
+# define BOOST_PP_ITERATION_2 255
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 254 && BOOST_PP_ITERATION_START_2 >= 254
+# define BOOST_PP_ITERATION_2 254
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 253 && BOOST_PP_ITERATION_START_2 >= 253
+# define BOOST_PP_ITERATION_2 253
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 252 && BOOST_PP_ITERATION_START_2 >= 252
+# define BOOST_PP_ITERATION_2 252
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 251 && BOOST_PP_ITERATION_START_2 >= 251
+# define BOOST_PP_ITERATION_2 251
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 250 && BOOST_PP_ITERATION_START_2 >= 250
+# define BOOST_PP_ITERATION_2 250
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 249 && BOOST_PP_ITERATION_START_2 >= 249
+# define BOOST_PP_ITERATION_2 249
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 248 && BOOST_PP_ITERATION_START_2 >= 248
+# define BOOST_PP_ITERATION_2 248
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 247 && BOOST_PP_ITERATION_START_2 >= 247
+# define BOOST_PP_ITERATION_2 247
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 246 && BOOST_PP_ITERATION_START_2 >= 246
+# define BOOST_PP_ITERATION_2 246
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 245 && BOOST_PP_ITERATION_START_2 >= 245
+# define BOOST_PP_ITERATION_2 245
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 244 && BOOST_PP_ITERATION_START_2 >= 244
+# define BOOST_PP_ITERATION_2 244
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 243 && BOOST_PP_ITERATION_START_2 >= 243
+# define BOOST_PP_ITERATION_2 243
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 242 && BOOST_PP_ITERATION_START_2 >= 242
+# define BOOST_PP_ITERATION_2 242
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 241 && BOOST_PP_ITERATION_START_2 >= 241
+# define BOOST_PP_ITERATION_2 241
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 240 && BOOST_PP_ITERATION_START_2 >= 240
+# define BOOST_PP_ITERATION_2 240
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 239 && BOOST_PP_ITERATION_START_2 >= 239
+# define BOOST_PP_ITERATION_2 239
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 238 && BOOST_PP_ITERATION_START_2 >= 238
+# define BOOST_PP_ITERATION_2 238
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 237 && BOOST_PP_ITERATION_START_2 >= 237
+# define BOOST_PP_ITERATION_2 237
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 236 && BOOST_PP_ITERATION_START_2 >= 236
+# define BOOST_PP_ITERATION_2 236
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 235 && BOOST_PP_ITERATION_START_2 >= 235
+# define BOOST_PP_ITERATION_2 235
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 234 && BOOST_PP_ITERATION_START_2 >= 234
+# define BOOST_PP_ITERATION_2 234
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 233 && BOOST_PP_ITERATION_START_2 >= 233
+# define BOOST_PP_ITERATION_2 233
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 232 && BOOST_PP_ITERATION_START_2 >= 232
+# define BOOST_PP_ITERATION_2 232
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 231 && BOOST_PP_ITERATION_START_2 >= 231
+# define BOOST_PP_ITERATION_2 231
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 230 && BOOST_PP_ITERATION_START_2 >= 230
+# define BOOST_PP_ITERATION_2 230
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 229 && BOOST_PP_ITERATION_START_2 >= 229
+# define BOOST_PP_ITERATION_2 229
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 228 && BOOST_PP_ITERATION_START_2 >= 228
+# define BOOST_PP_ITERATION_2 228
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 227 && BOOST_PP_ITERATION_START_2 >= 227
+# define BOOST_PP_ITERATION_2 227
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 226 && BOOST_PP_ITERATION_START_2 >= 226
+# define BOOST_PP_ITERATION_2 226
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 225 && BOOST_PP_ITERATION_START_2 >= 225
+# define BOOST_PP_ITERATION_2 225
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 224 && BOOST_PP_ITERATION_START_2 >= 224
+# define BOOST_PP_ITERATION_2 224
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 223 && BOOST_PP_ITERATION_START_2 >= 223
+# define BOOST_PP_ITERATION_2 223
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 222 && BOOST_PP_ITERATION_START_2 >= 222
+# define BOOST_PP_ITERATION_2 222
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 221 && BOOST_PP_ITERATION_START_2 >= 221
+# define BOOST_PP_ITERATION_2 221
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 220 && BOOST_PP_ITERATION_START_2 >= 220
+# define BOOST_PP_ITERATION_2 220
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 219 && BOOST_PP_ITERATION_START_2 >= 219
+# define BOOST_PP_ITERATION_2 219
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 218 && BOOST_PP_ITERATION_START_2 >= 218
+# define BOOST_PP_ITERATION_2 218
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 217 && BOOST_PP_ITERATION_START_2 >= 217
+# define BOOST_PP_ITERATION_2 217
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 216 && BOOST_PP_ITERATION_START_2 >= 216
+# define BOOST_PP_ITERATION_2 216
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 215 && BOOST_PP_ITERATION_START_2 >= 215
+# define BOOST_PP_ITERATION_2 215
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 214 && BOOST_PP_ITERATION_START_2 >= 214
+# define BOOST_PP_ITERATION_2 214
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 213 && BOOST_PP_ITERATION_START_2 >= 213
+# define BOOST_PP_ITERATION_2 213
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 212 && BOOST_PP_ITERATION_START_2 >= 212
+# define BOOST_PP_ITERATION_2 212
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 211 && BOOST_PP_ITERATION_START_2 >= 211
+# define BOOST_PP_ITERATION_2 211
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 210 && BOOST_PP_ITERATION_START_2 >= 210
+# define BOOST_PP_ITERATION_2 210
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 209 && BOOST_PP_ITERATION_START_2 >= 209
+# define BOOST_PP_ITERATION_2 209
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 208 && BOOST_PP_ITERATION_START_2 >= 208
+# define BOOST_PP_ITERATION_2 208
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 207 && BOOST_PP_ITERATION_START_2 >= 207
+# define BOOST_PP_ITERATION_2 207
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 206 && BOOST_PP_ITERATION_START_2 >= 206
+# define BOOST_PP_ITERATION_2 206
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 205 && BOOST_PP_ITERATION_START_2 >= 205
+# define BOOST_PP_ITERATION_2 205
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 204 && BOOST_PP_ITERATION_START_2 >= 204
+# define BOOST_PP_ITERATION_2 204
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 203 && BOOST_PP_ITERATION_START_2 >= 203
+# define BOOST_PP_ITERATION_2 203
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 202 && BOOST_PP_ITERATION_START_2 >= 202
+# define BOOST_PP_ITERATION_2 202
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 201 && BOOST_PP_ITERATION_START_2 >= 201
+# define BOOST_PP_ITERATION_2 201
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 200 && BOOST_PP_ITERATION_START_2 >= 200
+# define BOOST_PP_ITERATION_2 200
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 199 && BOOST_PP_ITERATION_START_2 >= 199
+# define BOOST_PP_ITERATION_2 199
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 198 && BOOST_PP_ITERATION_START_2 >= 198
+# define BOOST_PP_ITERATION_2 198
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 197 && BOOST_PP_ITERATION_START_2 >= 197
+# define BOOST_PP_ITERATION_2 197
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 196 && BOOST_PP_ITERATION_START_2 >= 196
+# define BOOST_PP_ITERATION_2 196
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 195 && BOOST_PP_ITERATION_START_2 >= 195
+# define BOOST_PP_ITERATION_2 195
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 194 && BOOST_PP_ITERATION_START_2 >= 194
+# define BOOST_PP_ITERATION_2 194
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 193 && BOOST_PP_ITERATION_START_2 >= 193
+# define BOOST_PP_ITERATION_2 193
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 192 && BOOST_PP_ITERATION_START_2 >= 192
+# define BOOST_PP_ITERATION_2 192
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 191 && BOOST_PP_ITERATION_START_2 >= 191
+# define BOOST_PP_ITERATION_2 191
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 190 && BOOST_PP_ITERATION_START_2 >= 190
+# define BOOST_PP_ITERATION_2 190
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 189 && BOOST_PP_ITERATION_START_2 >= 189
+# define BOOST_PP_ITERATION_2 189
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 188 && BOOST_PP_ITERATION_START_2 >= 188
+# define BOOST_PP_ITERATION_2 188
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 187 && BOOST_PP_ITERATION_START_2 >= 187
+# define BOOST_PP_ITERATION_2 187
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 186 && BOOST_PP_ITERATION_START_2 >= 186
+# define BOOST_PP_ITERATION_2 186
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 185 && BOOST_PP_ITERATION_START_2 >= 185
+# define BOOST_PP_ITERATION_2 185
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 184 && BOOST_PP_ITERATION_START_2 >= 184
+# define BOOST_PP_ITERATION_2 184
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 183 && BOOST_PP_ITERATION_START_2 >= 183
+# define BOOST_PP_ITERATION_2 183
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 182 && BOOST_PP_ITERATION_START_2 >= 182
+# define BOOST_PP_ITERATION_2 182
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 181 && BOOST_PP_ITERATION_START_2 >= 181
+# define BOOST_PP_ITERATION_2 181
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 180 && BOOST_PP_ITERATION_START_2 >= 180
+# define BOOST_PP_ITERATION_2 180
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 179 && BOOST_PP_ITERATION_START_2 >= 179
+# define BOOST_PP_ITERATION_2 179
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 178 && BOOST_PP_ITERATION_START_2 >= 178
+# define BOOST_PP_ITERATION_2 178
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 177 && BOOST_PP_ITERATION_START_2 >= 177
+# define BOOST_PP_ITERATION_2 177
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 176 && BOOST_PP_ITERATION_START_2 >= 176
+# define BOOST_PP_ITERATION_2 176
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 175 && BOOST_PP_ITERATION_START_2 >= 175
+# define BOOST_PP_ITERATION_2 175
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 174 && BOOST_PP_ITERATION_START_2 >= 174
+# define BOOST_PP_ITERATION_2 174
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 173 && BOOST_PP_ITERATION_START_2 >= 173
+# define BOOST_PP_ITERATION_2 173
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 172 && BOOST_PP_ITERATION_START_2 >= 172
+# define BOOST_PP_ITERATION_2 172
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 171 && BOOST_PP_ITERATION_START_2 >= 171
+# define BOOST_PP_ITERATION_2 171
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 170 && BOOST_PP_ITERATION_START_2 >= 170
+# define BOOST_PP_ITERATION_2 170
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 169 && BOOST_PP_ITERATION_START_2 >= 169
+# define BOOST_PP_ITERATION_2 169
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 168 && BOOST_PP_ITERATION_START_2 >= 168
+# define BOOST_PP_ITERATION_2 168
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 167 && BOOST_PP_ITERATION_START_2 >= 167
+# define BOOST_PP_ITERATION_2 167
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 166 && BOOST_PP_ITERATION_START_2 >= 166
+# define BOOST_PP_ITERATION_2 166
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 165 && BOOST_PP_ITERATION_START_2 >= 165
+# define BOOST_PP_ITERATION_2 165
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 164 && BOOST_PP_ITERATION_START_2 >= 164
+# define BOOST_PP_ITERATION_2 164
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 163 && BOOST_PP_ITERATION_START_2 >= 163
+# define BOOST_PP_ITERATION_2 163
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 162 && BOOST_PP_ITERATION_START_2 >= 162
+# define BOOST_PP_ITERATION_2 162
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 161 && BOOST_PP_ITERATION_START_2 >= 161
+# define BOOST_PP_ITERATION_2 161
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 160 && BOOST_PP_ITERATION_START_2 >= 160
+# define BOOST_PP_ITERATION_2 160
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 159 && BOOST_PP_ITERATION_START_2 >= 159
+# define BOOST_PP_ITERATION_2 159
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 158 && BOOST_PP_ITERATION_START_2 >= 158
+# define BOOST_PP_ITERATION_2 158
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 157 && BOOST_PP_ITERATION_START_2 >= 157
+# define BOOST_PP_ITERATION_2 157
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 156 && BOOST_PP_ITERATION_START_2 >= 156
+# define BOOST_PP_ITERATION_2 156
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 155 && BOOST_PP_ITERATION_START_2 >= 155
+# define BOOST_PP_ITERATION_2 155
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 154 && BOOST_PP_ITERATION_START_2 >= 154
+# define BOOST_PP_ITERATION_2 154
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 153 && BOOST_PP_ITERATION_START_2 >= 153
+# define BOOST_PP_ITERATION_2 153
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 152 && BOOST_PP_ITERATION_START_2 >= 152
+# define BOOST_PP_ITERATION_2 152
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 151 && BOOST_PP_ITERATION_START_2 >= 151
+# define BOOST_PP_ITERATION_2 151
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 150 && BOOST_PP_ITERATION_START_2 >= 150
+# define BOOST_PP_ITERATION_2 150
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 149 && BOOST_PP_ITERATION_START_2 >= 149
+# define BOOST_PP_ITERATION_2 149
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 148 && BOOST_PP_ITERATION_START_2 >= 148
+# define BOOST_PP_ITERATION_2 148
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 147 && BOOST_PP_ITERATION_START_2 >= 147
+# define BOOST_PP_ITERATION_2 147
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 146 && BOOST_PP_ITERATION_START_2 >= 146
+# define BOOST_PP_ITERATION_2 146
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 145 && BOOST_PP_ITERATION_START_2 >= 145
+# define BOOST_PP_ITERATION_2 145
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 144 && BOOST_PP_ITERATION_START_2 >= 144
+# define BOOST_PP_ITERATION_2 144
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 143 && BOOST_PP_ITERATION_START_2 >= 143
+# define BOOST_PP_ITERATION_2 143
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 142 && BOOST_PP_ITERATION_START_2 >= 142
+# define BOOST_PP_ITERATION_2 142
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 141 && BOOST_PP_ITERATION_START_2 >= 141
+# define BOOST_PP_ITERATION_2 141
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 140 && BOOST_PP_ITERATION_START_2 >= 140
+# define BOOST_PP_ITERATION_2 140
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 139 && BOOST_PP_ITERATION_START_2 >= 139
+# define BOOST_PP_ITERATION_2 139
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 138 && BOOST_PP_ITERATION_START_2 >= 138
+# define BOOST_PP_ITERATION_2 138
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 137 && BOOST_PP_ITERATION_START_2 >= 137
+# define BOOST_PP_ITERATION_2 137
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 136 && BOOST_PP_ITERATION_START_2 >= 136
+# define BOOST_PP_ITERATION_2 136
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 135 && BOOST_PP_ITERATION_START_2 >= 135
+# define BOOST_PP_ITERATION_2 135
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 134 && BOOST_PP_ITERATION_START_2 >= 134
+# define BOOST_PP_ITERATION_2 134
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 133 && BOOST_PP_ITERATION_START_2 >= 133
+# define BOOST_PP_ITERATION_2 133
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 132 && BOOST_PP_ITERATION_START_2 >= 132
+# define BOOST_PP_ITERATION_2 132
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 131 && BOOST_PP_ITERATION_START_2 >= 131
+# define BOOST_PP_ITERATION_2 131
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 130 && BOOST_PP_ITERATION_START_2 >= 130
+# define BOOST_PP_ITERATION_2 130
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 129 && BOOST_PP_ITERATION_START_2 >= 129
+# define BOOST_PP_ITERATION_2 129
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 128 && BOOST_PP_ITERATION_START_2 >= 128
+# define BOOST_PP_ITERATION_2 128
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 127 && BOOST_PP_ITERATION_START_2 >= 127
+# define BOOST_PP_ITERATION_2 127
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 126 && BOOST_PP_ITERATION_START_2 >= 126
+# define BOOST_PP_ITERATION_2 126
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 125 && BOOST_PP_ITERATION_START_2 >= 125
+# define BOOST_PP_ITERATION_2 125
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 124 && BOOST_PP_ITERATION_START_2 >= 124
+# define BOOST_PP_ITERATION_2 124
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 123 && BOOST_PP_ITERATION_START_2 >= 123
+# define BOOST_PP_ITERATION_2 123
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 122 && BOOST_PP_ITERATION_START_2 >= 122
+# define BOOST_PP_ITERATION_2 122
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 121 && BOOST_PP_ITERATION_START_2 >= 121
+# define BOOST_PP_ITERATION_2 121
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 120 && BOOST_PP_ITERATION_START_2 >= 120
+# define BOOST_PP_ITERATION_2 120
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 119 && BOOST_PP_ITERATION_START_2 >= 119
+# define BOOST_PP_ITERATION_2 119
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 118 && BOOST_PP_ITERATION_START_2 >= 118
+# define BOOST_PP_ITERATION_2 118
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 117 && BOOST_PP_ITERATION_START_2 >= 117
+# define BOOST_PP_ITERATION_2 117
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 116 && BOOST_PP_ITERATION_START_2 >= 116
+# define BOOST_PP_ITERATION_2 116
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 115 && BOOST_PP_ITERATION_START_2 >= 115
+# define BOOST_PP_ITERATION_2 115
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 114 && BOOST_PP_ITERATION_START_2 >= 114
+# define BOOST_PP_ITERATION_2 114
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 113 && BOOST_PP_ITERATION_START_2 >= 113
+# define BOOST_PP_ITERATION_2 113
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 112 && BOOST_PP_ITERATION_START_2 >= 112
+# define BOOST_PP_ITERATION_2 112
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 111 && BOOST_PP_ITERATION_START_2 >= 111
+# define BOOST_PP_ITERATION_2 111
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 110 && BOOST_PP_ITERATION_START_2 >= 110
+# define BOOST_PP_ITERATION_2 110
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 109 && BOOST_PP_ITERATION_START_2 >= 109
+# define BOOST_PP_ITERATION_2 109
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 108 && BOOST_PP_ITERATION_START_2 >= 108
+# define BOOST_PP_ITERATION_2 108
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 107 && BOOST_PP_ITERATION_START_2 >= 107
+# define BOOST_PP_ITERATION_2 107
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 106 && BOOST_PP_ITERATION_START_2 >= 106
+# define BOOST_PP_ITERATION_2 106
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 105 && BOOST_PP_ITERATION_START_2 >= 105
+# define BOOST_PP_ITERATION_2 105
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 104 && BOOST_PP_ITERATION_START_2 >= 104
+# define BOOST_PP_ITERATION_2 104
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 103 && BOOST_PP_ITERATION_START_2 >= 103
+# define BOOST_PP_ITERATION_2 103
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 102 && BOOST_PP_ITERATION_START_2 >= 102
+# define BOOST_PP_ITERATION_2 102
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 101 && BOOST_PP_ITERATION_START_2 >= 101
+# define BOOST_PP_ITERATION_2 101
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 100 && BOOST_PP_ITERATION_START_2 >= 100
+# define BOOST_PP_ITERATION_2 100
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 99 && BOOST_PP_ITERATION_START_2 >= 99
+# define BOOST_PP_ITERATION_2 99
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 98 && BOOST_PP_ITERATION_START_2 >= 98
+# define BOOST_PP_ITERATION_2 98
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 97 && BOOST_PP_ITERATION_START_2 >= 97
+# define BOOST_PP_ITERATION_2 97
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 96 && BOOST_PP_ITERATION_START_2 >= 96
+# define BOOST_PP_ITERATION_2 96
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 95 && BOOST_PP_ITERATION_START_2 >= 95
+# define BOOST_PP_ITERATION_2 95
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 94 && BOOST_PP_ITERATION_START_2 >= 94
+# define BOOST_PP_ITERATION_2 94
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 93 && BOOST_PP_ITERATION_START_2 >= 93
+# define BOOST_PP_ITERATION_2 93
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 92 && BOOST_PP_ITERATION_START_2 >= 92
+# define BOOST_PP_ITERATION_2 92
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 91 && BOOST_PP_ITERATION_START_2 >= 91
+# define BOOST_PP_ITERATION_2 91
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 90 && BOOST_PP_ITERATION_START_2 >= 90
+# define BOOST_PP_ITERATION_2 90
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 89 && BOOST_PP_ITERATION_START_2 >= 89
+# define BOOST_PP_ITERATION_2 89
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 88 && BOOST_PP_ITERATION_START_2 >= 88
+# define BOOST_PP_ITERATION_2 88
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 87 && BOOST_PP_ITERATION_START_2 >= 87
+# define BOOST_PP_ITERATION_2 87
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 86 && BOOST_PP_ITERATION_START_2 >= 86
+# define BOOST_PP_ITERATION_2 86
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 85 && BOOST_PP_ITERATION_START_2 >= 85
+# define BOOST_PP_ITERATION_2 85
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 84 && BOOST_PP_ITERATION_START_2 >= 84
+# define BOOST_PP_ITERATION_2 84
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 83 && BOOST_PP_ITERATION_START_2 >= 83
+# define BOOST_PP_ITERATION_2 83
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 82 && BOOST_PP_ITERATION_START_2 >= 82
+# define BOOST_PP_ITERATION_2 82
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 81 && BOOST_PP_ITERATION_START_2 >= 81
+# define BOOST_PP_ITERATION_2 81
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 80 && BOOST_PP_ITERATION_START_2 >= 80
+# define BOOST_PP_ITERATION_2 80
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 79 && BOOST_PP_ITERATION_START_2 >= 79
+# define BOOST_PP_ITERATION_2 79
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 78 && BOOST_PP_ITERATION_START_2 >= 78
+# define BOOST_PP_ITERATION_2 78
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 77 && BOOST_PP_ITERATION_START_2 >= 77
+# define BOOST_PP_ITERATION_2 77
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 76 && BOOST_PP_ITERATION_START_2 >= 76
+# define BOOST_PP_ITERATION_2 76
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 75 && BOOST_PP_ITERATION_START_2 >= 75
+# define BOOST_PP_ITERATION_2 75
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 74 && BOOST_PP_ITERATION_START_2 >= 74
+# define BOOST_PP_ITERATION_2 74
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 73 && BOOST_PP_ITERATION_START_2 >= 73
+# define BOOST_PP_ITERATION_2 73
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 72 && BOOST_PP_ITERATION_START_2 >= 72
+# define BOOST_PP_ITERATION_2 72
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 71 && BOOST_PP_ITERATION_START_2 >= 71
+# define BOOST_PP_ITERATION_2 71
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 70 && BOOST_PP_ITERATION_START_2 >= 70
+# define BOOST_PP_ITERATION_2 70
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 69 && BOOST_PP_ITERATION_START_2 >= 69
+# define BOOST_PP_ITERATION_2 69
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 68 && BOOST_PP_ITERATION_START_2 >= 68
+# define BOOST_PP_ITERATION_2 68
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 67 && BOOST_PP_ITERATION_START_2 >= 67
+# define BOOST_PP_ITERATION_2 67
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 66 && BOOST_PP_ITERATION_START_2 >= 66
+# define BOOST_PP_ITERATION_2 66
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 65 && BOOST_PP_ITERATION_START_2 >= 65
+# define BOOST_PP_ITERATION_2 65
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 64 && BOOST_PP_ITERATION_START_2 >= 64
+# define BOOST_PP_ITERATION_2 64
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 63 && BOOST_PP_ITERATION_START_2 >= 63
+# define BOOST_PP_ITERATION_2 63
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 62 && BOOST_PP_ITERATION_START_2 >= 62
+# define BOOST_PP_ITERATION_2 62
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 61 && BOOST_PP_ITERATION_START_2 >= 61
+# define BOOST_PP_ITERATION_2 61
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 60 && BOOST_PP_ITERATION_START_2 >= 60
+# define BOOST_PP_ITERATION_2 60
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 59 && BOOST_PP_ITERATION_START_2 >= 59
+# define BOOST_PP_ITERATION_2 59
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 58 && BOOST_PP_ITERATION_START_2 >= 58
+# define BOOST_PP_ITERATION_2 58
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 57 && BOOST_PP_ITERATION_START_2 >= 57
+# define BOOST_PP_ITERATION_2 57
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 56 && BOOST_PP_ITERATION_START_2 >= 56
+# define BOOST_PP_ITERATION_2 56
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 55 && BOOST_PP_ITERATION_START_2 >= 55
+# define BOOST_PP_ITERATION_2 55
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 54 && BOOST_PP_ITERATION_START_2 >= 54
+# define BOOST_PP_ITERATION_2 54
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 53 && BOOST_PP_ITERATION_START_2 >= 53
+# define BOOST_PP_ITERATION_2 53
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 52 && BOOST_PP_ITERATION_START_2 >= 52
+# define BOOST_PP_ITERATION_2 52
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 51 && BOOST_PP_ITERATION_START_2 >= 51
+# define BOOST_PP_ITERATION_2 51
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 50 && BOOST_PP_ITERATION_START_2 >= 50
+# define BOOST_PP_ITERATION_2 50
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 49 && BOOST_PP_ITERATION_START_2 >= 49
+# define BOOST_PP_ITERATION_2 49
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 48 && BOOST_PP_ITERATION_START_2 >= 48
+# define BOOST_PP_ITERATION_2 48
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 47 && BOOST_PP_ITERATION_START_2 >= 47
+# define BOOST_PP_ITERATION_2 47
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 46 && BOOST_PP_ITERATION_START_2 >= 46
+# define BOOST_PP_ITERATION_2 46
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 45 && BOOST_PP_ITERATION_START_2 >= 45
+# define BOOST_PP_ITERATION_2 45
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 44 && BOOST_PP_ITERATION_START_2 >= 44
+# define BOOST_PP_ITERATION_2 44
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 43 && BOOST_PP_ITERATION_START_2 >= 43
+# define BOOST_PP_ITERATION_2 43
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 42 && BOOST_PP_ITERATION_START_2 >= 42
+# define BOOST_PP_ITERATION_2 42
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 41 && BOOST_PP_ITERATION_START_2 >= 41
+# define BOOST_PP_ITERATION_2 41
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 40 && BOOST_PP_ITERATION_START_2 >= 40
+# define BOOST_PP_ITERATION_2 40
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 39 && BOOST_PP_ITERATION_START_2 >= 39
+# define BOOST_PP_ITERATION_2 39
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 38 && BOOST_PP_ITERATION_START_2 >= 38
+# define BOOST_PP_ITERATION_2 38
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 37 && BOOST_PP_ITERATION_START_2 >= 37
+# define BOOST_PP_ITERATION_2 37
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 36 && BOOST_PP_ITERATION_START_2 >= 36
+# define BOOST_PP_ITERATION_2 36
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 35 && BOOST_PP_ITERATION_START_2 >= 35
+# define BOOST_PP_ITERATION_2 35
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 34 && BOOST_PP_ITERATION_START_2 >= 34
+# define BOOST_PP_ITERATION_2 34
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 33 && BOOST_PP_ITERATION_START_2 >= 33
+# define BOOST_PP_ITERATION_2 33
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 32 && BOOST_PP_ITERATION_START_2 >= 32
+# define BOOST_PP_ITERATION_2 32
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 31 && BOOST_PP_ITERATION_START_2 >= 31
+# define BOOST_PP_ITERATION_2 31
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 30 && BOOST_PP_ITERATION_START_2 >= 30
+# define BOOST_PP_ITERATION_2 30
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 29 && BOOST_PP_ITERATION_START_2 >= 29
+# define BOOST_PP_ITERATION_2 29
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 28 && BOOST_PP_ITERATION_START_2 >= 28
+# define BOOST_PP_ITERATION_2 28
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 27 && BOOST_PP_ITERATION_START_2 >= 27
+# define BOOST_PP_ITERATION_2 27
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 26 && BOOST_PP_ITERATION_START_2 >= 26
+# define BOOST_PP_ITERATION_2 26
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 25 && BOOST_PP_ITERATION_START_2 >= 25
+# define BOOST_PP_ITERATION_2 25
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 24 && BOOST_PP_ITERATION_START_2 >= 24
+# define BOOST_PP_ITERATION_2 24
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 23 && BOOST_PP_ITERATION_START_2 >= 23
+# define BOOST_PP_ITERATION_2 23
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 22 && BOOST_PP_ITERATION_START_2 >= 22
+# define BOOST_PP_ITERATION_2 22
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 21 && BOOST_PP_ITERATION_START_2 >= 21
+# define BOOST_PP_ITERATION_2 21
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 20 && BOOST_PP_ITERATION_START_2 >= 20
+# define BOOST_PP_ITERATION_2 20
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 19 && BOOST_PP_ITERATION_START_2 >= 19
+# define BOOST_PP_ITERATION_2 19
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 18 && BOOST_PP_ITERATION_START_2 >= 18
+# define BOOST_PP_ITERATION_2 18
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 17 && BOOST_PP_ITERATION_START_2 >= 17
+# define BOOST_PP_ITERATION_2 17
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 16 && BOOST_PP_ITERATION_START_2 >= 16
+# define BOOST_PP_ITERATION_2 16
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 15 && BOOST_PP_ITERATION_START_2 >= 15
+# define BOOST_PP_ITERATION_2 15
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 14 && BOOST_PP_ITERATION_START_2 >= 14
+# define BOOST_PP_ITERATION_2 14
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 13 && BOOST_PP_ITERATION_START_2 >= 13
+# define BOOST_PP_ITERATION_2 13
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 12 && BOOST_PP_ITERATION_START_2 >= 12
+# define BOOST_PP_ITERATION_2 12
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 11 && BOOST_PP_ITERATION_START_2 >= 11
+# define BOOST_PP_ITERATION_2 11
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 10 && BOOST_PP_ITERATION_START_2 >= 10
+# define BOOST_PP_ITERATION_2 10
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 9 && BOOST_PP_ITERATION_START_2 >= 9
+# define BOOST_PP_ITERATION_2 9
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 8 && BOOST_PP_ITERATION_START_2 >= 8
+# define BOOST_PP_ITERATION_2 8
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 7 && BOOST_PP_ITERATION_START_2 >= 7
+# define BOOST_PP_ITERATION_2 7
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 6 && BOOST_PP_ITERATION_START_2 >= 6
+# define BOOST_PP_ITERATION_2 6
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 5 && BOOST_PP_ITERATION_START_2 >= 5
+# define BOOST_PP_ITERATION_2 5
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 4 && BOOST_PP_ITERATION_START_2 >= 4
+# define BOOST_PP_ITERATION_2 4
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 3 && BOOST_PP_ITERATION_START_2 >= 3
+# define BOOST_PP_ITERATION_2 3
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 2 && BOOST_PP_ITERATION_START_2 >= 2
+# define BOOST_PP_ITERATION_2 2
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 1 && BOOST_PP_ITERATION_START_2 >= 1
+# define BOOST_PP_ITERATION_2 1
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
+# if BOOST_PP_ITERATION_FINISH_2 <= 0 && BOOST_PP_ITERATION_START_2 >= 0
+# define BOOST_PP_ITERATION_2 0
+# include BOOST_PP_FILENAME_2
+# undef BOOST_PP_ITERATION_2
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp
new file mode 100644
index 0000000..0a65514
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_ITERATION_FINISH_3 <= 256 && BOOST_PP_ITERATION_START_3 >= 256
+# define BOOST_PP_ITERATION_3 256
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 255 && BOOST_PP_ITERATION_START_3 >= 255
+# define BOOST_PP_ITERATION_3 255
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 254 && BOOST_PP_ITERATION_START_3 >= 254
+# define BOOST_PP_ITERATION_3 254
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 253 && BOOST_PP_ITERATION_START_3 >= 253
+# define BOOST_PP_ITERATION_3 253
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 252 && BOOST_PP_ITERATION_START_3 >= 252
+# define BOOST_PP_ITERATION_3 252
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 251 && BOOST_PP_ITERATION_START_3 >= 251
+# define BOOST_PP_ITERATION_3 251
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 250 && BOOST_PP_ITERATION_START_3 >= 250
+# define BOOST_PP_ITERATION_3 250
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 249 && BOOST_PP_ITERATION_START_3 >= 249
+# define BOOST_PP_ITERATION_3 249
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 248 && BOOST_PP_ITERATION_START_3 >= 248
+# define BOOST_PP_ITERATION_3 248
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 247 && BOOST_PP_ITERATION_START_3 >= 247
+# define BOOST_PP_ITERATION_3 247
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 246 && BOOST_PP_ITERATION_START_3 >= 246
+# define BOOST_PP_ITERATION_3 246
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 245 && BOOST_PP_ITERATION_START_3 >= 245
+# define BOOST_PP_ITERATION_3 245
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 244 && BOOST_PP_ITERATION_START_3 >= 244
+# define BOOST_PP_ITERATION_3 244
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 243 && BOOST_PP_ITERATION_START_3 >= 243
+# define BOOST_PP_ITERATION_3 243
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 242 && BOOST_PP_ITERATION_START_3 >= 242
+# define BOOST_PP_ITERATION_3 242
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 241 && BOOST_PP_ITERATION_START_3 >= 241
+# define BOOST_PP_ITERATION_3 241
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 240 && BOOST_PP_ITERATION_START_3 >= 240
+# define BOOST_PP_ITERATION_3 240
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 239 && BOOST_PP_ITERATION_START_3 >= 239
+# define BOOST_PP_ITERATION_3 239
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 238 && BOOST_PP_ITERATION_START_3 >= 238
+# define BOOST_PP_ITERATION_3 238
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 237 && BOOST_PP_ITERATION_START_3 >= 237
+# define BOOST_PP_ITERATION_3 237
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 236 && BOOST_PP_ITERATION_START_3 >= 236
+# define BOOST_PP_ITERATION_3 236
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 235 && BOOST_PP_ITERATION_START_3 >= 235
+# define BOOST_PP_ITERATION_3 235
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 234 && BOOST_PP_ITERATION_START_3 >= 234
+# define BOOST_PP_ITERATION_3 234
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 233 && BOOST_PP_ITERATION_START_3 >= 233
+# define BOOST_PP_ITERATION_3 233
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 232 && BOOST_PP_ITERATION_START_3 >= 232
+# define BOOST_PP_ITERATION_3 232
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 231 && BOOST_PP_ITERATION_START_3 >= 231
+# define BOOST_PP_ITERATION_3 231
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 230 && BOOST_PP_ITERATION_START_3 >= 230
+# define BOOST_PP_ITERATION_3 230
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 229 && BOOST_PP_ITERATION_START_3 >= 229
+# define BOOST_PP_ITERATION_3 229
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 228 && BOOST_PP_ITERATION_START_3 >= 228
+# define BOOST_PP_ITERATION_3 228
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 227 && BOOST_PP_ITERATION_START_3 >= 227
+# define BOOST_PP_ITERATION_3 227
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 226 && BOOST_PP_ITERATION_START_3 >= 226
+# define BOOST_PP_ITERATION_3 226
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 225 && BOOST_PP_ITERATION_START_3 >= 225
+# define BOOST_PP_ITERATION_3 225
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 224 && BOOST_PP_ITERATION_START_3 >= 224
+# define BOOST_PP_ITERATION_3 224
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 223 && BOOST_PP_ITERATION_START_3 >= 223
+# define BOOST_PP_ITERATION_3 223
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 222 && BOOST_PP_ITERATION_START_3 >= 222
+# define BOOST_PP_ITERATION_3 222
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 221 && BOOST_PP_ITERATION_START_3 >= 221
+# define BOOST_PP_ITERATION_3 221
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 220 && BOOST_PP_ITERATION_START_3 >= 220
+# define BOOST_PP_ITERATION_3 220
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 219 && BOOST_PP_ITERATION_START_3 >= 219
+# define BOOST_PP_ITERATION_3 219
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 218 && BOOST_PP_ITERATION_START_3 >= 218
+# define BOOST_PP_ITERATION_3 218
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 217 && BOOST_PP_ITERATION_START_3 >= 217
+# define BOOST_PP_ITERATION_3 217
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 216 && BOOST_PP_ITERATION_START_3 >= 216
+# define BOOST_PP_ITERATION_3 216
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 215 && BOOST_PP_ITERATION_START_3 >= 215
+# define BOOST_PP_ITERATION_3 215
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 214 && BOOST_PP_ITERATION_START_3 >= 214
+# define BOOST_PP_ITERATION_3 214
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 213 && BOOST_PP_ITERATION_START_3 >= 213
+# define BOOST_PP_ITERATION_3 213
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 212 && BOOST_PP_ITERATION_START_3 >= 212
+# define BOOST_PP_ITERATION_3 212
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 211 && BOOST_PP_ITERATION_START_3 >= 211
+# define BOOST_PP_ITERATION_3 211
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 210 && BOOST_PP_ITERATION_START_3 >= 210
+# define BOOST_PP_ITERATION_3 210
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 209 && BOOST_PP_ITERATION_START_3 >= 209
+# define BOOST_PP_ITERATION_3 209
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 208 && BOOST_PP_ITERATION_START_3 >= 208
+# define BOOST_PP_ITERATION_3 208
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 207 && BOOST_PP_ITERATION_START_3 >= 207
+# define BOOST_PP_ITERATION_3 207
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 206 && BOOST_PP_ITERATION_START_3 >= 206
+# define BOOST_PP_ITERATION_3 206
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 205 && BOOST_PP_ITERATION_START_3 >= 205
+# define BOOST_PP_ITERATION_3 205
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 204 && BOOST_PP_ITERATION_START_3 >= 204
+# define BOOST_PP_ITERATION_3 204
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 203 && BOOST_PP_ITERATION_START_3 >= 203
+# define BOOST_PP_ITERATION_3 203
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 202 && BOOST_PP_ITERATION_START_3 >= 202
+# define BOOST_PP_ITERATION_3 202
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 201 && BOOST_PP_ITERATION_START_3 >= 201
+# define BOOST_PP_ITERATION_3 201
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 200 && BOOST_PP_ITERATION_START_3 >= 200
+# define BOOST_PP_ITERATION_3 200
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 199 && BOOST_PP_ITERATION_START_3 >= 199
+# define BOOST_PP_ITERATION_3 199
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 198 && BOOST_PP_ITERATION_START_3 >= 198
+# define BOOST_PP_ITERATION_3 198
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 197 && BOOST_PP_ITERATION_START_3 >= 197
+# define BOOST_PP_ITERATION_3 197
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 196 && BOOST_PP_ITERATION_START_3 >= 196
+# define BOOST_PP_ITERATION_3 196
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 195 && BOOST_PP_ITERATION_START_3 >= 195
+# define BOOST_PP_ITERATION_3 195
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 194 && BOOST_PP_ITERATION_START_3 >= 194
+# define BOOST_PP_ITERATION_3 194
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 193 && BOOST_PP_ITERATION_START_3 >= 193
+# define BOOST_PP_ITERATION_3 193
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 192 && BOOST_PP_ITERATION_START_3 >= 192
+# define BOOST_PP_ITERATION_3 192
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 191 && BOOST_PP_ITERATION_START_3 >= 191
+# define BOOST_PP_ITERATION_3 191
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 190 && BOOST_PP_ITERATION_START_3 >= 190
+# define BOOST_PP_ITERATION_3 190
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 189 && BOOST_PP_ITERATION_START_3 >= 189
+# define BOOST_PP_ITERATION_3 189
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 188 && BOOST_PP_ITERATION_START_3 >= 188
+# define BOOST_PP_ITERATION_3 188
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 187 && BOOST_PP_ITERATION_START_3 >= 187
+# define BOOST_PP_ITERATION_3 187
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 186 && BOOST_PP_ITERATION_START_3 >= 186
+# define BOOST_PP_ITERATION_3 186
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 185 && BOOST_PP_ITERATION_START_3 >= 185
+# define BOOST_PP_ITERATION_3 185
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 184 && BOOST_PP_ITERATION_START_3 >= 184
+# define BOOST_PP_ITERATION_3 184
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 183 && BOOST_PP_ITERATION_START_3 >= 183
+# define BOOST_PP_ITERATION_3 183
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 182 && BOOST_PP_ITERATION_START_3 >= 182
+# define BOOST_PP_ITERATION_3 182
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 181 && BOOST_PP_ITERATION_START_3 >= 181
+# define BOOST_PP_ITERATION_3 181
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 180 && BOOST_PP_ITERATION_START_3 >= 180
+# define BOOST_PP_ITERATION_3 180
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 179 && BOOST_PP_ITERATION_START_3 >= 179
+# define BOOST_PP_ITERATION_3 179
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 178 && BOOST_PP_ITERATION_START_3 >= 178
+# define BOOST_PP_ITERATION_3 178
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 177 && BOOST_PP_ITERATION_START_3 >= 177
+# define BOOST_PP_ITERATION_3 177
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 176 && BOOST_PP_ITERATION_START_3 >= 176
+# define BOOST_PP_ITERATION_3 176
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 175 && BOOST_PP_ITERATION_START_3 >= 175
+# define BOOST_PP_ITERATION_3 175
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 174 && BOOST_PP_ITERATION_START_3 >= 174
+# define BOOST_PP_ITERATION_3 174
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 173 && BOOST_PP_ITERATION_START_3 >= 173
+# define BOOST_PP_ITERATION_3 173
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 172 && BOOST_PP_ITERATION_START_3 >= 172
+# define BOOST_PP_ITERATION_3 172
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 171 && BOOST_PP_ITERATION_START_3 >= 171
+# define BOOST_PP_ITERATION_3 171
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 170 && BOOST_PP_ITERATION_START_3 >= 170
+# define BOOST_PP_ITERATION_3 170
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 169 && BOOST_PP_ITERATION_START_3 >= 169
+# define BOOST_PP_ITERATION_3 169
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 168 && BOOST_PP_ITERATION_START_3 >= 168
+# define BOOST_PP_ITERATION_3 168
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 167 && BOOST_PP_ITERATION_START_3 >= 167
+# define BOOST_PP_ITERATION_3 167
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 166 && BOOST_PP_ITERATION_START_3 >= 166
+# define BOOST_PP_ITERATION_3 166
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 165 && BOOST_PP_ITERATION_START_3 >= 165
+# define BOOST_PP_ITERATION_3 165
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 164 && BOOST_PP_ITERATION_START_3 >= 164
+# define BOOST_PP_ITERATION_3 164
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 163 && BOOST_PP_ITERATION_START_3 >= 163
+# define BOOST_PP_ITERATION_3 163
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 162 && BOOST_PP_ITERATION_START_3 >= 162
+# define BOOST_PP_ITERATION_3 162
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 161 && BOOST_PP_ITERATION_START_3 >= 161
+# define BOOST_PP_ITERATION_3 161
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 160 && BOOST_PP_ITERATION_START_3 >= 160
+# define BOOST_PP_ITERATION_3 160
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 159 && BOOST_PP_ITERATION_START_3 >= 159
+# define BOOST_PP_ITERATION_3 159
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 158 && BOOST_PP_ITERATION_START_3 >= 158
+# define BOOST_PP_ITERATION_3 158
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 157 && BOOST_PP_ITERATION_START_3 >= 157
+# define BOOST_PP_ITERATION_3 157
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 156 && BOOST_PP_ITERATION_START_3 >= 156
+# define BOOST_PP_ITERATION_3 156
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 155 && BOOST_PP_ITERATION_START_3 >= 155
+# define BOOST_PP_ITERATION_3 155
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 154 && BOOST_PP_ITERATION_START_3 >= 154
+# define BOOST_PP_ITERATION_3 154
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 153 && BOOST_PP_ITERATION_START_3 >= 153
+# define BOOST_PP_ITERATION_3 153
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 152 && BOOST_PP_ITERATION_START_3 >= 152
+# define BOOST_PP_ITERATION_3 152
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 151 && BOOST_PP_ITERATION_START_3 >= 151
+# define BOOST_PP_ITERATION_3 151
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 150 && BOOST_PP_ITERATION_START_3 >= 150
+# define BOOST_PP_ITERATION_3 150
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 149 && BOOST_PP_ITERATION_START_3 >= 149
+# define BOOST_PP_ITERATION_3 149
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 148 && BOOST_PP_ITERATION_START_3 >= 148
+# define BOOST_PP_ITERATION_3 148
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 147 && BOOST_PP_ITERATION_START_3 >= 147
+# define BOOST_PP_ITERATION_3 147
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 146 && BOOST_PP_ITERATION_START_3 >= 146
+# define BOOST_PP_ITERATION_3 146
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 145 && BOOST_PP_ITERATION_START_3 >= 145
+# define BOOST_PP_ITERATION_3 145
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 144 && BOOST_PP_ITERATION_START_3 >= 144
+# define BOOST_PP_ITERATION_3 144
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 143 && BOOST_PP_ITERATION_START_3 >= 143
+# define BOOST_PP_ITERATION_3 143
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 142 && BOOST_PP_ITERATION_START_3 >= 142
+# define BOOST_PP_ITERATION_3 142
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 141 && BOOST_PP_ITERATION_START_3 >= 141
+# define BOOST_PP_ITERATION_3 141
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 140 && BOOST_PP_ITERATION_START_3 >= 140
+# define BOOST_PP_ITERATION_3 140
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 139 && BOOST_PP_ITERATION_START_3 >= 139
+# define BOOST_PP_ITERATION_3 139
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 138 && BOOST_PP_ITERATION_START_3 >= 138
+# define BOOST_PP_ITERATION_3 138
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 137 && BOOST_PP_ITERATION_START_3 >= 137
+# define BOOST_PP_ITERATION_3 137
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 136 && BOOST_PP_ITERATION_START_3 >= 136
+# define BOOST_PP_ITERATION_3 136
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 135 && BOOST_PP_ITERATION_START_3 >= 135
+# define BOOST_PP_ITERATION_3 135
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 134 && BOOST_PP_ITERATION_START_3 >= 134
+# define BOOST_PP_ITERATION_3 134
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 133 && BOOST_PP_ITERATION_START_3 >= 133
+# define BOOST_PP_ITERATION_3 133
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 132 && BOOST_PP_ITERATION_START_3 >= 132
+# define BOOST_PP_ITERATION_3 132
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 131 && BOOST_PP_ITERATION_START_3 >= 131
+# define BOOST_PP_ITERATION_3 131
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 130 && BOOST_PP_ITERATION_START_3 >= 130
+# define BOOST_PP_ITERATION_3 130
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 129 && BOOST_PP_ITERATION_START_3 >= 129
+# define BOOST_PP_ITERATION_3 129
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 128 && BOOST_PP_ITERATION_START_3 >= 128
+# define BOOST_PP_ITERATION_3 128
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 127 && BOOST_PP_ITERATION_START_3 >= 127
+# define BOOST_PP_ITERATION_3 127
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 126 && BOOST_PP_ITERATION_START_3 >= 126
+# define BOOST_PP_ITERATION_3 126
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 125 && BOOST_PP_ITERATION_START_3 >= 125
+# define BOOST_PP_ITERATION_3 125
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 124 && BOOST_PP_ITERATION_START_3 >= 124
+# define BOOST_PP_ITERATION_3 124
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 123 && BOOST_PP_ITERATION_START_3 >= 123
+# define BOOST_PP_ITERATION_3 123
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 122 && BOOST_PP_ITERATION_START_3 >= 122
+# define BOOST_PP_ITERATION_3 122
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 121 && BOOST_PP_ITERATION_START_3 >= 121
+# define BOOST_PP_ITERATION_3 121
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 120 && BOOST_PP_ITERATION_START_3 >= 120
+# define BOOST_PP_ITERATION_3 120
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 119 && BOOST_PP_ITERATION_START_3 >= 119
+# define BOOST_PP_ITERATION_3 119
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 118 && BOOST_PP_ITERATION_START_3 >= 118
+# define BOOST_PP_ITERATION_3 118
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 117 && BOOST_PP_ITERATION_START_3 >= 117
+# define BOOST_PP_ITERATION_3 117
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 116 && BOOST_PP_ITERATION_START_3 >= 116
+# define BOOST_PP_ITERATION_3 116
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 115 && BOOST_PP_ITERATION_START_3 >= 115
+# define BOOST_PP_ITERATION_3 115
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 114 && BOOST_PP_ITERATION_START_3 >= 114
+# define BOOST_PP_ITERATION_3 114
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 113 && BOOST_PP_ITERATION_START_3 >= 113
+# define BOOST_PP_ITERATION_3 113
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 112 && BOOST_PP_ITERATION_START_3 >= 112
+# define BOOST_PP_ITERATION_3 112
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 111 && BOOST_PP_ITERATION_START_3 >= 111
+# define BOOST_PP_ITERATION_3 111
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 110 && BOOST_PP_ITERATION_START_3 >= 110
+# define BOOST_PP_ITERATION_3 110
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 109 && BOOST_PP_ITERATION_START_3 >= 109
+# define BOOST_PP_ITERATION_3 109
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 108 && BOOST_PP_ITERATION_START_3 >= 108
+# define BOOST_PP_ITERATION_3 108
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 107 && BOOST_PP_ITERATION_START_3 >= 107
+# define BOOST_PP_ITERATION_3 107
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 106 && BOOST_PP_ITERATION_START_3 >= 106
+# define BOOST_PP_ITERATION_3 106
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 105 && BOOST_PP_ITERATION_START_3 >= 105
+# define BOOST_PP_ITERATION_3 105
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 104 && BOOST_PP_ITERATION_START_3 >= 104
+# define BOOST_PP_ITERATION_3 104
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 103 && BOOST_PP_ITERATION_START_3 >= 103
+# define BOOST_PP_ITERATION_3 103
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 102 && BOOST_PP_ITERATION_START_3 >= 102
+# define BOOST_PP_ITERATION_3 102
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 101 && BOOST_PP_ITERATION_START_3 >= 101
+# define BOOST_PP_ITERATION_3 101
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 100 && BOOST_PP_ITERATION_START_3 >= 100
+# define BOOST_PP_ITERATION_3 100
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 99 && BOOST_PP_ITERATION_START_3 >= 99
+# define BOOST_PP_ITERATION_3 99
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 98 && BOOST_PP_ITERATION_START_3 >= 98
+# define BOOST_PP_ITERATION_3 98
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 97 && BOOST_PP_ITERATION_START_3 >= 97
+# define BOOST_PP_ITERATION_3 97
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 96 && BOOST_PP_ITERATION_START_3 >= 96
+# define BOOST_PP_ITERATION_3 96
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 95 && BOOST_PP_ITERATION_START_3 >= 95
+# define BOOST_PP_ITERATION_3 95
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 94 && BOOST_PP_ITERATION_START_3 >= 94
+# define BOOST_PP_ITERATION_3 94
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 93 && BOOST_PP_ITERATION_START_3 >= 93
+# define BOOST_PP_ITERATION_3 93
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 92 && BOOST_PP_ITERATION_START_3 >= 92
+# define BOOST_PP_ITERATION_3 92
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 91 && BOOST_PP_ITERATION_START_3 >= 91
+# define BOOST_PP_ITERATION_3 91
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 90 && BOOST_PP_ITERATION_START_3 >= 90
+# define BOOST_PP_ITERATION_3 90
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 89 && BOOST_PP_ITERATION_START_3 >= 89
+# define BOOST_PP_ITERATION_3 89
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 88 && BOOST_PP_ITERATION_START_3 >= 88
+# define BOOST_PP_ITERATION_3 88
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 87 && BOOST_PP_ITERATION_START_3 >= 87
+# define BOOST_PP_ITERATION_3 87
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 86 && BOOST_PP_ITERATION_START_3 >= 86
+# define BOOST_PP_ITERATION_3 86
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 85 && BOOST_PP_ITERATION_START_3 >= 85
+# define BOOST_PP_ITERATION_3 85
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 84 && BOOST_PP_ITERATION_START_3 >= 84
+# define BOOST_PP_ITERATION_3 84
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 83 && BOOST_PP_ITERATION_START_3 >= 83
+# define BOOST_PP_ITERATION_3 83
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 82 && BOOST_PP_ITERATION_START_3 >= 82
+# define BOOST_PP_ITERATION_3 82
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 81 && BOOST_PP_ITERATION_START_3 >= 81
+# define BOOST_PP_ITERATION_3 81
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 80 && BOOST_PP_ITERATION_START_3 >= 80
+# define BOOST_PP_ITERATION_3 80
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 79 && BOOST_PP_ITERATION_START_3 >= 79
+# define BOOST_PP_ITERATION_3 79
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 78 && BOOST_PP_ITERATION_START_3 >= 78
+# define BOOST_PP_ITERATION_3 78
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 77 && BOOST_PP_ITERATION_START_3 >= 77
+# define BOOST_PP_ITERATION_3 77
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 76 && BOOST_PP_ITERATION_START_3 >= 76
+# define BOOST_PP_ITERATION_3 76
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 75 && BOOST_PP_ITERATION_START_3 >= 75
+# define BOOST_PP_ITERATION_3 75
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 74 && BOOST_PP_ITERATION_START_3 >= 74
+# define BOOST_PP_ITERATION_3 74
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 73 && BOOST_PP_ITERATION_START_3 >= 73
+# define BOOST_PP_ITERATION_3 73
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 72 && BOOST_PP_ITERATION_START_3 >= 72
+# define BOOST_PP_ITERATION_3 72
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 71 && BOOST_PP_ITERATION_START_3 >= 71
+# define BOOST_PP_ITERATION_3 71
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 70 && BOOST_PP_ITERATION_START_3 >= 70
+# define BOOST_PP_ITERATION_3 70
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 69 && BOOST_PP_ITERATION_START_3 >= 69
+# define BOOST_PP_ITERATION_3 69
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 68 && BOOST_PP_ITERATION_START_3 >= 68
+# define BOOST_PP_ITERATION_3 68
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 67 && BOOST_PP_ITERATION_START_3 >= 67
+# define BOOST_PP_ITERATION_3 67
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 66 && BOOST_PP_ITERATION_START_3 >= 66
+# define BOOST_PP_ITERATION_3 66
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 65 && BOOST_PP_ITERATION_START_3 >= 65
+# define BOOST_PP_ITERATION_3 65
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 64 && BOOST_PP_ITERATION_START_3 >= 64
+# define BOOST_PP_ITERATION_3 64
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 63 && BOOST_PP_ITERATION_START_3 >= 63
+# define BOOST_PP_ITERATION_3 63
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 62 && BOOST_PP_ITERATION_START_3 >= 62
+# define BOOST_PP_ITERATION_3 62
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 61 && BOOST_PP_ITERATION_START_3 >= 61
+# define BOOST_PP_ITERATION_3 61
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 60 && BOOST_PP_ITERATION_START_3 >= 60
+# define BOOST_PP_ITERATION_3 60
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 59 && BOOST_PP_ITERATION_START_3 >= 59
+# define BOOST_PP_ITERATION_3 59
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 58 && BOOST_PP_ITERATION_START_3 >= 58
+# define BOOST_PP_ITERATION_3 58
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 57 && BOOST_PP_ITERATION_START_3 >= 57
+# define BOOST_PP_ITERATION_3 57
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 56 && BOOST_PP_ITERATION_START_3 >= 56
+# define BOOST_PP_ITERATION_3 56
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 55 && BOOST_PP_ITERATION_START_3 >= 55
+# define BOOST_PP_ITERATION_3 55
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 54 && BOOST_PP_ITERATION_START_3 >= 54
+# define BOOST_PP_ITERATION_3 54
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 53 && BOOST_PP_ITERATION_START_3 >= 53
+# define BOOST_PP_ITERATION_3 53
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 52 && BOOST_PP_ITERATION_START_3 >= 52
+# define BOOST_PP_ITERATION_3 52
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 51 && BOOST_PP_ITERATION_START_3 >= 51
+# define BOOST_PP_ITERATION_3 51
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 50 && BOOST_PP_ITERATION_START_3 >= 50
+# define BOOST_PP_ITERATION_3 50
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 49 && BOOST_PP_ITERATION_START_3 >= 49
+# define BOOST_PP_ITERATION_3 49
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 48 && BOOST_PP_ITERATION_START_3 >= 48
+# define BOOST_PP_ITERATION_3 48
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 47 && BOOST_PP_ITERATION_START_3 >= 47
+# define BOOST_PP_ITERATION_3 47
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 46 && BOOST_PP_ITERATION_START_3 >= 46
+# define BOOST_PP_ITERATION_3 46
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 45 && BOOST_PP_ITERATION_START_3 >= 45
+# define BOOST_PP_ITERATION_3 45
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 44 && BOOST_PP_ITERATION_START_3 >= 44
+# define BOOST_PP_ITERATION_3 44
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 43 && BOOST_PP_ITERATION_START_3 >= 43
+# define BOOST_PP_ITERATION_3 43
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 42 && BOOST_PP_ITERATION_START_3 >= 42
+# define BOOST_PP_ITERATION_3 42
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 41 && BOOST_PP_ITERATION_START_3 >= 41
+# define BOOST_PP_ITERATION_3 41
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 40 && BOOST_PP_ITERATION_START_3 >= 40
+# define BOOST_PP_ITERATION_3 40
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 39 && BOOST_PP_ITERATION_START_3 >= 39
+# define BOOST_PP_ITERATION_3 39
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 38 && BOOST_PP_ITERATION_START_3 >= 38
+# define BOOST_PP_ITERATION_3 38
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 37 && BOOST_PP_ITERATION_START_3 >= 37
+# define BOOST_PP_ITERATION_3 37
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 36 && BOOST_PP_ITERATION_START_3 >= 36
+# define BOOST_PP_ITERATION_3 36
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 35 && BOOST_PP_ITERATION_START_3 >= 35
+# define BOOST_PP_ITERATION_3 35
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 34 && BOOST_PP_ITERATION_START_3 >= 34
+# define BOOST_PP_ITERATION_3 34
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 33 && BOOST_PP_ITERATION_START_3 >= 33
+# define BOOST_PP_ITERATION_3 33
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 32 && BOOST_PP_ITERATION_START_3 >= 32
+# define BOOST_PP_ITERATION_3 32
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 31 && BOOST_PP_ITERATION_START_3 >= 31
+# define BOOST_PP_ITERATION_3 31
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 30 && BOOST_PP_ITERATION_START_3 >= 30
+# define BOOST_PP_ITERATION_3 30
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 29 && BOOST_PP_ITERATION_START_3 >= 29
+# define BOOST_PP_ITERATION_3 29
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 28 && BOOST_PP_ITERATION_START_3 >= 28
+# define BOOST_PP_ITERATION_3 28
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 27 && BOOST_PP_ITERATION_START_3 >= 27
+# define BOOST_PP_ITERATION_3 27
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 26 && BOOST_PP_ITERATION_START_3 >= 26
+# define BOOST_PP_ITERATION_3 26
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 25 && BOOST_PP_ITERATION_START_3 >= 25
+# define BOOST_PP_ITERATION_3 25
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 24 && BOOST_PP_ITERATION_START_3 >= 24
+# define BOOST_PP_ITERATION_3 24
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 23 && BOOST_PP_ITERATION_START_3 >= 23
+# define BOOST_PP_ITERATION_3 23
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 22 && BOOST_PP_ITERATION_START_3 >= 22
+# define BOOST_PP_ITERATION_3 22
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 21 && BOOST_PP_ITERATION_START_3 >= 21
+# define BOOST_PP_ITERATION_3 21
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 20 && BOOST_PP_ITERATION_START_3 >= 20
+# define BOOST_PP_ITERATION_3 20
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 19 && BOOST_PP_ITERATION_START_3 >= 19
+# define BOOST_PP_ITERATION_3 19
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 18 && BOOST_PP_ITERATION_START_3 >= 18
+# define BOOST_PP_ITERATION_3 18
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 17 && BOOST_PP_ITERATION_START_3 >= 17
+# define BOOST_PP_ITERATION_3 17
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 16 && BOOST_PP_ITERATION_START_3 >= 16
+# define BOOST_PP_ITERATION_3 16
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 15 && BOOST_PP_ITERATION_START_3 >= 15
+# define BOOST_PP_ITERATION_3 15
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 14 && BOOST_PP_ITERATION_START_3 >= 14
+# define BOOST_PP_ITERATION_3 14
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 13 && BOOST_PP_ITERATION_START_3 >= 13
+# define BOOST_PP_ITERATION_3 13
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 12 && BOOST_PP_ITERATION_START_3 >= 12
+# define BOOST_PP_ITERATION_3 12
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 11 && BOOST_PP_ITERATION_START_3 >= 11
+# define BOOST_PP_ITERATION_3 11
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 10 && BOOST_PP_ITERATION_START_3 >= 10
+# define BOOST_PP_ITERATION_3 10
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 9 && BOOST_PP_ITERATION_START_3 >= 9
+# define BOOST_PP_ITERATION_3 9
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 8 && BOOST_PP_ITERATION_START_3 >= 8
+# define BOOST_PP_ITERATION_3 8
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 7 && BOOST_PP_ITERATION_START_3 >= 7
+# define BOOST_PP_ITERATION_3 7
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 6 && BOOST_PP_ITERATION_START_3 >= 6
+# define BOOST_PP_ITERATION_3 6
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 5 && BOOST_PP_ITERATION_START_3 >= 5
+# define BOOST_PP_ITERATION_3 5
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 4 && BOOST_PP_ITERATION_START_3 >= 4
+# define BOOST_PP_ITERATION_3 4
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 3 && BOOST_PP_ITERATION_START_3 >= 3
+# define BOOST_PP_ITERATION_3 3
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 2 && BOOST_PP_ITERATION_START_3 >= 2
+# define BOOST_PP_ITERATION_3 2
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 1 && BOOST_PP_ITERATION_START_3 >= 1
+# define BOOST_PP_ITERATION_3 1
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
+# if BOOST_PP_ITERATION_FINISH_3 <= 0 && BOOST_PP_ITERATION_START_3 >= 0
+# define BOOST_PP_ITERATION_3 0
+# include BOOST_PP_FILENAME_3
+# undef BOOST_PP_ITERATION_3
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp
new file mode 100644
index 0000000..3bcfba0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_ITERATION_FINISH_4 <= 256 && BOOST_PP_ITERATION_START_4 >= 256
+# define BOOST_PP_ITERATION_4 256
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 255 && BOOST_PP_ITERATION_START_4 >= 255
+# define BOOST_PP_ITERATION_4 255
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 254 && BOOST_PP_ITERATION_START_4 >= 254
+# define BOOST_PP_ITERATION_4 254
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 253 && BOOST_PP_ITERATION_START_4 >= 253
+# define BOOST_PP_ITERATION_4 253
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 252 && BOOST_PP_ITERATION_START_4 >= 252
+# define BOOST_PP_ITERATION_4 252
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 251 && BOOST_PP_ITERATION_START_4 >= 251
+# define BOOST_PP_ITERATION_4 251
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 250 && BOOST_PP_ITERATION_START_4 >= 250
+# define BOOST_PP_ITERATION_4 250
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 249 && BOOST_PP_ITERATION_START_4 >= 249
+# define BOOST_PP_ITERATION_4 249
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 248 && BOOST_PP_ITERATION_START_4 >= 248
+# define BOOST_PP_ITERATION_4 248
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 247 && BOOST_PP_ITERATION_START_4 >= 247
+# define BOOST_PP_ITERATION_4 247
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 246 && BOOST_PP_ITERATION_START_4 >= 246
+# define BOOST_PP_ITERATION_4 246
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 245 && BOOST_PP_ITERATION_START_4 >= 245
+# define BOOST_PP_ITERATION_4 245
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 244 && BOOST_PP_ITERATION_START_4 >= 244
+# define BOOST_PP_ITERATION_4 244
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 243 && BOOST_PP_ITERATION_START_4 >= 243
+# define BOOST_PP_ITERATION_4 243
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 242 && BOOST_PP_ITERATION_START_4 >= 242
+# define BOOST_PP_ITERATION_4 242
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 241 && BOOST_PP_ITERATION_START_4 >= 241
+# define BOOST_PP_ITERATION_4 241
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 240 && BOOST_PP_ITERATION_START_4 >= 240
+# define BOOST_PP_ITERATION_4 240
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 239 && BOOST_PP_ITERATION_START_4 >= 239
+# define BOOST_PP_ITERATION_4 239
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 238 && BOOST_PP_ITERATION_START_4 >= 238
+# define BOOST_PP_ITERATION_4 238
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 237 && BOOST_PP_ITERATION_START_4 >= 237
+# define BOOST_PP_ITERATION_4 237
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 236 && BOOST_PP_ITERATION_START_4 >= 236
+# define BOOST_PP_ITERATION_4 236
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 235 && BOOST_PP_ITERATION_START_4 >= 235
+# define BOOST_PP_ITERATION_4 235
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 234 && BOOST_PP_ITERATION_START_4 >= 234
+# define BOOST_PP_ITERATION_4 234
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 233 && BOOST_PP_ITERATION_START_4 >= 233
+# define BOOST_PP_ITERATION_4 233
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 232 && BOOST_PP_ITERATION_START_4 >= 232
+# define BOOST_PP_ITERATION_4 232
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 231 && BOOST_PP_ITERATION_START_4 >= 231
+# define BOOST_PP_ITERATION_4 231
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 230 && BOOST_PP_ITERATION_START_4 >= 230
+# define BOOST_PP_ITERATION_4 230
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 229 && BOOST_PP_ITERATION_START_4 >= 229
+# define BOOST_PP_ITERATION_4 229
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 228 && BOOST_PP_ITERATION_START_4 >= 228
+# define BOOST_PP_ITERATION_4 228
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 227 && BOOST_PP_ITERATION_START_4 >= 227
+# define BOOST_PP_ITERATION_4 227
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 226 && BOOST_PP_ITERATION_START_4 >= 226
+# define BOOST_PP_ITERATION_4 226
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 225 && BOOST_PP_ITERATION_START_4 >= 225
+# define BOOST_PP_ITERATION_4 225
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 224 && BOOST_PP_ITERATION_START_4 >= 224
+# define BOOST_PP_ITERATION_4 224
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 223 && BOOST_PP_ITERATION_START_4 >= 223
+# define BOOST_PP_ITERATION_4 223
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 222 && BOOST_PP_ITERATION_START_4 >= 222
+# define BOOST_PP_ITERATION_4 222
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 221 && BOOST_PP_ITERATION_START_4 >= 221
+# define BOOST_PP_ITERATION_4 221
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 220 && BOOST_PP_ITERATION_START_4 >= 220
+# define BOOST_PP_ITERATION_4 220
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 219 && BOOST_PP_ITERATION_START_4 >= 219
+# define BOOST_PP_ITERATION_4 219
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 218 && BOOST_PP_ITERATION_START_4 >= 218
+# define BOOST_PP_ITERATION_4 218
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 217 && BOOST_PP_ITERATION_START_4 >= 217
+# define BOOST_PP_ITERATION_4 217
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 216 && BOOST_PP_ITERATION_START_4 >= 216
+# define BOOST_PP_ITERATION_4 216
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 215 && BOOST_PP_ITERATION_START_4 >= 215
+# define BOOST_PP_ITERATION_4 215
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 214 && BOOST_PP_ITERATION_START_4 >= 214
+# define BOOST_PP_ITERATION_4 214
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 213 && BOOST_PP_ITERATION_START_4 >= 213
+# define BOOST_PP_ITERATION_4 213
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 212 && BOOST_PP_ITERATION_START_4 >= 212
+# define BOOST_PP_ITERATION_4 212
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 211 && BOOST_PP_ITERATION_START_4 >= 211
+# define BOOST_PP_ITERATION_4 211
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 210 && BOOST_PP_ITERATION_START_4 >= 210
+# define BOOST_PP_ITERATION_4 210
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 209 && BOOST_PP_ITERATION_START_4 >= 209
+# define BOOST_PP_ITERATION_4 209
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 208 && BOOST_PP_ITERATION_START_4 >= 208
+# define BOOST_PP_ITERATION_4 208
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 207 && BOOST_PP_ITERATION_START_4 >= 207
+# define BOOST_PP_ITERATION_4 207
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 206 && BOOST_PP_ITERATION_START_4 >= 206
+# define BOOST_PP_ITERATION_4 206
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 205 && BOOST_PP_ITERATION_START_4 >= 205
+# define BOOST_PP_ITERATION_4 205
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 204 && BOOST_PP_ITERATION_START_4 >= 204
+# define BOOST_PP_ITERATION_4 204
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 203 && BOOST_PP_ITERATION_START_4 >= 203
+# define BOOST_PP_ITERATION_4 203
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 202 && BOOST_PP_ITERATION_START_4 >= 202
+# define BOOST_PP_ITERATION_4 202
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 201 && BOOST_PP_ITERATION_START_4 >= 201
+# define BOOST_PP_ITERATION_4 201
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 200 && BOOST_PP_ITERATION_START_4 >= 200
+# define BOOST_PP_ITERATION_4 200
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 199 && BOOST_PP_ITERATION_START_4 >= 199
+# define BOOST_PP_ITERATION_4 199
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 198 && BOOST_PP_ITERATION_START_4 >= 198
+# define BOOST_PP_ITERATION_4 198
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 197 && BOOST_PP_ITERATION_START_4 >= 197
+# define BOOST_PP_ITERATION_4 197
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 196 && BOOST_PP_ITERATION_START_4 >= 196
+# define BOOST_PP_ITERATION_4 196
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 195 && BOOST_PP_ITERATION_START_4 >= 195
+# define BOOST_PP_ITERATION_4 195
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 194 && BOOST_PP_ITERATION_START_4 >= 194
+# define BOOST_PP_ITERATION_4 194
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 193 && BOOST_PP_ITERATION_START_4 >= 193
+# define BOOST_PP_ITERATION_4 193
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 192 && BOOST_PP_ITERATION_START_4 >= 192
+# define BOOST_PP_ITERATION_4 192
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 191 && BOOST_PP_ITERATION_START_4 >= 191
+# define BOOST_PP_ITERATION_4 191
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 190 && BOOST_PP_ITERATION_START_4 >= 190
+# define BOOST_PP_ITERATION_4 190
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 189 && BOOST_PP_ITERATION_START_4 >= 189
+# define BOOST_PP_ITERATION_4 189
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 188 && BOOST_PP_ITERATION_START_4 >= 188
+# define BOOST_PP_ITERATION_4 188
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 187 && BOOST_PP_ITERATION_START_4 >= 187
+# define BOOST_PP_ITERATION_4 187
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 186 && BOOST_PP_ITERATION_START_4 >= 186
+# define BOOST_PP_ITERATION_4 186
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 185 && BOOST_PP_ITERATION_START_4 >= 185
+# define BOOST_PP_ITERATION_4 185
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 184 && BOOST_PP_ITERATION_START_4 >= 184
+# define BOOST_PP_ITERATION_4 184
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 183 && BOOST_PP_ITERATION_START_4 >= 183
+# define BOOST_PP_ITERATION_4 183
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 182 && BOOST_PP_ITERATION_START_4 >= 182
+# define BOOST_PP_ITERATION_4 182
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 181 && BOOST_PP_ITERATION_START_4 >= 181
+# define BOOST_PP_ITERATION_4 181
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 180 && BOOST_PP_ITERATION_START_4 >= 180
+# define BOOST_PP_ITERATION_4 180
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 179 && BOOST_PP_ITERATION_START_4 >= 179
+# define BOOST_PP_ITERATION_4 179
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 178 && BOOST_PP_ITERATION_START_4 >= 178
+# define BOOST_PP_ITERATION_4 178
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 177 && BOOST_PP_ITERATION_START_4 >= 177
+# define BOOST_PP_ITERATION_4 177
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 176 && BOOST_PP_ITERATION_START_4 >= 176
+# define BOOST_PP_ITERATION_4 176
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 175 && BOOST_PP_ITERATION_START_4 >= 175
+# define BOOST_PP_ITERATION_4 175
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 174 && BOOST_PP_ITERATION_START_4 >= 174
+# define BOOST_PP_ITERATION_4 174
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 173 && BOOST_PP_ITERATION_START_4 >= 173
+# define BOOST_PP_ITERATION_4 173
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 172 && BOOST_PP_ITERATION_START_4 >= 172
+# define BOOST_PP_ITERATION_4 172
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 171 && BOOST_PP_ITERATION_START_4 >= 171
+# define BOOST_PP_ITERATION_4 171
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 170 && BOOST_PP_ITERATION_START_4 >= 170
+# define BOOST_PP_ITERATION_4 170
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 169 && BOOST_PP_ITERATION_START_4 >= 169
+# define BOOST_PP_ITERATION_4 169
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 168 && BOOST_PP_ITERATION_START_4 >= 168
+# define BOOST_PP_ITERATION_4 168
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 167 && BOOST_PP_ITERATION_START_4 >= 167
+# define BOOST_PP_ITERATION_4 167
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 166 && BOOST_PP_ITERATION_START_4 >= 166
+# define BOOST_PP_ITERATION_4 166
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 165 && BOOST_PP_ITERATION_START_4 >= 165
+# define BOOST_PP_ITERATION_4 165
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 164 && BOOST_PP_ITERATION_START_4 >= 164
+# define BOOST_PP_ITERATION_4 164
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 163 && BOOST_PP_ITERATION_START_4 >= 163
+# define BOOST_PP_ITERATION_4 163
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 162 && BOOST_PP_ITERATION_START_4 >= 162
+# define BOOST_PP_ITERATION_4 162
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 161 && BOOST_PP_ITERATION_START_4 >= 161
+# define BOOST_PP_ITERATION_4 161
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 160 && BOOST_PP_ITERATION_START_4 >= 160
+# define BOOST_PP_ITERATION_4 160
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 159 && BOOST_PP_ITERATION_START_4 >= 159
+# define BOOST_PP_ITERATION_4 159
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 158 && BOOST_PP_ITERATION_START_4 >= 158
+# define BOOST_PP_ITERATION_4 158
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 157 && BOOST_PP_ITERATION_START_4 >= 157
+# define BOOST_PP_ITERATION_4 157
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 156 && BOOST_PP_ITERATION_START_4 >= 156
+# define BOOST_PP_ITERATION_4 156
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 155 && BOOST_PP_ITERATION_START_4 >= 155
+# define BOOST_PP_ITERATION_4 155
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 154 && BOOST_PP_ITERATION_START_4 >= 154
+# define BOOST_PP_ITERATION_4 154
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 153 && BOOST_PP_ITERATION_START_4 >= 153
+# define BOOST_PP_ITERATION_4 153
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 152 && BOOST_PP_ITERATION_START_4 >= 152
+# define BOOST_PP_ITERATION_4 152
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 151 && BOOST_PP_ITERATION_START_4 >= 151
+# define BOOST_PP_ITERATION_4 151
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 150 && BOOST_PP_ITERATION_START_4 >= 150
+# define BOOST_PP_ITERATION_4 150
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 149 && BOOST_PP_ITERATION_START_4 >= 149
+# define BOOST_PP_ITERATION_4 149
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 148 && BOOST_PP_ITERATION_START_4 >= 148
+# define BOOST_PP_ITERATION_4 148
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 147 && BOOST_PP_ITERATION_START_4 >= 147
+# define BOOST_PP_ITERATION_4 147
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 146 && BOOST_PP_ITERATION_START_4 >= 146
+# define BOOST_PP_ITERATION_4 146
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 145 && BOOST_PP_ITERATION_START_4 >= 145
+# define BOOST_PP_ITERATION_4 145
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 144 && BOOST_PP_ITERATION_START_4 >= 144
+# define BOOST_PP_ITERATION_4 144
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 143 && BOOST_PP_ITERATION_START_4 >= 143
+# define BOOST_PP_ITERATION_4 143
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 142 && BOOST_PP_ITERATION_START_4 >= 142
+# define BOOST_PP_ITERATION_4 142
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 141 && BOOST_PP_ITERATION_START_4 >= 141
+# define BOOST_PP_ITERATION_4 141
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 140 && BOOST_PP_ITERATION_START_4 >= 140
+# define BOOST_PP_ITERATION_4 140
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 139 && BOOST_PP_ITERATION_START_4 >= 139
+# define BOOST_PP_ITERATION_4 139
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 138 && BOOST_PP_ITERATION_START_4 >= 138
+# define BOOST_PP_ITERATION_4 138
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 137 && BOOST_PP_ITERATION_START_4 >= 137
+# define BOOST_PP_ITERATION_4 137
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 136 && BOOST_PP_ITERATION_START_4 >= 136
+# define BOOST_PP_ITERATION_4 136
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 135 && BOOST_PP_ITERATION_START_4 >= 135
+# define BOOST_PP_ITERATION_4 135
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 134 && BOOST_PP_ITERATION_START_4 >= 134
+# define BOOST_PP_ITERATION_4 134
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 133 && BOOST_PP_ITERATION_START_4 >= 133
+# define BOOST_PP_ITERATION_4 133
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 132 && BOOST_PP_ITERATION_START_4 >= 132
+# define BOOST_PP_ITERATION_4 132
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 131 && BOOST_PP_ITERATION_START_4 >= 131
+# define BOOST_PP_ITERATION_4 131
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 130 && BOOST_PP_ITERATION_START_4 >= 130
+# define BOOST_PP_ITERATION_4 130
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 129 && BOOST_PP_ITERATION_START_4 >= 129
+# define BOOST_PP_ITERATION_4 129
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 128 && BOOST_PP_ITERATION_START_4 >= 128
+# define BOOST_PP_ITERATION_4 128
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 127 && BOOST_PP_ITERATION_START_4 >= 127
+# define BOOST_PP_ITERATION_4 127
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 126 && BOOST_PP_ITERATION_START_4 >= 126
+# define BOOST_PP_ITERATION_4 126
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 125 && BOOST_PP_ITERATION_START_4 >= 125
+# define BOOST_PP_ITERATION_4 125
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 124 && BOOST_PP_ITERATION_START_4 >= 124
+# define BOOST_PP_ITERATION_4 124
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 123 && BOOST_PP_ITERATION_START_4 >= 123
+# define BOOST_PP_ITERATION_4 123
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 122 && BOOST_PP_ITERATION_START_4 >= 122
+# define BOOST_PP_ITERATION_4 122
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 121 && BOOST_PP_ITERATION_START_4 >= 121
+# define BOOST_PP_ITERATION_4 121
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 120 && BOOST_PP_ITERATION_START_4 >= 120
+# define BOOST_PP_ITERATION_4 120
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 119 && BOOST_PP_ITERATION_START_4 >= 119
+# define BOOST_PP_ITERATION_4 119
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 118 && BOOST_PP_ITERATION_START_4 >= 118
+# define BOOST_PP_ITERATION_4 118
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 117 && BOOST_PP_ITERATION_START_4 >= 117
+# define BOOST_PP_ITERATION_4 117
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 116 && BOOST_PP_ITERATION_START_4 >= 116
+# define BOOST_PP_ITERATION_4 116
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 115 && BOOST_PP_ITERATION_START_4 >= 115
+# define BOOST_PP_ITERATION_4 115
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 114 && BOOST_PP_ITERATION_START_4 >= 114
+# define BOOST_PP_ITERATION_4 114
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 113 && BOOST_PP_ITERATION_START_4 >= 113
+# define BOOST_PP_ITERATION_4 113
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 112 && BOOST_PP_ITERATION_START_4 >= 112
+# define BOOST_PP_ITERATION_4 112
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 111 && BOOST_PP_ITERATION_START_4 >= 111
+# define BOOST_PP_ITERATION_4 111
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 110 && BOOST_PP_ITERATION_START_4 >= 110
+# define BOOST_PP_ITERATION_4 110
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 109 && BOOST_PP_ITERATION_START_4 >= 109
+# define BOOST_PP_ITERATION_4 109
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 108 && BOOST_PP_ITERATION_START_4 >= 108
+# define BOOST_PP_ITERATION_4 108
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 107 && BOOST_PP_ITERATION_START_4 >= 107
+# define BOOST_PP_ITERATION_4 107
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 106 && BOOST_PP_ITERATION_START_4 >= 106
+# define BOOST_PP_ITERATION_4 106
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 105 && BOOST_PP_ITERATION_START_4 >= 105
+# define BOOST_PP_ITERATION_4 105
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 104 && BOOST_PP_ITERATION_START_4 >= 104
+# define BOOST_PP_ITERATION_4 104
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 103 && BOOST_PP_ITERATION_START_4 >= 103
+# define BOOST_PP_ITERATION_4 103
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 102 && BOOST_PP_ITERATION_START_4 >= 102
+# define BOOST_PP_ITERATION_4 102
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 101 && BOOST_PP_ITERATION_START_4 >= 101
+# define BOOST_PP_ITERATION_4 101
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 100 && BOOST_PP_ITERATION_START_4 >= 100
+# define BOOST_PP_ITERATION_4 100
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 99 && BOOST_PP_ITERATION_START_4 >= 99
+# define BOOST_PP_ITERATION_4 99
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 98 && BOOST_PP_ITERATION_START_4 >= 98
+# define BOOST_PP_ITERATION_4 98
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 97 && BOOST_PP_ITERATION_START_4 >= 97
+# define BOOST_PP_ITERATION_4 97
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 96 && BOOST_PP_ITERATION_START_4 >= 96
+# define BOOST_PP_ITERATION_4 96
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 95 && BOOST_PP_ITERATION_START_4 >= 95
+# define BOOST_PP_ITERATION_4 95
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 94 && BOOST_PP_ITERATION_START_4 >= 94
+# define BOOST_PP_ITERATION_4 94
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 93 && BOOST_PP_ITERATION_START_4 >= 93
+# define BOOST_PP_ITERATION_4 93
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 92 && BOOST_PP_ITERATION_START_4 >= 92
+# define BOOST_PP_ITERATION_4 92
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 91 && BOOST_PP_ITERATION_START_4 >= 91
+# define BOOST_PP_ITERATION_4 91
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 90 && BOOST_PP_ITERATION_START_4 >= 90
+# define BOOST_PP_ITERATION_4 90
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 89 && BOOST_PP_ITERATION_START_4 >= 89
+# define BOOST_PP_ITERATION_4 89
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 88 && BOOST_PP_ITERATION_START_4 >= 88
+# define BOOST_PP_ITERATION_4 88
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 87 && BOOST_PP_ITERATION_START_4 >= 87
+# define BOOST_PP_ITERATION_4 87
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 86 && BOOST_PP_ITERATION_START_4 >= 86
+# define BOOST_PP_ITERATION_4 86
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 85 && BOOST_PP_ITERATION_START_4 >= 85
+# define BOOST_PP_ITERATION_4 85
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 84 && BOOST_PP_ITERATION_START_4 >= 84
+# define BOOST_PP_ITERATION_4 84
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 83 && BOOST_PP_ITERATION_START_4 >= 83
+# define BOOST_PP_ITERATION_4 83
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 82 && BOOST_PP_ITERATION_START_4 >= 82
+# define BOOST_PP_ITERATION_4 82
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 81 && BOOST_PP_ITERATION_START_4 >= 81
+# define BOOST_PP_ITERATION_4 81
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 80 && BOOST_PP_ITERATION_START_4 >= 80
+# define BOOST_PP_ITERATION_4 80
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 79 && BOOST_PP_ITERATION_START_4 >= 79
+# define BOOST_PP_ITERATION_4 79
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 78 && BOOST_PP_ITERATION_START_4 >= 78
+# define BOOST_PP_ITERATION_4 78
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 77 && BOOST_PP_ITERATION_START_4 >= 77
+# define BOOST_PP_ITERATION_4 77
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 76 && BOOST_PP_ITERATION_START_4 >= 76
+# define BOOST_PP_ITERATION_4 76
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 75 && BOOST_PP_ITERATION_START_4 >= 75
+# define BOOST_PP_ITERATION_4 75
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 74 && BOOST_PP_ITERATION_START_4 >= 74
+# define BOOST_PP_ITERATION_4 74
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 73 && BOOST_PP_ITERATION_START_4 >= 73
+# define BOOST_PP_ITERATION_4 73
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 72 && BOOST_PP_ITERATION_START_4 >= 72
+# define BOOST_PP_ITERATION_4 72
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 71 && BOOST_PP_ITERATION_START_4 >= 71
+# define BOOST_PP_ITERATION_4 71
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 70 && BOOST_PP_ITERATION_START_4 >= 70
+# define BOOST_PP_ITERATION_4 70
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 69 && BOOST_PP_ITERATION_START_4 >= 69
+# define BOOST_PP_ITERATION_4 69
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 68 && BOOST_PP_ITERATION_START_4 >= 68
+# define BOOST_PP_ITERATION_4 68
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 67 && BOOST_PP_ITERATION_START_4 >= 67
+# define BOOST_PP_ITERATION_4 67
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 66 && BOOST_PP_ITERATION_START_4 >= 66
+# define BOOST_PP_ITERATION_4 66
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 65 && BOOST_PP_ITERATION_START_4 >= 65
+# define BOOST_PP_ITERATION_4 65
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 64 && BOOST_PP_ITERATION_START_4 >= 64
+# define BOOST_PP_ITERATION_4 64
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 63 && BOOST_PP_ITERATION_START_4 >= 63
+# define BOOST_PP_ITERATION_4 63
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 62 && BOOST_PP_ITERATION_START_4 >= 62
+# define BOOST_PP_ITERATION_4 62
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 61 && BOOST_PP_ITERATION_START_4 >= 61
+# define BOOST_PP_ITERATION_4 61
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 60 && BOOST_PP_ITERATION_START_4 >= 60
+# define BOOST_PP_ITERATION_4 60
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 59 && BOOST_PP_ITERATION_START_4 >= 59
+# define BOOST_PP_ITERATION_4 59
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 58 && BOOST_PP_ITERATION_START_4 >= 58
+# define BOOST_PP_ITERATION_4 58
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 57 && BOOST_PP_ITERATION_START_4 >= 57
+# define BOOST_PP_ITERATION_4 57
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 56 && BOOST_PP_ITERATION_START_4 >= 56
+# define BOOST_PP_ITERATION_4 56
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 55 && BOOST_PP_ITERATION_START_4 >= 55
+# define BOOST_PP_ITERATION_4 55
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 54 && BOOST_PP_ITERATION_START_4 >= 54
+# define BOOST_PP_ITERATION_4 54
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 53 && BOOST_PP_ITERATION_START_4 >= 53
+# define BOOST_PP_ITERATION_4 53
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 52 && BOOST_PP_ITERATION_START_4 >= 52
+# define BOOST_PP_ITERATION_4 52
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 51 && BOOST_PP_ITERATION_START_4 >= 51
+# define BOOST_PP_ITERATION_4 51
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 50 && BOOST_PP_ITERATION_START_4 >= 50
+# define BOOST_PP_ITERATION_4 50
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 49 && BOOST_PP_ITERATION_START_4 >= 49
+# define BOOST_PP_ITERATION_4 49
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 48 && BOOST_PP_ITERATION_START_4 >= 48
+# define BOOST_PP_ITERATION_4 48
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 47 && BOOST_PP_ITERATION_START_4 >= 47
+# define BOOST_PP_ITERATION_4 47
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 46 && BOOST_PP_ITERATION_START_4 >= 46
+# define BOOST_PP_ITERATION_4 46
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 45 && BOOST_PP_ITERATION_START_4 >= 45
+# define BOOST_PP_ITERATION_4 45
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 44 && BOOST_PP_ITERATION_START_4 >= 44
+# define BOOST_PP_ITERATION_4 44
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 43 && BOOST_PP_ITERATION_START_4 >= 43
+# define BOOST_PP_ITERATION_4 43
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 42 && BOOST_PP_ITERATION_START_4 >= 42
+# define BOOST_PP_ITERATION_4 42
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 41 && BOOST_PP_ITERATION_START_4 >= 41
+# define BOOST_PP_ITERATION_4 41
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 40 && BOOST_PP_ITERATION_START_4 >= 40
+# define BOOST_PP_ITERATION_4 40
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 39 && BOOST_PP_ITERATION_START_4 >= 39
+# define BOOST_PP_ITERATION_4 39
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 38 && BOOST_PP_ITERATION_START_4 >= 38
+# define BOOST_PP_ITERATION_4 38
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 37 && BOOST_PP_ITERATION_START_4 >= 37
+# define BOOST_PP_ITERATION_4 37
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 36 && BOOST_PP_ITERATION_START_4 >= 36
+# define BOOST_PP_ITERATION_4 36
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 35 && BOOST_PP_ITERATION_START_4 >= 35
+# define BOOST_PP_ITERATION_4 35
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 34 && BOOST_PP_ITERATION_START_4 >= 34
+# define BOOST_PP_ITERATION_4 34
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 33 && BOOST_PP_ITERATION_START_4 >= 33
+# define BOOST_PP_ITERATION_4 33
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 32 && BOOST_PP_ITERATION_START_4 >= 32
+# define BOOST_PP_ITERATION_4 32
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 31 && BOOST_PP_ITERATION_START_4 >= 31
+# define BOOST_PP_ITERATION_4 31
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 30 && BOOST_PP_ITERATION_START_4 >= 30
+# define BOOST_PP_ITERATION_4 30
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 29 && BOOST_PP_ITERATION_START_4 >= 29
+# define BOOST_PP_ITERATION_4 29
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 28 && BOOST_PP_ITERATION_START_4 >= 28
+# define BOOST_PP_ITERATION_4 28
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 27 && BOOST_PP_ITERATION_START_4 >= 27
+# define BOOST_PP_ITERATION_4 27
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 26 && BOOST_PP_ITERATION_START_4 >= 26
+# define BOOST_PP_ITERATION_4 26
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 25 && BOOST_PP_ITERATION_START_4 >= 25
+# define BOOST_PP_ITERATION_4 25
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 24 && BOOST_PP_ITERATION_START_4 >= 24
+# define BOOST_PP_ITERATION_4 24
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 23 && BOOST_PP_ITERATION_START_4 >= 23
+# define BOOST_PP_ITERATION_4 23
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 22 && BOOST_PP_ITERATION_START_4 >= 22
+# define BOOST_PP_ITERATION_4 22
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 21 && BOOST_PP_ITERATION_START_4 >= 21
+# define BOOST_PP_ITERATION_4 21
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 20 && BOOST_PP_ITERATION_START_4 >= 20
+# define BOOST_PP_ITERATION_4 20
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 19 && BOOST_PP_ITERATION_START_4 >= 19
+# define BOOST_PP_ITERATION_4 19
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 18 && BOOST_PP_ITERATION_START_4 >= 18
+# define BOOST_PP_ITERATION_4 18
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 17 && BOOST_PP_ITERATION_START_4 >= 17
+# define BOOST_PP_ITERATION_4 17
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 16 && BOOST_PP_ITERATION_START_4 >= 16
+# define BOOST_PP_ITERATION_4 16
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 15 && BOOST_PP_ITERATION_START_4 >= 15
+# define BOOST_PP_ITERATION_4 15
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 14 && BOOST_PP_ITERATION_START_4 >= 14
+# define BOOST_PP_ITERATION_4 14
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 13 && BOOST_PP_ITERATION_START_4 >= 13
+# define BOOST_PP_ITERATION_4 13
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 12 && BOOST_PP_ITERATION_START_4 >= 12
+# define BOOST_PP_ITERATION_4 12
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 11 && BOOST_PP_ITERATION_START_4 >= 11
+# define BOOST_PP_ITERATION_4 11
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 10 && BOOST_PP_ITERATION_START_4 >= 10
+# define BOOST_PP_ITERATION_4 10
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 9 && BOOST_PP_ITERATION_START_4 >= 9
+# define BOOST_PP_ITERATION_4 9
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 8 && BOOST_PP_ITERATION_START_4 >= 8
+# define BOOST_PP_ITERATION_4 8
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 7 && BOOST_PP_ITERATION_START_4 >= 7
+# define BOOST_PP_ITERATION_4 7
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 6 && BOOST_PP_ITERATION_START_4 >= 6
+# define BOOST_PP_ITERATION_4 6
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 5 && BOOST_PP_ITERATION_START_4 >= 5
+# define BOOST_PP_ITERATION_4 5
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 4 && BOOST_PP_ITERATION_START_4 >= 4
+# define BOOST_PP_ITERATION_4 4
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 3 && BOOST_PP_ITERATION_START_4 >= 3
+# define BOOST_PP_ITERATION_4 3
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 2 && BOOST_PP_ITERATION_START_4 >= 2
+# define BOOST_PP_ITERATION_4 2
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 1 && BOOST_PP_ITERATION_START_4 >= 1
+# define BOOST_PP_ITERATION_4 1
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
+# if BOOST_PP_ITERATION_FINISH_4 <= 0 && BOOST_PP_ITERATION_START_4 >= 0
+# define BOOST_PP_ITERATION_4 0
+# include BOOST_PP_FILENAME_4
+# undef BOOST_PP_ITERATION_4
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp
new file mode 100644
index 0000000..225a557
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp
@@ -0,0 +1,1296 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_ITERATION_FINISH_5 <= 256 && BOOST_PP_ITERATION_START_5 >= 256
+# define BOOST_PP_ITERATION_5 256
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 255 && BOOST_PP_ITERATION_START_5 >= 255
+# define BOOST_PP_ITERATION_5 255
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 254 && BOOST_PP_ITERATION_START_5 >= 254
+# define BOOST_PP_ITERATION_5 254
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 253 && BOOST_PP_ITERATION_START_5 >= 253
+# define BOOST_PP_ITERATION_5 253
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 252 && BOOST_PP_ITERATION_START_5 >= 252
+# define BOOST_PP_ITERATION_5 252
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 251 && BOOST_PP_ITERATION_START_5 >= 251
+# define BOOST_PP_ITERATION_5 251
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 250 && BOOST_PP_ITERATION_START_5 >= 250
+# define BOOST_PP_ITERATION_5 250
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 249 && BOOST_PP_ITERATION_START_5 >= 249
+# define BOOST_PP_ITERATION_5 249
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 248 && BOOST_PP_ITERATION_START_5 >= 248
+# define BOOST_PP_ITERATION_5 248
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 247 && BOOST_PP_ITERATION_START_5 >= 247
+# define BOOST_PP_ITERATION_5 247
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 246 && BOOST_PP_ITERATION_START_5 >= 246
+# define BOOST_PP_ITERATION_5 246
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 245 && BOOST_PP_ITERATION_START_5 >= 245
+# define BOOST_PP_ITERATION_5 245
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 244 && BOOST_PP_ITERATION_START_5 >= 244
+# define BOOST_PP_ITERATION_5 244
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 243 && BOOST_PP_ITERATION_START_5 >= 243
+# define BOOST_PP_ITERATION_5 243
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 242 && BOOST_PP_ITERATION_START_5 >= 242
+# define BOOST_PP_ITERATION_5 242
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 241 && BOOST_PP_ITERATION_START_5 >= 241
+# define BOOST_PP_ITERATION_5 241
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 240 && BOOST_PP_ITERATION_START_5 >= 240
+# define BOOST_PP_ITERATION_5 240
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 239 && BOOST_PP_ITERATION_START_5 >= 239
+# define BOOST_PP_ITERATION_5 239
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 238 && BOOST_PP_ITERATION_START_5 >= 238
+# define BOOST_PP_ITERATION_5 238
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 237 && BOOST_PP_ITERATION_START_5 >= 237
+# define BOOST_PP_ITERATION_5 237
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 236 && BOOST_PP_ITERATION_START_5 >= 236
+# define BOOST_PP_ITERATION_5 236
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 235 && BOOST_PP_ITERATION_START_5 >= 235
+# define BOOST_PP_ITERATION_5 235
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 234 && BOOST_PP_ITERATION_START_5 >= 234
+# define BOOST_PP_ITERATION_5 234
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 233 && BOOST_PP_ITERATION_START_5 >= 233
+# define BOOST_PP_ITERATION_5 233
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 232 && BOOST_PP_ITERATION_START_5 >= 232
+# define BOOST_PP_ITERATION_5 232
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 231 && BOOST_PP_ITERATION_START_5 >= 231
+# define BOOST_PP_ITERATION_5 231
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 230 && BOOST_PP_ITERATION_START_5 >= 230
+# define BOOST_PP_ITERATION_5 230
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 229 && BOOST_PP_ITERATION_START_5 >= 229
+# define BOOST_PP_ITERATION_5 229
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 228 && BOOST_PP_ITERATION_START_5 >= 228
+# define BOOST_PP_ITERATION_5 228
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 227 && BOOST_PP_ITERATION_START_5 >= 227
+# define BOOST_PP_ITERATION_5 227
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 226 && BOOST_PP_ITERATION_START_5 >= 226
+# define BOOST_PP_ITERATION_5 226
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 225 && BOOST_PP_ITERATION_START_5 >= 225
+# define BOOST_PP_ITERATION_5 225
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 224 && BOOST_PP_ITERATION_START_5 >= 224
+# define BOOST_PP_ITERATION_5 224
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 223 && BOOST_PP_ITERATION_START_5 >= 223
+# define BOOST_PP_ITERATION_5 223
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 222 && BOOST_PP_ITERATION_START_5 >= 222
+# define BOOST_PP_ITERATION_5 222
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 221 && BOOST_PP_ITERATION_START_5 >= 221
+# define BOOST_PP_ITERATION_5 221
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 220 && BOOST_PP_ITERATION_START_5 >= 220
+# define BOOST_PP_ITERATION_5 220
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 219 && BOOST_PP_ITERATION_START_5 >= 219
+# define BOOST_PP_ITERATION_5 219
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 218 && BOOST_PP_ITERATION_START_5 >= 218
+# define BOOST_PP_ITERATION_5 218
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 217 && BOOST_PP_ITERATION_START_5 >= 217
+# define BOOST_PP_ITERATION_5 217
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 216 && BOOST_PP_ITERATION_START_5 >= 216
+# define BOOST_PP_ITERATION_5 216
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 215 && BOOST_PP_ITERATION_START_5 >= 215
+# define BOOST_PP_ITERATION_5 215
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 214 && BOOST_PP_ITERATION_START_5 >= 214
+# define BOOST_PP_ITERATION_5 214
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 213 && BOOST_PP_ITERATION_START_5 >= 213
+# define BOOST_PP_ITERATION_5 213
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 212 && BOOST_PP_ITERATION_START_5 >= 212
+# define BOOST_PP_ITERATION_5 212
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 211 && BOOST_PP_ITERATION_START_5 >= 211
+# define BOOST_PP_ITERATION_5 211
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 210 && BOOST_PP_ITERATION_START_5 >= 210
+# define BOOST_PP_ITERATION_5 210
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 209 && BOOST_PP_ITERATION_START_5 >= 209
+# define BOOST_PP_ITERATION_5 209
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 208 && BOOST_PP_ITERATION_START_5 >= 208
+# define BOOST_PP_ITERATION_5 208
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 207 && BOOST_PP_ITERATION_START_5 >= 207
+# define BOOST_PP_ITERATION_5 207
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 206 && BOOST_PP_ITERATION_START_5 >= 206
+# define BOOST_PP_ITERATION_5 206
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 205 && BOOST_PP_ITERATION_START_5 >= 205
+# define BOOST_PP_ITERATION_5 205
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 204 && BOOST_PP_ITERATION_START_5 >= 204
+# define BOOST_PP_ITERATION_5 204
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 203 && BOOST_PP_ITERATION_START_5 >= 203
+# define BOOST_PP_ITERATION_5 203
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 202 && BOOST_PP_ITERATION_START_5 >= 202
+# define BOOST_PP_ITERATION_5 202
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 201 && BOOST_PP_ITERATION_START_5 >= 201
+# define BOOST_PP_ITERATION_5 201
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 200 && BOOST_PP_ITERATION_START_5 >= 200
+# define BOOST_PP_ITERATION_5 200
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 199 && BOOST_PP_ITERATION_START_5 >= 199
+# define BOOST_PP_ITERATION_5 199
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 198 && BOOST_PP_ITERATION_START_5 >= 198
+# define BOOST_PP_ITERATION_5 198
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 197 && BOOST_PP_ITERATION_START_5 >= 197
+# define BOOST_PP_ITERATION_5 197
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 196 && BOOST_PP_ITERATION_START_5 >= 196
+# define BOOST_PP_ITERATION_5 196
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 195 && BOOST_PP_ITERATION_START_5 >= 195
+# define BOOST_PP_ITERATION_5 195
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 194 && BOOST_PP_ITERATION_START_5 >= 194
+# define BOOST_PP_ITERATION_5 194
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 193 && BOOST_PP_ITERATION_START_5 >= 193
+# define BOOST_PP_ITERATION_5 193
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 192 && BOOST_PP_ITERATION_START_5 >= 192
+# define BOOST_PP_ITERATION_5 192
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 191 && BOOST_PP_ITERATION_START_5 >= 191
+# define BOOST_PP_ITERATION_5 191
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 190 && BOOST_PP_ITERATION_START_5 >= 190
+# define BOOST_PP_ITERATION_5 190
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 189 && BOOST_PP_ITERATION_START_5 >= 189
+# define BOOST_PP_ITERATION_5 189
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 188 && BOOST_PP_ITERATION_START_5 >= 188
+# define BOOST_PP_ITERATION_5 188
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 187 && BOOST_PP_ITERATION_START_5 >= 187
+# define BOOST_PP_ITERATION_5 187
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 186 && BOOST_PP_ITERATION_START_5 >= 186
+# define BOOST_PP_ITERATION_5 186
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 185 && BOOST_PP_ITERATION_START_5 >= 185
+# define BOOST_PP_ITERATION_5 185
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 184 && BOOST_PP_ITERATION_START_5 >= 184
+# define BOOST_PP_ITERATION_5 184
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 183 && BOOST_PP_ITERATION_START_5 >= 183
+# define BOOST_PP_ITERATION_5 183
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 182 && BOOST_PP_ITERATION_START_5 >= 182
+# define BOOST_PP_ITERATION_5 182
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 181 && BOOST_PP_ITERATION_START_5 >= 181
+# define BOOST_PP_ITERATION_5 181
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 180 && BOOST_PP_ITERATION_START_5 >= 180
+# define BOOST_PP_ITERATION_5 180
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 179 && BOOST_PP_ITERATION_START_5 >= 179
+# define BOOST_PP_ITERATION_5 179
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 178 && BOOST_PP_ITERATION_START_5 >= 178
+# define BOOST_PP_ITERATION_5 178
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 177 && BOOST_PP_ITERATION_START_5 >= 177
+# define BOOST_PP_ITERATION_5 177
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 176 && BOOST_PP_ITERATION_START_5 >= 176
+# define BOOST_PP_ITERATION_5 176
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 175 && BOOST_PP_ITERATION_START_5 >= 175
+# define BOOST_PP_ITERATION_5 175
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 174 && BOOST_PP_ITERATION_START_5 >= 174
+# define BOOST_PP_ITERATION_5 174
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 173 && BOOST_PP_ITERATION_START_5 >= 173
+# define BOOST_PP_ITERATION_5 173
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 172 && BOOST_PP_ITERATION_START_5 >= 172
+# define BOOST_PP_ITERATION_5 172
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 171 && BOOST_PP_ITERATION_START_5 >= 171
+# define BOOST_PP_ITERATION_5 171
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 170 && BOOST_PP_ITERATION_START_5 >= 170
+# define BOOST_PP_ITERATION_5 170
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 169 && BOOST_PP_ITERATION_START_5 >= 169
+# define BOOST_PP_ITERATION_5 169
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 168 && BOOST_PP_ITERATION_START_5 >= 168
+# define BOOST_PP_ITERATION_5 168
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 167 && BOOST_PP_ITERATION_START_5 >= 167
+# define BOOST_PP_ITERATION_5 167
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 166 && BOOST_PP_ITERATION_START_5 >= 166
+# define BOOST_PP_ITERATION_5 166
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 165 && BOOST_PP_ITERATION_START_5 >= 165
+# define BOOST_PP_ITERATION_5 165
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 164 && BOOST_PP_ITERATION_START_5 >= 164
+# define BOOST_PP_ITERATION_5 164
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 163 && BOOST_PP_ITERATION_START_5 >= 163
+# define BOOST_PP_ITERATION_5 163
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 162 && BOOST_PP_ITERATION_START_5 >= 162
+# define BOOST_PP_ITERATION_5 162
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 161 && BOOST_PP_ITERATION_START_5 >= 161
+# define BOOST_PP_ITERATION_5 161
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 160 && BOOST_PP_ITERATION_START_5 >= 160
+# define BOOST_PP_ITERATION_5 160
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 159 && BOOST_PP_ITERATION_START_5 >= 159
+# define BOOST_PP_ITERATION_5 159
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 158 && BOOST_PP_ITERATION_START_5 >= 158
+# define BOOST_PP_ITERATION_5 158
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 157 && BOOST_PP_ITERATION_START_5 >= 157
+# define BOOST_PP_ITERATION_5 157
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 156 && BOOST_PP_ITERATION_START_5 >= 156
+# define BOOST_PP_ITERATION_5 156
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 155 && BOOST_PP_ITERATION_START_5 >= 155
+# define BOOST_PP_ITERATION_5 155
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 154 && BOOST_PP_ITERATION_START_5 >= 154
+# define BOOST_PP_ITERATION_5 154
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 153 && BOOST_PP_ITERATION_START_5 >= 153
+# define BOOST_PP_ITERATION_5 153
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 152 && BOOST_PP_ITERATION_START_5 >= 152
+# define BOOST_PP_ITERATION_5 152
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 151 && BOOST_PP_ITERATION_START_5 >= 151
+# define BOOST_PP_ITERATION_5 151
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 150 && BOOST_PP_ITERATION_START_5 >= 150
+# define BOOST_PP_ITERATION_5 150
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 149 && BOOST_PP_ITERATION_START_5 >= 149
+# define BOOST_PP_ITERATION_5 149
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 148 && BOOST_PP_ITERATION_START_5 >= 148
+# define BOOST_PP_ITERATION_5 148
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 147 && BOOST_PP_ITERATION_START_5 >= 147
+# define BOOST_PP_ITERATION_5 147
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 146 && BOOST_PP_ITERATION_START_5 >= 146
+# define BOOST_PP_ITERATION_5 146
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 145 && BOOST_PP_ITERATION_START_5 >= 145
+# define BOOST_PP_ITERATION_5 145
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 144 && BOOST_PP_ITERATION_START_5 >= 144
+# define BOOST_PP_ITERATION_5 144
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 143 && BOOST_PP_ITERATION_START_5 >= 143
+# define BOOST_PP_ITERATION_5 143
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 142 && BOOST_PP_ITERATION_START_5 >= 142
+# define BOOST_PP_ITERATION_5 142
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 141 && BOOST_PP_ITERATION_START_5 >= 141
+# define BOOST_PP_ITERATION_5 141
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 140 && BOOST_PP_ITERATION_START_5 >= 140
+# define BOOST_PP_ITERATION_5 140
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 139 && BOOST_PP_ITERATION_START_5 >= 139
+# define BOOST_PP_ITERATION_5 139
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 138 && BOOST_PP_ITERATION_START_5 >= 138
+# define BOOST_PP_ITERATION_5 138
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 137 && BOOST_PP_ITERATION_START_5 >= 137
+# define BOOST_PP_ITERATION_5 137
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 136 && BOOST_PP_ITERATION_START_5 >= 136
+# define BOOST_PP_ITERATION_5 136
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 135 && BOOST_PP_ITERATION_START_5 >= 135
+# define BOOST_PP_ITERATION_5 135
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 134 && BOOST_PP_ITERATION_START_5 >= 134
+# define BOOST_PP_ITERATION_5 134
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 133 && BOOST_PP_ITERATION_START_5 >= 133
+# define BOOST_PP_ITERATION_5 133
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 132 && BOOST_PP_ITERATION_START_5 >= 132
+# define BOOST_PP_ITERATION_5 132
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 131 && BOOST_PP_ITERATION_START_5 >= 131
+# define BOOST_PP_ITERATION_5 131
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 130 && BOOST_PP_ITERATION_START_5 >= 130
+# define BOOST_PP_ITERATION_5 130
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 129 && BOOST_PP_ITERATION_START_5 >= 129
+# define BOOST_PP_ITERATION_5 129
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 128 && BOOST_PP_ITERATION_START_5 >= 128
+# define BOOST_PP_ITERATION_5 128
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 127 && BOOST_PP_ITERATION_START_5 >= 127
+# define BOOST_PP_ITERATION_5 127
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 126 && BOOST_PP_ITERATION_START_5 >= 126
+# define BOOST_PP_ITERATION_5 126
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 125 && BOOST_PP_ITERATION_START_5 >= 125
+# define BOOST_PP_ITERATION_5 125
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 124 && BOOST_PP_ITERATION_START_5 >= 124
+# define BOOST_PP_ITERATION_5 124
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 123 && BOOST_PP_ITERATION_START_5 >= 123
+# define BOOST_PP_ITERATION_5 123
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 122 && BOOST_PP_ITERATION_START_5 >= 122
+# define BOOST_PP_ITERATION_5 122
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 121 && BOOST_PP_ITERATION_START_5 >= 121
+# define BOOST_PP_ITERATION_5 121
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 120 && BOOST_PP_ITERATION_START_5 >= 120
+# define BOOST_PP_ITERATION_5 120
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 119 && BOOST_PP_ITERATION_START_5 >= 119
+# define BOOST_PP_ITERATION_5 119
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 118 && BOOST_PP_ITERATION_START_5 >= 118
+# define BOOST_PP_ITERATION_5 118
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 117 && BOOST_PP_ITERATION_START_5 >= 117
+# define BOOST_PP_ITERATION_5 117
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 116 && BOOST_PP_ITERATION_START_5 >= 116
+# define BOOST_PP_ITERATION_5 116
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 115 && BOOST_PP_ITERATION_START_5 >= 115
+# define BOOST_PP_ITERATION_5 115
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 114 && BOOST_PP_ITERATION_START_5 >= 114
+# define BOOST_PP_ITERATION_5 114
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 113 && BOOST_PP_ITERATION_START_5 >= 113
+# define BOOST_PP_ITERATION_5 113
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 112 && BOOST_PP_ITERATION_START_5 >= 112
+# define BOOST_PP_ITERATION_5 112
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 111 && BOOST_PP_ITERATION_START_5 >= 111
+# define BOOST_PP_ITERATION_5 111
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 110 && BOOST_PP_ITERATION_START_5 >= 110
+# define BOOST_PP_ITERATION_5 110
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 109 && BOOST_PP_ITERATION_START_5 >= 109
+# define BOOST_PP_ITERATION_5 109
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 108 && BOOST_PP_ITERATION_START_5 >= 108
+# define BOOST_PP_ITERATION_5 108
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 107 && BOOST_PP_ITERATION_START_5 >= 107
+# define BOOST_PP_ITERATION_5 107
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 106 && BOOST_PP_ITERATION_START_5 >= 106
+# define BOOST_PP_ITERATION_5 106
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 105 && BOOST_PP_ITERATION_START_5 >= 105
+# define BOOST_PP_ITERATION_5 105
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 104 && BOOST_PP_ITERATION_START_5 >= 104
+# define BOOST_PP_ITERATION_5 104
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 103 && BOOST_PP_ITERATION_START_5 >= 103
+# define BOOST_PP_ITERATION_5 103
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 102 && BOOST_PP_ITERATION_START_5 >= 102
+# define BOOST_PP_ITERATION_5 102
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 101 && BOOST_PP_ITERATION_START_5 >= 101
+# define BOOST_PP_ITERATION_5 101
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 100 && BOOST_PP_ITERATION_START_5 >= 100
+# define BOOST_PP_ITERATION_5 100
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 99 && BOOST_PP_ITERATION_START_5 >= 99
+# define BOOST_PP_ITERATION_5 99
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 98 && BOOST_PP_ITERATION_START_5 >= 98
+# define BOOST_PP_ITERATION_5 98
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 97 && BOOST_PP_ITERATION_START_5 >= 97
+# define BOOST_PP_ITERATION_5 97
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 96 && BOOST_PP_ITERATION_START_5 >= 96
+# define BOOST_PP_ITERATION_5 96
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 95 && BOOST_PP_ITERATION_START_5 >= 95
+# define BOOST_PP_ITERATION_5 95
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 94 && BOOST_PP_ITERATION_START_5 >= 94
+# define BOOST_PP_ITERATION_5 94
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 93 && BOOST_PP_ITERATION_START_5 >= 93
+# define BOOST_PP_ITERATION_5 93
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 92 && BOOST_PP_ITERATION_START_5 >= 92
+# define BOOST_PP_ITERATION_5 92
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 91 && BOOST_PP_ITERATION_START_5 >= 91
+# define BOOST_PP_ITERATION_5 91
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 90 && BOOST_PP_ITERATION_START_5 >= 90
+# define BOOST_PP_ITERATION_5 90
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 89 && BOOST_PP_ITERATION_START_5 >= 89
+# define BOOST_PP_ITERATION_5 89
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 88 && BOOST_PP_ITERATION_START_5 >= 88
+# define BOOST_PP_ITERATION_5 88
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 87 && BOOST_PP_ITERATION_START_5 >= 87
+# define BOOST_PP_ITERATION_5 87
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 86 && BOOST_PP_ITERATION_START_5 >= 86
+# define BOOST_PP_ITERATION_5 86
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 85 && BOOST_PP_ITERATION_START_5 >= 85
+# define BOOST_PP_ITERATION_5 85
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 84 && BOOST_PP_ITERATION_START_5 >= 84
+# define BOOST_PP_ITERATION_5 84
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 83 && BOOST_PP_ITERATION_START_5 >= 83
+# define BOOST_PP_ITERATION_5 83
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 82 && BOOST_PP_ITERATION_START_5 >= 82
+# define BOOST_PP_ITERATION_5 82
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 81 && BOOST_PP_ITERATION_START_5 >= 81
+# define BOOST_PP_ITERATION_5 81
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 80 && BOOST_PP_ITERATION_START_5 >= 80
+# define BOOST_PP_ITERATION_5 80
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 79 && BOOST_PP_ITERATION_START_5 >= 79
+# define BOOST_PP_ITERATION_5 79
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 78 && BOOST_PP_ITERATION_START_5 >= 78
+# define BOOST_PP_ITERATION_5 78
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 77 && BOOST_PP_ITERATION_START_5 >= 77
+# define BOOST_PP_ITERATION_5 77
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 76 && BOOST_PP_ITERATION_START_5 >= 76
+# define BOOST_PP_ITERATION_5 76
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 75 && BOOST_PP_ITERATION_START_5 >= 75
+# define BOOST_PP_ITERATION_5 75
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 74 && BOOST_PP_ITERATION_START_5 >= 74
+# define BOOST_PP_ITERATION_5 74
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 73 && BOOST_PP_ITERATION_START_5 >= 73
+# define BOOST_PP_ITERATION_5 73
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 72 && BOOST_PP_ITERATION_START_5 >= 72
+# define BOOST_PP_ITERATION_5 72
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 71 && BOOST_PP_ITERATION_START_5 >= 71
+# define BOOST_PP_ITERATION_5 71
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 70 && BOOST_PP_ITERATION_START_5 >= 70
+# define BOOST_PP_ITERATION_5 70
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 69 && BOOST_PP_ITERATION_START_5 >= 69
+# define BOOST_PP_ITERATION_5 69
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 68 && BOOST_PP_ITERATION_START_5 >= 68
+# define BOOST_PP_ITERATION_5 68
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 67 && BOOST_PP_ITERATION_START_5 >= 67
+# define BOOST_PP_ITERATION_5 67
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 66 && BOOST_PP_ITERATION_START_5 >= 66
+# define BOOST_PP_ITERATION_5 66
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 65 && BOOST_PP_ITERATION_START_5 >= 65
+# define BOOST_PP_ITERATION_5 65
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 64 && BOOST_PP_ITERATION_START_5 >= 64
+# define BOOST_PP_ITERATION_5 64
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 63 && BOOST_PP_ITERATION_START_5 >= 63
+# define BOOST_PP_ITERATION_5 63
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 62 && BOOST_PP_ITERATION_START_5 >= 62
+# define BOOST_PP_ITERATION_5 62
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 61 && BOOST_PP_ITERATION_START_5 >= 61
+# define BOOST_PP_ITERATION_5 61
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 60 && BOOST_PP_ITERATION_START_5 >= 60
+# define BOOST_PP_ITERATION_5 60
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 59 && BOOST_PP_ITERATION_START_5 >= 59
+# define BOOST_PP_ITERATION_5 59
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 58 && BOOST_PP_ITERATION_START_5 >= 58
+# define BOOST_PP_ITERATION_5 58
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 57 && BOOST_PP_ITERATION_START_5 >= 57
+# define BOOST_PP_ITERATION_5 57
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 56 && BOOST_PP_ITERATION_START_5 >= 56
+# define BOOST_PP_ITERATION_5 56
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 55 && BOOST_PP_ITERATION_START_5 >= 55
+# define BOOST_PP_ITERATION_5 55
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 54 && BOOST_PP_ITERATION_START_5 >= 54
+# define BOOST_PP_ITERATION_5 54
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 53 && BOOST_PP_ITERATION_START_5 >= 53
+# define BOOST_PP_ITERATION_5 53
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 52 && BOOST_PP_ITERATION_START_5 >= 52
+# define BOOST_PP_ITERATION_5 52
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 51 && BOOST_PP_ITERATION_START_5 >= 51
+# define BOOST_PP_ITERATION_5 51
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 50 && BOOST_PP_ITERATION_START_5 >= 50
+# define BOOST_PP_ITERATION_5 50
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 49 && BOOST_PP_ITERATION_START_5 >= 49
+# define BOOST_PP_ITERATION_5 49
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 48 && BOOST_PP_ITERATION_START_5 >= 48
+# define BOOST_PP_ITERATION_5 48
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 47 && BOOST_PP_ITERATION_START_5 >= 47
+# define BOOST_PP_ITERATION_5 47
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 46 && BOOST_PP_ITERATION_START_5 >= 46
+# define BOOST_PP_ITERATION_5 46
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 45 && BOOST_PP_ITERATION_START_5 >= 45
+# define BOOST_PP_ITERATION_5 45
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 44 && BOOST_PP_ITERATION_START_5 >= 44
+# define BOOST_PP_ITERATION_5 44
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 43 && BOOST_PP_ITERATION_START_5 >= 43
+# define BOOST_PP_ITERATION_5 43
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 42 && BOOST_PP_ITERATION_START_5 >= 42
+# define BOOST_PP_ITERATION_5 42
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 41 && BOOST_PP_ITERATION_START_5 >= 41
+# define BOOST_PP_ITERATION_5 41
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 40 && BOOST_PP_ITERATION_START_5 >= 40
+# define BOOST_PP_ITERATION_5 40
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 39 && BOOST_PP_ITERATION_START_5 >= 39
+# define BOOST_PP_ITERATION_5 39
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 38 && BOOST_PP_ITERATION_START_5 >= 38
+# define BOOST_PP_ITERATION_5 38
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 37 && BOOST_PP_ITERATION_START_5 >= 37
+# define BOOST_PP_ITERATION_5 37
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 36 && BOOST_PP_ITERATION_START_5 >= 36
+# define BOOST_PP_ITERATION_5 36
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 35 && BOOST_PP_ITERATION_START_5 >= 35
+# define BOOST_PP_ITERATION_5 35
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 34 && BOOST_PP_ITERATION_START_5 >= 34
+# define BOOST_PP_ITERATION_5 34
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 33 && BOOST_PP_ITERATION_START_5 >= 33
+# define BOOST_PP_ITERATION_5 33
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 32 && BOOST_PP_ITERATION_START_5 >= 32
+# define BOOST_PP_ITERATION_5 32
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 31 && BOOST_PP_ITERATION_START_5 >= 31
+# define BOOST_PP_ITERATION_5 31
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 30 && BOOST_PP_ITERATION_START_5 >= 30
+# define BOOST_PP_ITERATION_5 30
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 29 && BOOST_PP_ITERATION_START_5 >= 29
+# define BOOST_PP_ITERATION_5 29
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 28 && BOOST_PP_ITERATION_START_5 >= 28
+# define BOOST_PP_ITERATION_5 28
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 27 && BOOST_PP_ITERATION_START_5 >= 27
+# define BOOST_PP_ITERATION_5 27
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 26 && BOOST_PP_ITERATION_START_5 >= 26
+# define BOOST_PP_ITERATION_5 26
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 25 && BOOST_PP_ITERATION_START_5 >= 25
+# define BOOST_PP_ITERATION_5 25
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 24 && BOOST_PP_ITERATION_START_5 >= 24
+# define BOOST_PP_ITERATION_5 24
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 23 && BOOST_PP_ITERATION_START_5 >= 23
+# define BOOST_PP_ITERATION_5 23
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 22 && BOOST_PP_ITERATION_START_5 >= 22
+# define BOOST_PP_ITERATION_5 22
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 21 && BOOST_PP_ITERATION_START_5 >= 21
+# define BOOST_PP_ITERATION_5 21
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 20 && BOOST_PP_ITERATION_START_5 >= 20
+# define BOOST_PP_ITERATION_5 20
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 19 && BOOST_PP_ITERATION_START_5 >= 19
+# define BOOST_PP_ITERATION_5 19
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 18 && BOOST_PP_ITERATION_START_5 >= 18
+# define BOOST_PP_ITERATION_5 18
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 17 && BOOST_PP_ITERATION_START_5 >= 17
+# define BOOST_PP_ITERATION_5 17
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 16 && BOOST_PP_ITERATION_START_5 >= 16
+# define BOOST_PP_ITERATION_5 16
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 15 && BOOST_PP_ITERATION_START_5 >= 15
+# define BOOST_PP_ITERATION_5 15
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 14 && BOOST_PP_ITERATION_START_5 >= 14
+# define BOOST_PP_ITERATION_5 14
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 13 && BOOST_PP_ITERATION_START_5 >= 13
+# define BOOST_PP_ITERATION_5 13
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 12 && BOOST_PP_ITERATION_START_5 >= 12
+# define BOOST_PP_ITERATION_5 12
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 11 && BOOST_PP_ITERATION_START_5 >= 11
+# define BOOST_PP_ITERATION_5 11
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 10 && BOOST_PP_ITERATION_START_5 >= 10
+# define BOOST_PP_ITERATION_5 10
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 9 && BOOST_PP_ITERATION_START_5 >= 9
+# define BOOST_PP_ITERATION_5 9
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 8 && BOOST_PP_ITERATION_START_5 >= 8
+# define BOOST_PP_ITERATION_5 8
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 7 && BOOST_PP_ITERATION_START_5 >= 7
+# define BOOST_PP_ITERATION_5 7
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 6 && BOOST_PP_ITERATION_START_5 >= 6
+# define BOOST_PP_ITERATION_5 6
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 5 && BOOST_PP_ITERATION_START_5 >= 5
+# define BOOST_PP_ITERATION_5 5
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 4 && BOOST_PP_ITERATION_START_5 >= 4
+# define BOOST_PP_ITERATION_5 4
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 3 && BOOST_PP_ITERATION_START_5 >= 3
+# define BOOST_PP_ITERATION_5 3
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 2 && BOOST_PP_ITERATION_START_5 >= 2
+# define BOOST_PP_ITERATION_5 2
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 1 && BOOST_PP_ITERATION_START_5 >= 1
+# define BOOST_PP_ITERATION_5 1
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
+# if BOOST_PP_ITERATION_FINISH_5 <= 0 && BOOST_PP_ITERATION_START_5 >= 0
+# define BOOST_PP_ITERATION_5 0
+# include BOOST_PP_FILENAME_5
+# undef BOOST_PP_ITERATION_5
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/local.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/local.hpp
new file mode 100644
index 0000000..ccddd5e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/local.hpp
@@ -0,0 +1,812 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !defined(BOOST_PP_LOCAL_LIMITS)
+# error BOOST_PP_ERROR: local iteration boundaries are not defined
+# elif !defined(BOOST_PP_LOCAL_MACRO)
+# error BOOST_PP_ERROR: local iteration target macro is not defined
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LOCAL_S BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_LOCAL_LIMITS)
+# define BOOST_PP_LOCAL_F BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_LOCAL_LIMITS)
+# else
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_LOCAL_LIMITS)
+# include <boost/preprocessor/iteration/detail/start.hpp>
+# define BOOST_PP_VALUE BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_LOCAL_LIMITS)
+# include <boost/preprocessor/iteration/detail/finish.hpp>
+# define BOOST_PP_LOCAL_S BOOST_PP_LOCAL_SE()
+# define BOOST_PP_LOCAL_F BOOST_PP_LOCAL_FE()
+# endif
+# endif
+#
+# if (BOOST_PP_LOCAL_S) > (BOOST_PP_LOCAL_F)
+# include <boost/preprocessor/iteration/detail/rlocal.hpp>
+# else
+# if BOOST_PP_LOCAL_C(0)
+ BOOST_PP_LOCAL_MACRO(0)
+# endif
+# if BOOST_PP_LOCAL_C(1)
+ BOOST_PP_LOCAL_MACRO(1)
+# endif
+# if BOOST_PP_LOCAL_C(2)
+ BOOST_PP_LOCAL_MACRO(2)
+# endif
+# if BOOST_PP_LOCAL_C(3)
+ BOOST_PP_LOCAL_MACRO(3)
+# endif
+# if BOOST_PP_LOCAL_C(4)
+ BOOST_PP_LOCAL_MACRO(4)
+# endif
+# if BOOST_PP_LOCAL_C(5)
+ BOOST_PP_LOCAL_MACRO(5)
+# endif
+# if BOOST_PP_LOCAL_C(6)
+ BOOST_PP_LOCAL_MACRO(6)
+# endif
+# if BOOST_PP_LOCAL_C(7)
+ BOOST_PP_LOCAL_MACRO(7)
+# endif
+# if BOOST_PP_LOCAL_C(8)
+ BOOST_PP_LOCAL_MACRO(8)
+# endif
+# if BOOST_PP_LOCAL_C(9)
+ BOOST_PP_LOCAL_MACRO(9)
+# endif
+# if BOOST_PP_LOCAL_C(10)
+ BOOST_PP_LOCAL_MACRO(10)
+# endif
+# if BOOST_PP_LOCAL_C(11)
+ BOOST_PP_LOCAL_MACRO(11)
+# endif
+# if BOOST_PP_LOCAL_C(12)
+ BOOST_PP_LOCAL_MACRO(12)
+# endif
+# if BOOST_PP_LOCAL_C(13)
+ BOOST_PP_LOCAL_MACRO(13)
+# endif
+# if BOOST_PP_LOCAL_C(14)
+ BOOST_PP_LOCAL_MACRO(14)
+# endif
+# if BOOST_PP_LOCAL_C(15)
+ BOOST_PP_LOCAL_MACRO(15)
+# endif
+# if BOOST_PP_LOCAL_C(16)
+ BOOST_PP_LOCAL_MACRO(16)
+# endif
+# if BOOST_PP_LOCAL_C(17)
+ BOOST_PP_LOCAL_MACRO(17)
+# endif
+# if BOOST_PP_LOCAL_C(18)
+ BOOST_PP_LOCAL_MACRO(18)
+# endif
+# if BOOST_PP_LOCAL_C(19)
+ BOOST_PP_LOCAL_MACRO(19)
+# endif
+# if BOOST_PP_LOCAL_C(20)
+ BOOST_PP_LOCAL_MACRO(20)
+# endif
+# if BOOST_PP_LOCAL_C(21)
+ BOOST_PP_LOCAL_MACRO(21)
+# endif
+# if BOOST_PP_LOCAL_C(22)
+ BOOST_PP_LOCAL_MACRO(22)
+# endif
+# if BOOST_PP_LOCAL_C(23)
+ BOOST_PP_LOCAL_MACRO(23)
+# endif
+# if BOOST_PP_LOCAL_C(24)
+ BOOST_PP_LOCAL_MACRO(24)
+# endif
+# if BOOST_PP_LOCAL_C(25)
+ BOOST_PP_LOCAL_MACRO(25)
+# endif
+# if BOOST_PP_LOCAL_C(26)
+ BOOST_PP_LOCAL_MACRO(26)
+# endif
+# if BOOST_PP_LOCAL_C(27)
+ BOOST_PP_LOCAL_MACRO(27)
+# endif
+# if BOOST_PP_LOCAL_C(28)
+ BOOST_PP_LOCAL_MACRO(28)
+# endif
+# if BOOST_PP_LOCAL_C(29)
+ BOOST_PP_LOCAL_MACRO(29)
+# endif
+# if BOOST_PP_LOCAL_C(30)
+ BOOST_PP_LOCAL_MACRO(30)
+# endif
+# if BOOST_PP_LOCAL_C(31)
+ BOOST_PP_LOCAL_MACRO(31)
+# endif
+# if BOOST_PP_LOCAL_C(32)
+ BOOST_PP_LOCAL_MACRO(32)
+# endif
+# if BOOST_PP_LOCAL_C(33)
+ BOOST_PP_LOCAL_MACRO(33)
+# endif
+# if BOOST_PP_LOCAL_C(34)
+ BOOST_PP_LOCAL_MACRO(34)
+# endif
+# if BOOST_PP_LOCAL_C(35)
+ BOOST_PP_LOCAL_MACRO(35)
+# endif
+# if BOOST_PP_LOCAL_C(36)
+ BOOST_PP_LOCAL_MACRO(36)
+# endif
+# if BOOST_PP_LOCAL_C(37)
+ BOOST_PP_LOCAL_MACRO(37)
+# endif
+# if BOOST_PP_LOCAL_C(38)
+ BOOST_PP_LOCAL_MACRO(38)
+# endif
+# if BOOST_PP_LOCAL_C(39)
+ BOOST_PP_LOCAL_MACRO(39)
+# endif
+# if BOOST_PP_LOCAL_C(40)
+ BOOST_PP_LOCAL_MACRO(40)
+# endif
+# if BOOST_PP_LOCAL_C(41)
+ BOOST_PP_LOCAL_MACRO(41)
+# endif
+# if BOOST_PP_LOCAL_C(42)
+ BOOST_PP_LOCAL_MACRO(42)
+# endif
+# if BOOST_PP_LOCAL_C(43)
+ BOOST_PP_LOCAL_MACRO(43)
+# endif
+# if BOOST_PP_LOCAL_C(44)
+ BOOST_PP_LOCAL_MACRO(44)
+# endif
+# if BOOST_PP_LOCAL_C(45)
+ BOOST_PP_LOCAL_MACRO(45)
+# endif
+# if BOOST_PP_LOCAL_C(46)
+ BOOST_PP_LOCAL_MACRO(46)
+# endif
+# if BOOST_PP_LOCAL_C(47)
+ BOOST_PP_LOCAL_MACRO(47)
+# endif
+# if BOOST_PP_LOCAL_C(48)
+ BOOST_PP_LOCAL_MACRO(48)
+# endif
+# if BOOST_PP_LOCAL_C(49)
+ BOOST_PP_LOCAL_MACRO(49)
+# endif
+# if BOOST_PP_LOCAL_C(50)
+ BOOST_PP_LOCAL_MACRO(50)
+# endif
+# if BOOST_PP_LOCAL_C(51)
+ BOOST_PP_LOCAL_MACRO(51)
+# endif
+# if BOOST_PP_LOCAL_C(52)
+ BOOST_PP_LOCAL_MACRO(52)
+# endif
+# if BOOST_PP_LOCAL_C(53)
+ BOOST_PP_LOCAL_MACRO(53)
+# endif
+# if BOOST_PP_LOCAL_C(54)
+ BOOST_PP_LOCAL_MACRO(54)
+# endif
+# if BOOST_PP_LOCAL_C(55)
+ BOOST_PP_LOCAL_MACRO(55)
+# endif
+# if BOOST_PP_LOCAL_C(56)
+ BOOST_PP_LOCAL_MACRO(56)
+# endif
+# if BOOST_PP_LOCAL_C(57)
+ BOOST_PP_LOCAL_MACRO(57)
+# endif
+# if BOOST_PP_LOCAL_C(58)
+ BOOST_PP_LOCAL_MACRO(58)
+# endif
+# if BOOST_PP_LOCAL_C(59)
+ BOOST_PP_LOCAL_MACRO(59)
+# endif
+# if BOOST_PP_LOCAL_C(60)
+ BOOST_PP_LOCAL_MACRO(60)
+# endif
+# if BOOST_PP_LOCAL_C(61)
+ BOOST_PP_LOCAL_MACRO(61)
+# endif
+# if BOOST_PP_LOCAL_C(62)
+ BOOST_PP_LOCAL_MACRO(62)
+# endif
+# if BOOST_PP_LOCAL_C(63)
+ BOOST_PP_LOCAL_MACRO(63)
+# endif
+# if BOOST_PP_LOCAL_C(64)
+ BOOST_PP_LOCAL_MACRO(64)
+# endif
+# if BOOST_PP_LOCAL_C(65)
+ BOOST_PP_LOCAL_MACRO(65)
+# endif
+# if BOOST_PP_LOCAL_C(66)
+ BOOST_PP_LOCAL_MACRO(66)
+# endif
+# if BOOST_PP_LOCAL_C(67)
+ BOOST_PP_LOCAL_MACRO(67)
+# endif
+# if BOOST_PP_LOCAL_C(68)
+ BOOST_PP_LOCAL_MACRO(68)
+# endif
+# if BOOST_PP_LOCAL_C(69)
+ BOOST_PP_LOCAL_MACRO(69)
+# endif
+# if BOOST_PP_LOCAL_C(70)
+ BOOST_PP_LOCAL_MACRO(70)
+# endif
+# if BOOST_PP_LOCAL_C(71)
+ BOOST_PP_LOCAL_MACRO(71)
+# endif
+# if BOOST_PP_LOCAL_C(72)
+ BOOST_PP_LOCAL_MACRO(72)
+# endif
+# if BOOST_PP_LOCAL_C(73)
+ BOOST_PP_LOCAL_MACRO(73)
+# endif
+# if BOOST_PP_LOCAL_C(74)
+ BOOST_PP_LOCAL_MACRO(74)
+# endif
+# if BOOST_PP_LOCAL_C(75)
+ BOOST_PP_LOCAL_MACRO(75)
+# endif
+# if BOOST_PP_LOCAL_C(76)
+ BOOST_PP_LOCAL_MACRO(76)
+# endif
+# if BOOST_PP_LOCAL_C(77)
+ BOOST_PP_LOCAL_MACRO(77)
+# endif
+# if BOOST_PP_LOCAL_C(78)
+ BOOST_PP_LOCAL_MACRO(78)
+# endif
+# if BOOST_PP_LOCAL_C(79)
+ BOOST_PP_LOCAL_MACRO(79)
+# endif
+# if BOOST_PP_LOCAL_C(80)
+ BOOST_PP_LOCAL_MACRO(80)
+# endif
+# if BOOST_PP_LOCAL_C(81)
+ BOOST_PP_LOCAL_MACRO(81)
+# endif
+# if BOOST_PP_LOCAL_C(82)
+ BOOST_PP_LOCAL_MACRO(82)
+# endif
+# if BOOST_PP_LOCAL_C(83)
+ BOOST_PP_LOCAL_MACRO(83)
+# endif
+# if BOOST_PP_LOCAL_C(84)
+ BOOST_PP_LOCAL_MACRO(84)
+# endif
+# if BOOST_PP_LOCAL_C(85)
+ BOOST_PP_LOCAL_MACRO(85)
+# endif
+# if BOOST_PP_LOCAL_C(86)
+ BOOST_PP_LOCAL_MACRO(86)
+# endif
+# if BOOST_PP_LOCAL_C(87)
+ BOOST_PP_LOCAL_MACRO(87)
+# endif
+# if BOOST_PP_LOCAL_C(88)
+ BOOST_PP_LOCAL_MACRO(88)
+# endif
+# if BOOST_PP_LOCAL_C(89)
+ BOOST_PP_LOCAL_MACRO(89)
+# endif
+# if BOOST_PP_LOCAL_C(90)
+ BOOST_PP_LOCAL_MACRO(90)
+# endif
+# if BOOST_PP_LOCAL_C(91)
+ BOOST_PP_LOCAL_MACRO(91)
+# endif
+# if BOOST_PP_LOCAL_C(92)
+ BOOST_PP_LOCAL_MACRO(92)
+# endif
+# if BOOST_PP_LOCAL_C(93)
+ BOOST_PP_LOCAL_MACRO(93)
+# endif
+# if BOOST_PP_LOCAL_C(94)
+ BOOST_PP_LOCAL_MACRO(94)
+# endif
+# if BOOST_PP_LOCAL_C(95)
+ BOOST_PP_LOCAL_MACRO(95)
+# endif
+# if BOOST_PP_LOCAL_C(96)
+ BOOST_PP_LOCAL_MACRO(96)
+# endif
+# if BOOST_PP_LOCAL_C(97)
+ BOOST_PP_LOCAL_MACRO(97)
+# endif
+# if BOOST_PP_LOCAL_C(98)
+ BOOST_PP_LOCAL_MACRO(98)
+# endif
+# if BOOST_PP_LOCAL_C(99)
+ BOOST_PP_LOCAL_MACRO(99)
+# endif
+# if BOOST_PP_LOCAL_C(100)
+ BOOST_PP_LOCAL_MACRO(100)
+# endif
+# if BOOST_PP_LOCAL_C(101)
+ BOOST_PP_LOCAL_MACRO(101)
+# endif
+# if BOOST_PP_LOCAL_C(102)
+ BOOST_PP_LOCAL_MACRO(102)
+# endif
+# if BOOST_PP_LOCAL_C(103)
+ BOOST_PP_LOCAL_MACRO(103)
+# endif
+# if BOOST_PP_LOCAL_C(104)
+ BOOST_PP_LOCAL_MACRO(104)
+# endif
+# if BOOST_PP_LOCAL_C(105)
+ BOOST_PP_LOCAL_MACRO(105)
+# endif
+# if BOOST_PP_LOCAL_C(106)
+ BOOST_PP_LOCAL_MACRO(106)
+# endif
+# if BOOST_PP_LOCAL_C(107)
+ BOOST_PP_LOCAL_MACRO(107)
+# endif
+# if BOOST_PP_LOCAL_C(108)
+ BOOST_PP_LOCAL_MACRO(108)
+# endif
+# if BOOST_PP_LOCAL_C(109)
+ BOOST_PP_LOCAL_MACRO(109)
+# endif
+# if BOOST_PP_LOCAL_C(110)
+ BOOST_PP_LOCAL_MACRO(110)
+# endif
+# if BOOST_PP_LOCAL_C(111)
+ BOOST_PP_LOCAL_MACRO(111)
+# endif
+# if BOOST_PP_LOCAL_C(112)
+ BOOST_PP_LOCAL_MACRO(112)
+# endif
+# if BOOST_PP_LOCAL_C(113)
+ BOOST_PP_LOCAL_MACRO(113)
+# endif
+# if BOOST_PP_LOCAL_C(114)
+ BOOST_PP_LOCAL_MACRO(114)
+# endif
+# if BOOST_PP_LOCAL_C(115)
+ BOOST_PP_LOCAL_MACRO(115)
+# endif
+# if BOOST_PP_LOCAL_C(116)
+ BOOST_PP_LOCAL_MACRO(116)
+# endif
+# if BOOST_PP_LOCAL_C(117)
+ BOOST_PP_LOCAL_MACRO(117)
+# endif
+# if BOOST_PP_LOCAL_C(118)
+ BOOST_PP_LOCAL_MACRO(118)
+# endif
+# if BOOST_PP_LOCAL_C(119)
+ BOOST_PP_LOCAL_MACRO(119)
+# endif
+# if BOOST_PP_LOCAL_C(120)
+ BOOST_PP_LOCAL_MACRO(120)
+# endif
+# if BOOST_PP_LOCAL_C(121)
+ BOOST_PP_LOCAL_MACRO(121)
+# endif
+# if BOOST_PP_LOCAL_C(122)
+ BOOST_PP_LOCAL_MACRO(122)
+# endif
+# if BOOST_PP_LOCAL_C(123)
+ BOOST_PP_LOCAL_MACRO(123)
+# endif
+# if BOOST_PP_LOCAL_C(124)
+ BOOST_PP_LOCAL_MACRO(124)
+# endif
+# if BOOST_PP_LOCAL_C(125)
+ BOOST_PP_LOCAL_MACRO(125)
+# endif
+# if BOOST_PP_LOCAL_C(126)
+ BOOST_PP_LOCAL_MACRO(126)
+# endif
+# if BOOST_PP_LOCAL_C(127)
+ BOOST_PP_LOCAL_MACRO(127)
+# endif
+# if BOOST_PP_LOCAL_C(128)
+ BOOST_PP_LOCAL_MACRO(128)
+# endif
+# if BOOST_PP_LOCAL_C(129)
+ BOOST_PP_LOCAL_MACRO(129)
+# endif
+# if BOOST_PP_LOCAL_C(130)
+ BOOST_PP_LOCAL_MACRO(130)
+# endif
+# if BOOST_PP_LOCAL_C(131)
+ BOOST_PP_LOCAL_MACRO(131)
+# endif
+# if BOOST_PP_LOCAL_C(132)
+ BOOST_PP_LOCAL_MACRO(132)
+# endif
+# if BOOST_PP_LOCAL_C(133)
+ BOOST_PP_LOCAL_MACRO(133)
+# endif
+# if BOOST_PP_LOCAL_C(134)
+ BOOST_PP_LOCAL_MACRO(134)
+# endif
+# if BOOST_PP_LOCAL_C(135)
+ BOOST_PP_LOCAL_MACRO(135)
+# endif
+# if BOOST_PP_LOCAL_C(136)
+ BOOST_PP_LOCAL_MACRO(136)
+# endif
+# if BOOST_PP_LOCAL_C(137)
+ BOOST_PP_LOCAL_MACRO(137)
+# endif
+# if BOOST_PP_LOCAL_C(138)
+ BOOST_PP_LOCAL_MACRO(138)
+# endif
+# if BOOST_PP_LOCAL_C(139)
+ BOOST_PP_LOCAL_MACRO(139)
+# endif
+# if BOOST_PP_LOCAL_C(140)
+ BOOST_PP_LOCAL_MACRO(140)
+# endif
+# if BOOST_PP_LOCAL_C(141)
+ BOOST_PP_LOCAL_MACRO(141)
+# endif
+# if BOOST_PP_LOCAL_C(142)
+ BOOST_PP_LOCAL_MACRO(142)
+# endif
+# if BOOST_PP_LOCAL_C(143)
+ BOOST_PP_LOCAL_MACRO(143)
+# endif
+# if BOOST_PP_LOCAL_C(144)
+ BOOST_PP_LOCAL_MACRO(144)
+# endif
+# if BOOST_PP_LOCAL_C(145)
+ BOOST_PP_LOCAL_MACRO(145)
+# endif
+# if BOOST_PP_LOCAL_C(146)
+ BOOST_PP_LOCAL_MACRO(146)
+# endif
+# if BOOST_PP_LOCAL_C(147)
+ BOOST_PP_LOCAL_MACRO(147)
+# endif
+# if BOOST_PP_LOCAL_C(148)
+ BOOST_PP_LOCAL_MACRO(148)
+# endif
+# if BOOST_PP_LOCAL_C(149)
+ BOOST_PP_LOCAL_MACRO(149)
+# endif
+# if BOOST_PP_LOCAL_C(150)
+ BOOST_PP_LOCAL_MACRO(150)
+# endif
+# if BOOST_PP_LOCAL_C(151)
+ BOOST_PP_LOCAL_MACRO(151)
+# endif
+# if BOOST_PP_LOCAL_C(152)
+ BOOST_PP_LOCAL_MACRO(152)
+# endif
+# if BOOST_PP_LOCAL_C(153)
+ BOOST_PP_LOCAL_MACRO(153)
+# endif
+# if BOOST_PP_LOCAL_C(154)
+ BOOST_PP_LOCAL_MACRO(154)
+# endif
+# if BOOST_PP_LOCAL_C(155)
+ BOOST_PP_LOCAL_MACRO(155)
+# endif
+# if BOOST_PP_LOCAL_C(156)
+ BOOST_PP_LOCAL_MACRO(156)
+# endif
+# if BOOST_PP_LOCAL_C(157)
+ BOOST_PP_LOCAL_MACRO(157)
+# endif
+# if BOOST_PP_LOCAL_C(158)
+ BOOST_PP_LOCAL_MACRO(158)
+# endif
+# if BOOST_PP_LOCAL_C(159)
+ BOOST_PP_LOCAL_MACRO(159)
+# endif
+# if BOOST_PP_LOCAL_C(160)
+ BOOST_PP_LOCAL_MACRO(160)
+# endif
+# if BOOST_PP_LOCAL_C(161)
+ BOOST_PP_LOCAL_MACRO(161)
+# endif
+# if BOOST_PP_LOCAL_C(162)
+ BOOST_PP_LOCAL_MACRO(162)
+# endif
+# if BOOST_PP_LOCAL_C(163)
+ BOOST_PP_LOCAL_MACRO(163)
+# endif
+# if BOOST_PP_LOCAL_C(164)
+ BOOST_PP_LOCAL_MACRO(164)
+# endif
+# if BOOST_PP_LOCAL_C(165)
+ BOOST_PP_LOCAL_MACRO(165)
+# endif
+# if BOOST_PP_LOCAL_C(166)
+ BOOST_PP_LOCAL_MACRO(166)
+# endif
+# if BOOST_PP_LOCAL_C(167)
+ BOOST_PP_LOCAL_MACRO(167)
+# endif
+# if BOOST_PP_LOCAL_C(168)
+ BOOST_PP_LOCAL_MACRO(168)
+# endif
+# if BOOST_PP_LOCAL_C(169)
+ BOOST_PP_LOCAL_MACRO(169)
+# endif
+# if BOOST_PP_LOCAL_C(170)
+ BOOST_PP_LOCAL_MACRO(170)
+# endif
+# if BOOST_PP_LOCAL_C(171)
+ BOOST_PP_LOCAL_MACRO(171)
+# endif
+# if BOOST_PP_LOCAL_C(172)
+ BOOST_PP_LOCAL_MACRO(172)
+# endif
+# if BOOST_PP_LOCAL_C(173)
+ BOOST_PP_LOCAL_MACRO(173)
+# endif
+# if BOOST_PP_LOCAL_C(174)
+ BOOST_PP_LOCAL_MACRO(174)
+# endif
+# if BOOST_PP_LOCAL_C(175)
+ BOOST_PP_LOCAL_MACRO(175)
+# endif
+# if BOOST_PP_LOCAL_C(176)
+ BOOST_PP_LOCAL_MACRO(176)
+# endif
+# if BOOST_PP_LOCAL_C(177)
+ BOOST_PP_LOCAL_MACRO(177)
+# endif
+# if BOOST_PP_LOCAL_C(178)
+ BOOST_PP_LOCAL_MACRO(178)
+# endif
+# if BOOST_PP_LOCAL_C(179)
+ BOOST_PP_LOCAL_MACRO(179)
+# endif
+# if BOOST_PP_LOCAL_C(180)
+ BOOST_PP_LOCAL_MACRO(180)
+# endif
+# if BOOST_PP_LOCAL_C(181)
+ BOOST_PP_LOCAL_MACRO(181)
+# endif
+# if BOOST_PP_LOCAL_C(182)
+ BOOST_PP_LOCAL_MACRO(182)
+# endif
+# if BOOST_PP_LOCAL_C(183)
+ BOOST_PP_LOCAL_MACRO(183)
+# endif
+# if BOOST_PP_LOCAL_C(184)
+ BOOST_PP_LOCAL_MACRO(184)
+# endif
+# if BOOST_PP_LOCAL_C(185)
+ BOOST_PP_LOCAL_MACRO(185)
+# endif
+# if BOOST_PP_LOCAL_C(186)
+ BOOST_PP_LOCAL_MACRO(186)
+# endif
+# if BOOST_PP_LOCAL_C(187)
+ BOOST_PP_LOCAL_MACRO(187)
+# endif
+# if BOOST_PP_LOCAL_C(188)
+ BOOST_PP_LOCAL_MACRO(188)
+# endif
+# if BOOST_PP_LOCAL_C(189)
+ BOOST_PP_LOCAL_MACRO(189)
+# endif
+# if BOOST_PP_LOCAL_C(190)
+ BOOST_PP_LOCAL_MACRO(190)
+# endif
+# if BOOST_PP_LOCAL_C(191)
+ BOOST_PP_LOCAL_MACRO(191)
+# endif
+# if BOOST_PP_LOCAL_C(192)
+ BOOST_PP_LOCAL_MACRO(192)
+# endif
+# if BOOST_PP_LOCAL_C(193)
+ BOOST_PP_LOCAL_MACRO(193)
+# endif
+# if BOOST_PP_LOCAL_C(194)
+ BOOST_PP_LOCAL_MACRO(194)
+# endif
+# if BOOST_PP_LOCAL_C(195)
+ BOOST_PP_LOCAL_MACRO(195)
+# endif
+# if BOOST_PP_LOCAL_C(196)
+ BOOST_PP_LOCAL_MACRO(196)
+# endif
+# if BOOST_PP_LOCAL_C(197)
+ BOOST_PP_LOCAL_MACRO(197)
+# endif
+# if BOOST_PP_LOCAL_C(198)
+ BOOST_PP_LOCAL_MACRO(198)
+# endif
+# if BOOST_PP_LOCAL_C(199)
+ BOOST_PP_LOCAL_MACRO(199)
+# endif
+# if BOOST_PP_LOCAL_C(200)
+ BOOST_PP_LOCAL_MACRO(200)
+# endif
+# if BOOST_PP_LOCAL_C(201)
+ BOOST_PP_LOCAL_MACRO(201)
+# endif
+# if BOOST_PP_LOCAL_C(202)
+ BOOST_PP_LOCAL_MACRO(202)
+# endif
+# if BOOST_PP_LOCAL_C(203)
+ BOOST_PP_LOCAL_MACRO(203)
+# endif
+# if BOOST_PP_LOCAL_C(204)
+ BOOST_PP_LOCAL_MACRO(204)
+# endif
+# if BOOST_PP_LOCAL_C(205)
+ BOOST_PP_LOCAL_MACRO(205)
+# endif
+# if BOOST_PP_LOCAL_C(206)
+ BOOST_PP_LOCAL_MACRO(206)
+# endif
+# if BOOST_PP_LOCAL_C(207)
+ BOOST_PP_LOCAL_MACRO(207)
+# endif
+# if BOOST_PP_LOCAL_C(208)
+ BOOST_PP_LOCAL_MACRO(208)
+# endif
+# if BOOST_PP_LOCAL_C(209)
+ BOOST_PP_LOCAL_MACRO(209)
+# endif
+# if BOOST_PP_LOCAL_C(210)
+ BOOST_PP_LOCAL_MACRO(210)
+# endif
+# if BOOST_PP_LOCAL_C(211)
+ BOOST_PP_LOCAL_MACRO(211)
+# endif
+# if BOOST_PP_LOCAL_C(212)
+ BOOST_PP_LOCAL_MACRO(212)
+# endif
+# if BOOST_PP_LOCAL_C(213)
+ BOOST_PP_LOCAL_MACRO(213)
+# endif
+# if BOOST_PP_LOCAL_C(214)
+ BOOST_PP_LOCAL_MACRO(214)
+# endif
+# if BOOST_PP_LOCAL_C(215)
+ BOOST_PP_LOCAL_MACRO(215)
+# endif
+# if BOOST_PP_LOCAL_C(216)
+ BOOST_PP_LOCAL_MACRO(216)
+# endif
+# if BOOST_PP_LOCAL_C(217)
+ BOOST_PP_LOCAL_MACRO(217)
+# endif
+# if BOOST_PP_LOCAL_C(218)
+ BOOST_PP_LOCAL_MACRO(218)
+# endif
+# if BOOST_PP_LOCAL_C(219)
+ BOOST_PP_LOCAL_MACRO(219)
+# endif
+# if BOOST_PP_LOCAL_C(220)
+ BOOST_PP_LOCAL_MACRO(220)
+# endif
+# if BOOST_PP_LOCAL_C(221)
+ BOOST_PP_LOCAL_MACRO(221)
+# endif
+# if BOOST_PP_LOCAL_C(222)
+ BOOST_PP_LOCAL_MACRO(222)
+# endif
+# if BOOST_PP_LOCAL_C(223)
+ BOOST_PP_LOCAL_MACRO(223)
+# endif
+# if BOOST_PP_LOCAL_C(224)
+ BOOST_PP_LOCAL_MACRO(224)
+# endif
+# if BOOST_PP_LOCAL_C(225)
+ BOOST_PP_LOCAL_MACRO(225)
+# endif
+# if BOOST_PP_LOCAL_C(226)
+ BOOST_PP_LOCAL_MACRO(226)
+# endif
+# if BOOST_PP_LOCAL_C(227)
+ BOOST_PP_LOCAL_MACRO(227)
+# endif
+# if BOOST_PP_LOCAL_C(228)
+ BOOST_PP_LOCAL_MACRO(228)
+# endif
+# if BOOST_PP_LOCAL_C(229)
+ BOOST_PP_LOCAL_MACRO(229)
+# endif
+# if BOOST_PP_LOCAL_C(230)
+ BOOST_PP_LOCAL_MACRO(230)
+# endif
+# if BOOST_PP_LOCAL_C(231)
+ BOOST_PP_LOCAL_MACRO(231)
+# endif
+# if BOOST_PP_LOCAL_C(232)
+ BOOST_PP_LOCAL_MACRO(232)
+# endif
+# if BOOST_PP_LOCAL_C(233)
+ BOOST_PP_LOCAL_MACRO(233)
+# endif
+# if BOOST_PP_LOCAL_C(234)
+ BOOST_PP_LOCAL_MACRO(234)
+# endif
+# if BOOST_PP_LOCAL_C(235)
+ BOOST_PP_LOCAL_MACRO(235)
+# endif
+# if BOOST_PP_LOCAL_C(236)
+ BOOST_PP_LOCAL_MACRO(236)
+# endif
+
+# if BOOST_PP_LOCAL_C(237)
+ BOOST_PP_LOCAL_MACRO(237)
+# endif
+# if BOOST_PP_LOCAL_C(238)
+ BOOST_PP_LOCAL_MACRO(238)
+# endif
+# if BOOST_PP_LOCAL_C(239)
+ BOOST_PP_LOCAL_MACRO(239)
+# endif
+# if BOOST_PP_LOCAL_C(240)
+ BOOST_PP_LOCAL_MACRO(240)
+# endif
+# if BOOST_PP_LOCAL_C(241)
+ BOOST_PP_LOCAL_MACRO(241)
+# endif
+# if BOOST_PP_LOCAL_C(242)
+ BOOST_PP_LOCAL_MACRO(242)
+# endif
+# if BOOST_PP_LOCAL_C(243)
+ BOOST_PP_LOCAL_MACRO(243)
+# endif
+# if BOOST_PP_LOCAL_C(244)
+ BOOST_PP_LOCAL_MACRO(244)
+# endif
+# if BOOST_PP_LOCAL_C(245)
+ BOOST_PP_LOCAL_MACRO(245)
+# endif
+# if BOOST_PP_LOCAL_C(246)
+ BOOST_PP_LOCAL_MACRO(246)
+# endif
+# if BOOST_PP_LOCAL_C(247)
+ BOOST_PP_LOCAL_MACRO(247)
+# endif
+# if BOOST_PP_LOCAL_C(248)
+ BOOST_PP_LOCAL_MACRO(248)
+# endif
+# if BOOST_PP_LOCAL_C(249)
+ BOOST_PP_LOCAL_MACRO(249)
+# endif
+# if BOOST_PP_LOCAL_C(250)
+ BOOST_PP_LOCAL_MACRO(250)
+# endif
+# if BOOST_PP_LOCAL_C(251)
+ BOOST_PP_LOCAL_MACRO(251)
+# endif
+# if BOOST_PP_LOCAL_C(252)
+ BOOST_PP_LOCAL_MACRO(252)
+# endif
+# if BOOST_PP_LOCAL_C(253)
+ BOOST_PP_LOCAL_MACRO(253)
+# endif
+# if BOOST_PP_LOCAL_C(254)
+ BOOST_PP_LOCAL_MACRO(254)
+# endif
+# if BOOST_PP_LOCAL_C(255)
+ BOOST_PP_LOCAL_MACRO(255)
+# endif
+# if BOOST_PP_LOCAL_C(256)
+ BOOST_PP_LOCAL_MACRO(256)
+# endif
+# endif
+#
+# undef BOOST_PP_LOCAL_LIMITS
+#
+# undef BOOST_PP_LOCAL_S
+# undef BOOST_PP_LOCAL_F
+#
+# undef BOOST_PP_LOCAL_MACRO
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/rlocal.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/rlocal.hpp
new file mode 100644
index 0000000..413afa0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/rlocal.hpp
@@ -0,0 +1,782 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_LOCAL_R(256)
+ BOOST_PP_LOCAL_MACRO(256)
+# endif
+# if BOOST_PP_LOCAL_R(255)
+ BOOST_PP_LOCAL_MACRO(255)
+# endif
+# if BOOST_PP_LOCAL_R(254)
+ BOOST_PP_LOCAL_MACRO(254)
+# endif
+# if BOOST_PP_LOCAL_R(253)
+ BOOST_PP_LOCAL_MACRO(253)
+# endif
+# if BOOST_PP_LOCAL_R(252)
+ BOOST_PP_LOCAL_MACRO(252)
+# endif
+# if BOOST_PP_LOCAL_R(251)
+ BOOST_PP_LOCAL_MACRO(251)
+# endif
+# if BOOST_PP_LOCAL_R(250)
+ BOOST_PP_LOCAL_MACRO(250)
+# endif
+# if BOOST_PP_LOCAL_R(249)
+ BOOST_PP_LOCAL_MACRO(249)
+# endif
+# if BOOST_PP_LOCAL_R(248)
+ BOOST_PP_LOCAL_MACRO(248)
+# endif
+# if BOOST_PP_LOCAL_R(247)
+ BOOST_PP_LOCAL_MACRO(247)
+# endif
+# if BOOST_PP_LOCAL_R(246)
+ BOOST_PP_LOCAL_MACRO(246)
+# endif
+# if BOOST_PP_LOCAL_R(245)
+ BOOST_PP_LOCAL_MACRO(245)
+# endif
+# if BOOST_PP_LOCAL_R(244)
+ BOOST_PP_LOCAL_MACRO(244)
+# endif
+# if BOOST_PP_LOCAL_R(243)
+ BOOST_PP_LOCAL_MACRO(243)
+# endif
+# if BOOST_PP_LOCAL_R(242)
+ BOOST_PP_LOCAL_MACRO(242)
+# endif
+# if BOOST_PP_LOCAL_R(241)
+ BOOST_PP_LOCAL_MACRO(241)
+# endif
+# if BOOST_PP_LOCAL_R(240)
+ BOOST_PP_LOCAL_MACRO(240)
+# endif
+# if BOOST_PP_LOCAL_R(239)
+ BOOST_PP_LOCAL_MACRO(239)
+# endif
+# if BOOST_PP_LOCAL_R(238)
+ BOOST_PP_LOCAL_MACRO(238)
+# endif
+# if BOOST_PP_LOCAL_R(237)
+ BOOST_PP_LOCAL_MACRO(237)
+# endif
+# if BOOST_PP_LOCAL_R(236)
+ BOOST_PP_LOCAL_MACRO(236)
+# endif
+# if BOOST_PP_LOCAL_R(235)
+ BOOST_PP_LOCAL_MACRO(235)
+# endif
+# if BOOST_PP_LOCAL_R(234)
+ BOOST_PP_LOCAL_MACRO(234)
+# endif
+# if BOOST_PP_LOCAL_R(233)
+ BOOST_PP_LOCAL_MACRO(233)
+# endif
+# if BOOST_PP_LOCAL_R(232)
+ BOOST_PP_LOCAL_MACRO(232)
+# endif
+# if BOOST_PP_LOCAL_R(231)
+ BOOST_PP_LOCAL_MACRO(231)
+# endif
+# if BOOST_PP_LOCAL_R(230)
+ BOOST_PP_LOCAL_MACRO(230)
+# endif
+# if BOOST_PP_LOCAL_R(229)
+ BOOST_PP_LOCAL_MACRO(229)
+# endif
+# if BOOST_PP_LOCAL_R(228)
+ BOOST_PP_LOCAL_MACRO(228)
+# endif
+# if BOOST_PP_LOCAL_R(227)
+ BOOST_PP_LOCAL_MACRO(227)
+# endif
+# if BOOST_PP_LOCAL_R(226)
+ BOOST_PP_LOCAL_MACRO(226)
+# endif
+# if BOOST_PP_LOCAL_R(225)
+ BOOST_PP_LOCAL_MACRO(225)
+# endif
+# if BOOST_PP_LOCAL_R(224)
+ BOOST_PP_LOCAL_MACRO(224)
+# endif
+# if BOOST_PP_LOCAL_R(223)
+ BOOST_PP_LOCAL_MACRO(223)
+# endif
+# if BOOST_PP_LOCAL_R(222)
+ BOOST_PP_LOCAL_MACRO(222)
+# endif
+# if BOOST_PP_LOCAL_R(221)
+ BOOST_PP_LOCAL_MACRO(221)
+# endif
+# if BOOST_PP_LOCAL_R(220)
+ BOOST_PP_LOCAL_MACRO(220)
+# endif
+# if BOOST_PP_LOCAL_R(219)
+ BOOST_PP_LOCAL_MACRO(219)
+# endif
+# if BOOST_PP_LOCAL_R(218)
+ BOOST_PP_LOCAL_MACRO(218)
+# endif
+# if BOOST_PP_LOCAL_R(217)
+ BOOST_PP_LOCAL_MACRO(217)
+# endif
+# if BOOST_PP_LOCAL_R(216)
+ BOOST_PP_LOCAL_MACRO(216)
+# endif
+# if BOOST_PP_LOCAL_R(215)
+ BOOST_PP_LOCAL_MACRO(215)
+# endif
+# if BOOST_PP_LOCAL_R(214)
+ BOOST_PP_LOCAL_MACRO(214)
+# endif
+# if BOOST_PP_LOCAL_R(213)
+ BOOST_PP_LOCAL_MACRO(213)
+# endif
+# if BOOST_PP_LOCAL_R(212)
+ BOOST_PP_LOCAL_MACRO(212)
+# endif
+# if BOOST_PP_LOCAL_R(211)
+ BOOST_PP_LOCAL_MACRO(211)
+# endif
+# if BOOST_PP_LOCAL_R(210)
+ BOOST_PP_LOCAL_MACRO(210)
+# endif
+# if BOOST_PP_LOCAL_R(209)
+ BOOST_PP_LOCAL_MACRO(209)
+# endif
+# if BOOST_PP_LOCAL_R(208)
+ BOOST_PP_LOCAL_MACRO(208)
+# endif
+# if BOOST_PP_LOCAL_R(207)
+ BOOST_PP_LOCAL_MACRO(207)
+# endif
+# if BOOST_PP_LOCAL_R(206)
+ BOOST_PP_LOCAL_MACRO(206)
+# endif
+# if BOOST_PP_LOCAL_R(205)
+ BOOST_PP_LOCAL_MACRO(205)
+# endif
+# if BOOST_PP_LOCAL_R(204)
+ BOOST_PP_LOCAL_MACRO(204)
+# endif
+# if BOOST_PP_LOCAL_R(203)
+ BOOST_PP_LOCAL_MACRO(203)
+# endif
+# if BOOST_PP_LOCAL_R(202)
+ BOOST_PP_LOCAL_MACRO(202)
+# endif
+# if BOOST_PP_LOCAL_R(201)
+ BOOST_PP_LOCAL_MACRO(201)
+# endif
+# if BOOST_PP_LOCAL_R(200)
+ BOOST_PP_LOCAL_MACRO(200)
+# endif
+# if BOOST_PP_LOCAL_R(199)
+ BOOST_PP_LOCAL_MACRO(199)
+# endif
+# if BOOST_PP_LOCAL_R(198)
+ BOOST_PP_LOCAL_MACRO(198)
+# endif
+# if BOOST_PP_LOCAL_R(197)
+ BOOST_PP_LOCAL_MACRO(197)
+# endif
+# if BOOST_PP_LOCAL_R(196)
+ BOOST_PP_LOCAL_MACRO(196)
+# endif
+# if BOOST_PP_LOCAL_R(195)
+ BOOST_PP_LOCAL_MACRO(195)
+# endif
+# if BOOST_PP_LOCAL_R(194)
+ BOOST_PP_LOCAL_MACRO(194)
+# endif
+# if BOOST_PP_LOCAL_R(193)
+ BOOST_PP_LOCAL_MACRO(193)
+# endif
+# if BOOST_PP_LOCAL_R(192)
+ BOOST_PP_LOCAL_MACRO(192)
+# endif
+# if BOOST_PP_LOCAL_R(191)
+ BOOST_PP_LOCAL_MACRO(191)
+# endif
+# if BOOST_PP_LOCAL_R(190)
+ BOOST_PP_LOCAL_MACRO(190)
+# endif
+# if BOOST_PP_LOCAL_R(189)
+ BOOST_PP_LOCAL_MACRO(189)
+# endif
+# if BOOST_PP_LOCAL_R(188)
+ BOOST_PP_LOCAL_MACRO(188)
+# endif
+# if BOOST_PP_LOCAL_R(187)
+ BOOST_PP_LOCAL_MACRO(187)
+# endif
+# if BOOST_PP_LOCAL_R(186)
+ BOOST_PP_LOCAL_MACRO(186)
+# endif
+# if BOOST_PP_LOCAL_R(185)
+ BOOST_PP_LOCAL_MACRO(185)
+# endif
+# if BOOST_PP_LOCAL_R(184)
+ BOOST_PP_LOCAL_MACRO(184)
+# endif
+# if BOOST_PP_LOCAL_R(183)
+ BOOST_PP_LOCAL_MACRO(183)
+# endif
+# if BOOST_PP_LOCAL_R(182)
+ BOOST_PP_LOCAL_MACRO(182)
+# endif
+# if BOOST_PP_LOCAL_R(181)
+ BOOST_PP_LOCAL_MACRO(181)
+# endif
+# if BOOST_PP_LOCAL_R(180)
+ BOOST_PP_LOCAL_MACRO(180)
+# endif
+# if BOOST_PP_LOCAL_R(179)
+ BOOST_PP_LOCAL_MACRO(179)
+# endif
+# if BOOST_PP_LOCAL_R(178)
+ BOOST_PP_LOCAL_MACRO(178)
+# endif
+# if BOOST_PP_LOCAL_R(177)
+ BOOST_PP_LOCAL_MACRO(177)
+# endif
+# if BOOST_PP_LOCAL_R(176)
+ BOOST_PP_LOCAL_MACRO(176)
+# endif
+# if BOOST_PP_LOCAL_R(175)
+ BOOST_PP_LOCAL_MACRO(175)
+# endif
+# if BOOST_PP_LOCAL_R(174)
+ BOOST_PP_LOCAL_MACRO(174)
+# endif
+# if BOOST_PP_LOCAL_R(173)
+ BOOST_PP_LOCAL_MACRO(173)
+# endif
+# if BOOST_PP_LOCAL_R(172)
+ BOOST_PP_LOCAL_MACRO(172)
+# endif
+# if BOOST_PP_LOCAL_R(171)
+ BOOST_PP_LOCAL_MACRO(171)
+# endif
+# if BOOST_PP_LOCAL_R(170)
+ BOOST_PP_LOCAL_MACRO(170)
+# endif
+# if BOOST_PP_LOCAL_R(169)
+ BOOST_PP_LOCAL_MACRO(169)
+# endif
+# if BOOST_PP_LOCAL_R(168)
+ BOOST_PP_LOCAL_MACRO(168)
+# endif
+# if BOOST_PP_LOCAL_R(167)
+ BOOST_PP_LOCAL_MACRO(167)
+# endif
+# if BOOST_PP_LOCAL_R(166)
+ BOOST_PP_LOCAL_MACRO(166)
+# endif
+# if BOOST_PP_LOCAL_R(165)
+ BOOST_PP_LOCAL_MACRO(165)
+# endif
+# if BOOST_PP_LOCAL_R(164)
+ BOOST_PP_LOCAL_MACRO(164)
+# endif
+# if BOOST_PP_LOCAL_R(163)
+ BOOST_PP_LOCAL_MACRO(163)
+# endif
+# if BOOST_PP_LOCAL_R(162)
+ BOOST_PP_LOCAL_MACRO(162)
+# endif
+# if BOOST_PP_LOCAL_R(161)
+ BOOST_PP_LOCAL_MACRO(161)
+# endif
+# if BOOST_PP_LOCAL_R(160)
+ BOOST_PP_LOCAL_MACRO(160)
+# endif
+# if BOOST_PP_LOCAL_R(159)
+ BOOST_PP_LOCAL_MACRO(159)
+# endif
+# if BOOST_PP_LOCAL_R(158)
+ BOOST_PP_LOCAL_MACRO(158)
+# endif
+# if BOOST_PP_LOCAL_R(157)
+ BOOST_PP_LOCAL_MACRO(157)
+# endif
+# if BOOST_PP_LOCAL_R(156)
+ BOOST_PP_LOCAL_MACRO(156)
+# endif
+# if BOOST_PP_LOCAL_R(155)
+ BOOST_PP_LOCAL_MACRO(155)
+# endif
+# if BOOST_PP_LOCAL_R(154)
+ BOOST_PP_LOCAL_MACRO(154)
+# endif
+# if BOOST_PP_LOCAL_R(153)
+ BOOST_PP_LOCAL_MACRO(153)
+# endif
+# if BOOST_PP_LOCAL_R(152)
+ BOOST_PP_LOCAL_MACRO(152)
+# endif
+# if BOOST_PP_LOCAL_R(151)
+ BOOST_PP_LOCAL_MACRO(151)
+# endif
+# if BOOST_PP_LOCAL_R(150)
+ BOOST_PP_LOCAL_MACRO(150)
+# endif
+# if BOOST_PP_LOCAL_R(149)
+ BOOST_PP_LOCAL_MACRO(149)
+# endif
+# if BOOST_PP_LOCAL_R(148)
+ BOOST_PP_LOCAL_MACRO(148)
+# endif
+# if BOOST_PP_LOCAL_R(147)
+ BOOST_PP_LOCAL_MACRO(147)
+# endif
+# if BOOST_PP_LOCAL_R(146)
+ BOOST_PP_LOCAL_MACRO(146)
+# endif
+# if BOOST_PP_LOCAL_R(145)
+ BOOST_PP_LOCAL_MACRO(145)
+# endif
+# if BOOST_PP_LOCAL_R(144)
+ BOOST_PP_LOCAL_MACRO(144)
+# endif
+# if BOOST_PP_LOCAL_R(143)
+ BOOST_PP_LOCAL_MACRO(143)
+# endif
+# if BOOST_PP_LOCAL_R(142)
+ BOOST_PP_LOCAL_MACRO(142)
+# endif
+# if BOOST_PP_LOCAL_R(141)
+ BOOST_PP_LOCAL_MACRO(141)
+# endif
+# if BOOST_PP_LOCAL_R(140)
+ BOOST_PP_LOCAL_MACRO(140)
+# endif
+# if BOOST_PP_LOCAL_R(139)
+ BOOST_PP_LOCAL_MACRO(139)
+# endif
+# if BOOST_PP_LOCAL_R(138)
+ BOOST_PP_LOCAL_MACRO(138)
+# endif
+# if BOOST_PP_LOCAL_R(137)
+ BOOST_PP_LOCAL_MACRO(137)
+# endif
+# if BOOST_PP_LOCAL_R(136)
+ BOOST_PP_LOCAL_MACRO(136)
+# endif
+# if BOOST_PP_LOCAL_R(135)
+ BOOST_PP_LOCAL_MACRO(135)
+# endif
+# if BOOST_PP_LOCAL_R(134)
+ BOOST_PP_LOCAL_MACRO(134)
+# endif
+# if BOOST_PP_LOCAL_R(133)
+ BOOST_PP_LOCAL_MACRO(133)
+# endif
+# if BOOST_PP_LOCAL_R(132)
+ BOOST_PP_LOCAL_MACRO(132)
+# endif
+# if BOOST_PP_LOCAL_R(131)
+ BOOST_PP_LOCAL_MACRO(131)
+# endif
+# if BOOST_PP_LOCAL_R(130)
+ BOOST_PP_LOCAL_MACRO(130)
+# endif
+# if BOOST_PP_LOCAL_R(129)
+ BOOST_PP_LOCAL_MACRO(129)
+# endif
+# if BOOST_PP_LOCAL_R(128)
+ BOOST_PP_LOCAL_MACRO(128)
+# endif
+# if BOOST_PP_LOCAL_R(127)
+ BOOST_PP_LOCAL_MACRO(127)
+# endif
+# if BOOST_PP_LOCAL_R(126)
+ BOOST_PP_LOCAL_MACRO(126)
+# endif
+# if BOOST_PP_LOCAL_R(125)
+ BOOST_PP_LOCAL_MACRO(125)
+# endif
+# if BOOST_PP_LOCAL_R(124)
+ BOOST_PP_LOCAL_MACRO(124)
+# endif
+# if BOOST_PP_LOCAL_R(123)
+ BOOST_PP_LOCAL_MACRO(123)
+# endif
+# if BOOST_PP_LOCAL_R(122)
+ BOOST_PP_LOCAL_MACRO(122)
+# endif
+# if BOOST_PP_LOCAL_R(121)
+ BOOST_PP_LOCAL_MACRO(121)
+# endif
+# if BOOST_PP_LOCAL_R(120)
+ BOOST_PP_LOCAL_MACRO(120)
+# endif
+# if BOOST_PP_LOCAL_R(119)
+ BOOST_PP_LOCAL_MACRO(119)
+# endif
+# if BOOST_PP_LOCAL_R(118)
+ BOOST_PP_LOCAL_MACRO(118)
+# endif
+# if BOOST_PP_LOCAL_R(117)
+ BOOST_PP_LOCAL_MACRO(117)
+# endif
+# if BOOST_PP_LOCAL_R(116)
+ BOOST_PP_LOCAL_MACRO(116)
+# endif
+# if BOOST_PP_LOCAL_R(115)
+ BOOST_PP_LOCAL_MACRO(115)
+# endif
+# if BOOST_PP_LOCAL_R(114)
+ BOOST_PP_LOCAL_MACRO(114)
+# endif
+# if BOOST_PP_LOCAL_R(113)
+ BOOST_PP_LOCAL_MACRO(113)
+# endif
+# if BOOST_PP_LOCAL_R(112)
+ BOOST_PP_LOCAL_MACRO(112)
+# endif
+# if BOOST_PP_LOCAL_R(111)
+ BOOST_PP_LOCAL_MACRO(111)
+# endif
+# if BOOST_PP_LOCAL_R(110)
+ BOOST_PP_LOCAL_MACRO(110)
+# endif
+# if BOOST_PP_LOCAL_R(109)
+ BOOST_PP_LOCAL_MACRO(109)
+# endif
+# if BOOST_PP_LOCAL_R(108)
+ BOOST_PP_LOCAL_MACRO(108)
+# endif
+# if BOOST_PP_LOCAL_R(107)
+ BOOST_PP_LOCAL_MACRO(107)
+# endif
+# if BOOST_PP_LOCAL_R(106)
+ BOOST_PP_LOCAL_MACRO(106)
+# endif
+# if BOOST_PP_LOCAL_R(105)
+ BOOST_PP_LOCAL_MACRO(105)
+# endif
+# if BOOST_PP_LOCAL_R(104)
+ BOOST_PP_LOCAL_MACRO(104)
+# endif
+# if BOOST_PP_LOCAL_R(103)
+ BOOST_PP_LOCAL_MACRO(103)
+# endif
+# if BOOST_PP_LOCAL_R(102)
+ BOOST_PP_LOCAL_MACRO(102)
+# endif
+# if BOOST_PP_LOCAL_R(101)
+ BOOST_PP_LOCAL_MACRO(101)
+# endif
+# if BOOST_PP_LOCAL_R(100)
+ BOOST_PP_LOCAL_MACRO(100)
+# endif
+# if BOOST_PP_LOCAL_R(99)
+ BOOST_PP_LOCAL_MACRO(99)
+# endif
+# if BOOST_PP_LOCAL_R(98)
+ BOOST_PP_LOCAL_MACRO(98)
+# endif
+# if BOOST_PP_LOCAL_R(97)
+ BOOST_PP_LOCAL_MACRO(97)
+# endif
+# if BOOST_PP_LOCAL_R(96)
+ BOOST_PP_LOCAL_MACRO(96)
+# endif
+# if BOOST_PP_LOCAL_R(95)
+ BOOST_PP_LOCAL_MACRO(95)
+# endif
+# if BOOST_PP_LOCAL_R(94)
+ BOOST_PP_LOCAL_MACRO(94)
+# endif
+# if BOOST_PP_LOCAL_R(93)
+ BOOST_PP_LOCAL_MACRO(93)
+# endif
+# if BOOST_PP_LOCAL_R(92)
+ BOOST_PP_LOCAL_MACRO(92)
+# endif
+# if BOOST_PP_LOCAL_R(91)
+ BOOST_PP_LOCAL_MACRO(91)
+# endif
+# if BOOST_PP_LOCAL_R(90)
+ BOOST_PP_LOCAL_MACRO(90)
+# endif
+# if BOOST_PP_LOCAL_R(89)
+ BOOST_PP_LOCAL_MACRO(89)
+# endif
+# if BOOST_PP_LOCAL_R(88)
+ BOOST_PP_LOCAL_MACRO(88)
+# endif
+# if BOOST_PP_LOCAL_R(87)
+ BOOST_PP_LOCAL_MACRO(87)
+# endif
+# if BOOST_PP_LOCAL_R(86)
+ BOOST_PP_LOCAL_MACRO(86)
+# endif
+# if BOOST_PP_LOCAL_R(85)
+ BOOST_PP_LOCAL_MACRO(85)
+# endif
+# if BOOST_PP_LOCAL_R(84)
+ BOOST_PP_LOCAL_MACRO(84)
+# endif
+# if BOOST_PP_LOCAL_R(83)
+ BOOST_PP_LOCAL_MACRO(83)
+# endif
+# if BOOST_PP_LOCAL_R(82)
+ BOOST_PP_LOCAL_MACRO(82)
+# endif
+# if BOOST_PP_LOCAL_R(81)
+ BOOST_PP_LOCAL_MACRO(81)
+# endif
+# if BOOST_PP_LOCAL_R(80)
+ BOOST_PP_LOCAL_MACRO(80)
+# endif
+# if BOOST_PP_LOCAL_R(79)
+ BOOST_PP_LOCAL_MACRO(79)
+# endif
+# if BOOST_PP_LOCAL_R(78)
+ BOOST_PP_LOCAL_MACRO(78)
+# endif
+# if BOOST_PP_LOCAL_R(77)
+ BOOST_PP_LOCAL_MACRO(77)
+# endif
+# if BOOST_PP_LOCAL_R(76)
+ BOOST_PP_LOCAL_MACRO(76)
+# endif
+# if BOOST_PP_LOCAL_R(75)
+ BOOST_PP_LOCAL_MACRO(75)
+# endif
+# if BOOST_PP_LOCAL_R(74)
+ BOOST_PP_LOCAL_MACRO(74)
+# endif
+# if BOOST_PP_LOCAL_R(73)
+ BOOST_PP_LOCAL_MACRO(73)
+# endif
+# if BOOST_PP_LOCAL_R(72)
+ BOOST_PP_LOCAL_MACRO(72)
+# endif
+# if BOOST_PP_LOCAL_R(71)
+ BOOST_PP_LOCAL_MACRO(71)
+# endif
+# if BOOST_PP_LOCAL_R(70)
+ BOOST_PP_LOCAL_MACRO(70)
+# endif
+# if BOOST_PP_LOCAL_R(69)
+ BOOST_PP_LOCAL_MACRO(69)
+# endif
+# if BOOST_PP_LOCAL_R(68)
+ BOOST_PP_LOCAL_MACRO(68)
+# endif
+# if BOOST_PP_LOCAL_R(67)
+ BOOST_PP_LOCAL_MACRO(67)
+# endif
+# if BOOST_PP_LOCAL_R(66)
+ BOOST_PP_LOCAL_MACRO(66)
+# endif
+# if BOOST_PP_LOCAL_R(65)
+ BOOST_PP_LOCAL_MACRO(65)
+# endif
+# if BOOST_PP_LOCAL_R(64)
+ BOOST_PP_LOCAL_MACRO(64)
+# endif
+# if BOOST_PP_LOCAL_R(63)
+ BOOST_PP_LOCAL_MACRO(63)
+# endif
+# if BOOST_PP_LOCAL_R(62)
+ BOOST_PP_LOCAL_MACRO(62)
+# endif
+# if BOOST_PP_LOCAL_R(61)
+ BOOST_PP_LOCAL_MACRO(61)
+# endif
+# if BOOST_PP_LOCAL_R(60)
+ BOOST_PP_LOCAL_MACRO(60)
+# endif
+# if BOOST_PP_LOCAL_R(59)
+ BOOST_PP_LOCAL_MACRO(59)
+# endif
+# if BOOST_PP_LOCAL_R(58)
+ BOOST_PP_LOCAL_MACRO(58)
+# endif
+# if BOOST_PP_LOCAL_R(57)
+ BOOST_PP_LOCAL_MACRO(57)
+# endif
+# if BOOST_PP_LOCAL_R(56)
+ BOOST_PP_LOCAL_MACRO(56)
+# endif
+# if BOOST_PP_LOCAL_R(55)
+ BOOST_PP_LOCAL_MACRO(55)
+# endif
+# if BOOST_PP_LOCAL_R(54)
+ BOOST_PP_LOCAL_MACRO(54)
+# endif
+# if BOOST_PP_LOCAL_R(53)
+ BOOST_PP_LOCAL_MACRO(53)
+# endif
+# if BOOST_PP_LOCAL_R(52)
+ BOOST_PP_LOCAL_MACRO(52)
+# endif
+# if BOOST_PP_LOCAL_R(51)
+ BOOST_PP_LOCAL_MACRO(51)
+# endif
+# if BOOST_PP_LOCAL_R(50)
+ BOOST_PP_LOCAL_MACRO(50)
+# endif
+# if BOOST_PP_LOCAL_R(49)
+ BOOST_PP_LOCAL_MACRO(49)
+# endif
+# if BOOST_PP_LOCAL_R(48)
+ BOOST_PP_LOCAL_MACRO(48)
+# endif
+# if BOOST_PP_LOCAL_R(47)
+ BOOST_PP_LOCAL_MACRO(47)
+# endif
+# if BOOST_PP_LOCAL_R(46)
+ BOOST_PP_LOCAL_MACRO(46)
+# endif
+# if BOOST_PP_LOCAL_R(45)
+ BOOST_PP_LOCAL_MACRO(45)
+# endif
+# if BOOST_PP_LOCAL_R(44)
+ BOOST_PP_LOCAL_MACRO(44)
+# endif
+# if BOOST_PP_LOCAL_R(43)
+ BOOST_PP_LOCAL_MACRO(43)
+# endif
+# if BOOST_PP_LOCAL_R(42)
+ BOOST_PP_LOCAL_MACRO(42)
+# endif
+# if BOOST_PP_LOCAL_R(41)
+ BOOST_PP_LOCAL_MACRO(41)
+# endif
+# if BOOST_PP_LOCAL_R(40)
+ BOOST_PP_LOCAL_MACRO(40)
+# endif
+# if BOOST_PP_LOCAL_R(39)
+ BOOST_PP_LOCAL_MACRO(39)
+# endif
+# if BOOST_PP_LOCAL_R(38)
+ BOOST_PP_LOCAL_MACRO(38)
+# endif
+# if BOOST_PP_LOCAL_R(37)
+ BOOST_PP_LOCAL_MACRO(37)
+# endif
+# if BOOST_PP_LOCAL_R(36)
+ BOOST_PP_LOCAL_MACRO(36)
+# endif
+# if BOOST_PP_LOCAL_R(35)
+ BOOST_PP_LOCAL_MACRO(35)
+# endif
+# if BOOST_PP_LOCAL_R(34)
+ BOOST_PP_LOCAL_MACRO(34)
+# endif
+# if BOOST_PP_LOCAL_R(33)
+ BOOST_PP_LOCAL_MACRO(33)
+# endif
+# if BOOST_PP_LOCAL_R(32)
+ BOOST_PP_LOCAL_MACRO(32)
+# endif
+# if BOOST_PP_LOCAL_R(31)
+ BOOST_PP_LOCAL_MACRO(31)
+# endif
+# if BOOST_PP_LOCAL_R(30)
+ BOOST_PP_LOCAL_MACRO(30)
+# endif
+# if BOOST_PP_LOCAL_R(29)
+ BOOST_PP_LOCAL_MACRO(29)
+# endif
+# if BOOST_PP_LOCAL_R(28)
+ BOOST_PP_LOCAL_MACRO(28)
+# endif
+# if BOOST_PP_LOCAL_R(27)
+ BOOST_PP_LOCAL_MACRO(27)
+# endif
+# if BOOST_PP_LOCAL_R(26)
+ BOOST_PP_LOCAL_MACRO(26)
+# endif
+# if BOOST_PP_LOCAL_R(25)
+ BOOST_PP_LOCAL_MACRO(25)
+# endif
+# if BOOST_PP_LOCAL_R(24)
+ BOOST_PP_LOCAL_MACRO(24)
+# endif
+# if BOOST_PP_LOCAL_R(23)
+ BOOST_PP_LOCAL_MACRO(23)
+# endif
+# if BOOST_PP_LOCAL_R(22)
+ BOOST_PP_LOCAL_MACRO(22)
+# endif
+# if BOOST_PP_LOCAL_R(21)
+ BOOST_PP_LOCAL_MACRO(21)
+# endif
+# if BOOST_PP_LOCAL_R(20)
+ BOOST_PP_LOCAL_MACRO(20)
+# endif
+# if BOOST_PP_LOCAL_R(19)
+ BOOST_PP_LOCAL_MACRO(19)
+# endif
+# if BOOST_PP_LOCAL_R(18)
+ BOOST_PP_LOCAL_MACRO(18)
+# endif
+# if BOOST_PP_LOCAL_R(17)
+ BOOST_PP_LOCAL_MACRO(17)
+# endif
+# if BOOST_PP_LOCAL_R(16)
+ BOOST_PP_LOCAL_MACRO(16)
+# endif
+# if BOOST_PP_LOCAL_R(15)
+ BOOST_PP_LOCAL_MACRO(15)
+# endif
+# if BOOST_PP_LOCAL_R(14)
+ BOOST_PP_LOCAL_MACRO(14)
+# endif
+# if BOOST_PP_LOCAL_R(13)
+ BOOST_PP_LOCAL_MACRO(13)
+# endif
+# if BOOST_PP_LOCAL_R(12)
+ BOOST_PP_LOCAL_MACRO(12)
+# endif
+# if BOOST_PP_LOCAL_R(11)
+ BOOST_PP_LOCAL_MACRO(11)
+# endif
+# if BOOST_PP_LOCAL_R(10)
+ BOOST_PP_LOCAL_MACRO(10)
+# endif
+# if BOOST_PP_LOCAL_R(9)
+ BOOST_PP_LOCAL_MACRO(9)
+# endif
+# if BOOST_PP_LOCAL_R(8)
+ BOOST_PP_LOCAL_MACRO(8)
+# endif
+# if BOOST_PP_LOCAL_R(7)
+ BOOST_PP_LOCAL_MACRO(7)
+# endif
+# if BOOST_PP_LOCAL_R(6)
+ BOOST_PP_LOCAL_MACRO(6)
+# endif
+# if BOOST_PP_LOCAL_R(5)
+ BOOST_PP_LOCAL_MACRO(5)
+# endif
+# if BOOST_PP_LOCAL_R(4)
+ BOOST_PP_LOCAL_MACRO(4)
+# endif
+# if BOOST_PP_LOCAL_R(3)
+ BOOST_PP_LOCAL_MACRO(3)
+# endif
+# if BOOST_PP_LOCAL_R(2)
+ BOOST_PP_LOCAL_MACRO(2)
+# endif
+# if BOOST_PP_LOCAL_R(1)
+ BOOST_PP_LOCAL_MACRO(1)
+# endif
+# if BOOST_PP_LOCAL_R(0)
+ BOOST_PP_LOCAL_MACRO(0)
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/self.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/self.hpp
new file mode 100644
index 0000000..757185c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/self.hpp
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !defined(BOOST_PP_INDIRECT_SELF)
+# error BOOST_PP_ERROR: no indirect file to include
+# endif
+#
+# define BOOST_PP_IS_SELFISH 1
+#
+# include BOOST_PP_INDIRECT_SELF
+#
+# undef BOOST_PP_IS_SELFISH
+# undef BOOST_PP_INDIRECT_SELF
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/start.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/start.hpp
new file mode 100644
index 0000000..cbf0381
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/detail/start.hpp
@@ -0,0 +1,99 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_LOCAL_SE
+#
+# undef BOOST_PP_LOCAL_SE_DIGIT_1
+# undef BOOST_PP_LOCAL_SE_DIGIT_2
+# undef BOOST_PP_LOCAL_SE_DIGIT_3
+# undef BOOST_PP_LOCAL_SE_DIGIT_4
+# undef BOOST_PP_LOCAL_SE_DIGIT_5
+# undef BOOST_PP_LOCAL_SE_DIGIT_6
+# undef BOOST_PP_LOCAL_SE_DIGIT_7
+# undef BOOST_PP_LOCAL_SE_DIGIT_8
+# undef BOOST_PP_LOCAL_SE_DIGIT_9
+# undef BOOST_PP_LOCAL_SE_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_LOCAL_SE_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_LOCAL_SE_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_LOCAL_SE_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_LOCAL_SE_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_LOCAL_SE_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_LOCAL_SE_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_LOCAL_SE_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_LOCAL_SE_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_LOCAL_SE_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_LOCAL_SE_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_LOCAL_SE_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_LOCAL_SE_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_LOCAL_SE_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_LOCAL_SE_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_LOCAL_SE_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_LOCAL_SE_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_LOCAL_SE_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_LOCAL_SE_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_LOCAL_SE_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_LOCAL_SE_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_LOCAL_SE_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_LOCAL_SE_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_LOCAL_SE_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_LOCAL_SE_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_LOCAL_SE_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_LOCAL_SE_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_LOCAL_SE_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_LOCAL_SE_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_LOCAL_SE_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_LOCAL_SE_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_LOCAL_SE_DIGIT_3
+# define BOOST_PP_LOCAL_SE() BOOST_PP_SLOT_CC_3(BOOST_PP_LOCAL_SE_DIGIT_3, BOOST_PP_LOCAL_SE_DIGIT_2, BOOST_PP_LOCAL_SE_DIGIT_1)
+# elif BOOST_PP_LOCAL_SE_DIGIT_2
+# define BOOST_PP_LOCAL_SE() BOOST_PP_SLOT_CC_2(BOOST_PP_LOCAL_SE_DIGIT_2, BOOST_PP_LOCAL_SE_DIGIT_1)
+# else
+# define BOOST_PP_LOCAL_SE() BOOST_PP_LOCAL_SE_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/iterate.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/iterate.hpp
new file mode 100644
index 0000000..8f861e7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/iterate.hpp
@@ -0,0 +1,82 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
+# define BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/slot/slot.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_ITERATION_DEPTH */
+#
+# define BOOST_PP_ITERATION_DEPTH() 0
+#
+# /* BOOST_PP_ITERATION */
+#
+# define BOOST_PP_ITERATION() BOOST_PP_CAT(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
+#
+# /* BOOST_PP_ITERATION_START && BOOST_PP_ITERATION_FINISH */
+#
+# define BOOST_PP_ITERATION_START() BOOST_PP_CAT(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
+# define BOOST_PP_ITERATION_FINISH() BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
+#
+# /* BOOST_PP_ITERATION_FLAGS */
+#
+# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH())())
+#
+# /* BOOST_PP_FRAME_ITERATION */
+#
+# define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_CAT(BOOST_PP_ITERATION_, i)
+#
+# /* BOOST_PP_FRAME_START && BOOST_PP_FRAME_FINISH */
+#
+# define BOOST_PP_FRAME_START(i) BOOST_PP_CAT(BOOST_PP_ITERATION_START_, i)
+# define BOOST_PP_FRAME_FINISH(i) BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, i)
+#
+# /* BOOST_PP_FRAME_FLAGS */
+#
+# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i)())
+#
+# /* BOOST_PP_RELATIVE_ITERATION */
+#
+# define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
+#
+# define BOOST_PP_RELATIVE_0(m) BOOST_PP_CAT(m, BOOST_PP_ITERATION_DEPTH())
+# define BOOST_PP_RELATIVE_1(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
+# define BOOST_PP_RELATIVE_2(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
+# define BOOST_PP_RELATIVE_3(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
+# define BOOST_PP_RELATIVE_4(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
+#
+# /* BOOST_PP_RELATIVE_START && BOOST_PP_RELATIVE_FINISH */
+#
+# define BOOST_PP_RELATIVE_START(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
+# define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
+#
+# /* BOOST_PP_RELATIVE_FLAGS */
+#
+# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_)())
+#
+# /* BOOST_PP_ITERATE */
+#
+# define BOOST_PP_ITERATE() BOOST_PP_CAT(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
+#
+# define BOOST_PP_ITERATE_1 <boost/preprocessor/iteration/detail/iter/forward1.hpp>
+# define BOOST_PP_ITERATE_2 <boost/preprocessor/iteration/detail/iter/forward2.hpp>
+# define BOOST_PP_ITERATE_3 <boost/preprocessor/iteration/detail/iter/forward3.hpp>
+# define BOOST_PP_ITERATE_4 <boost/preprocessor/iteration/detail/iter/forward4.hpp>
+# define BOOST_PP_ITERATE_5 <boost/preprocessor/iteration/detail/iter/forward5.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/local.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/local.hpp
new file mode 100644
index 0000000..289fb1a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/local.hpp
@@ -0,0 +1,26 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
+# define BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/slot/slot.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_LOCAL_ITERATE */
+#
+# define BOOST_PP_LOCAL_ITERATE() <boost/preprocessor/iteration/detail/local.hpp>
+#
+# define BOOST_PP_LOCAL_C(n) (BOOST_PP_LOCAL_S) <= n && (BOOST_PP_LOCAL_F) >= n
+# define BOOST_PP_LOCAL_R(n) (BOOST_PP_LOCAL_F) <= n && (BOOST_PP_LOCAL_S) >= n
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/self.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/self.hpp
new file mode 100644
index 0000000..6e0464c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/iteration/self.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_ITERATION_SELF_HPP
+# define BOOST_PREPROCESSOR_ITERATION_SELF_HPP
+#
+# /* BOOST_PP_INCLUDE_SELF */
+#
+# define BOOST_PP_INCLUDE_SELF() <boost/preprocessor/iteration/detail/self.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/library.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/library.hpp
new file mode 100644
index 0000000..3fb03d8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/library.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIBRARY_HPP
+# define BOOST_PREPROCESSOR_LIBRARY_HPP
+#
+# include <boost/preprocessor/arithmetic.hpp>
+# include <boost/preprocessor/array.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/comparison.hpp>
+# include <boost/preprocessor/config/limits.hpp>
+# include <boost/preprocessor/control.hpp>
+# include <boost/preprocessor/debug.hpp>
+# include <boost/preprocessor/facilities.hpp>
+# include <boost/preprocessor/iteration.hpp>
+# include <boost/preprocessor/list.hpp>
+# include <boost/preprocessor/logical.hpp>
+# include <boost/preprocessor/punctuation.hpp>
+# include <boost/preprocessor/repetition.hpp>
+# include <boost/preprocessor/selection.hpp>
+# include <boost/preprocessor/seq.hpp>
+# include <boost/preprocessor/slot.hpp>
+# include <boost/preprocessor/stringize.hpp>
+# include <boost/preprocessor/tuple.hpp>
+# include <boost/preprocessor/variadic.hpp>
+# include <boost/preprocessor/wstringize.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/limits.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/limits.hpp
new file mode 100644
index 0000000..e264cc3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/limits.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIMITS_HPP
+# define BOOST_PREPROCESSOR_LIMITS_HPP
+#
+# include <boost/preprocessor/config/limits.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list.hpp
new file mode 100644
index 0000000..ef592c2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list.hpp
@@ -0,0 +1,37 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_HPP
+# define BOOST_PREPROCESSOR_LIST_HPP
+#
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/append.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/cat.hpp>
+# include <boost/preprocessor/list/enum.hpp>
+# include <boost/preprocessor/list/filter.hpp>
+# include <boost/preprocessor/list/first_n.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/list/for_each.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/list/for_each_product.hpp>
+# include <boost/preprocessor/list/rest_n.hpp>
+# include <boost/preprocessor/list/reverse.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/list/to_array.hpp>
+# include <boost/preprocessor/list/to_seq.hpp>
+# include <boost/preprocessor/list/to_tuple.hpp>
+# include <boost/preprocessor/list/transform.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/adt.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/adt.hpp
new file mode 100644
index 0000000..b4f12ba
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/adt.hpp
@@ -0,0 +1,73 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# *
+# * See http://www.boost.org for most recent version.
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_ADT_HPP
+# define BOOST_PREPROCESSOR_LIST_ADT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/detail/is_binary.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_LIST_CONS */
+#
+# define BOOST_PP_LIST_CONS(head, tail) (head, tail)
+#
+# /* BOOST_PP_LIST_NIL */
+#
+# define BOOST_PP_LIST_NIL BOOST_PP_NIL
+#
+# /* BOOST_PP_LIST_FIRST */
+#
+# define BOOST_PP_LIST_FIRST(list) BOOST_PP_LIST_FIRST_D(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I list
+# else
+# define BOOST_PP_LIST_FIRST_D(list) BOOST_PP_LIST_FIRST_I ## list
+# endif
+#
+# define BOOST_PP_LIST_FIRST_I(head, tail) head
+#
+# /* BOOST_PP_LIST_REST */
+#
+# define BOOST_PP_LIST_REST(list) BOOST_PP_LIST_REST_D(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I list
+# else
+# define BOOST_PP_LIST_REST_D(list) BOOST_PP_LIST_REST_I ## list
+# endif
+#
+# define BOOST_PP_LIST_REST_I(head, tail) tail
+#
+# /* BOOST_PP_LIST_IS_CONS */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+# define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_LIST_IS_CONS_D(list)
+# define BOOST_PP_LIST_IS_CONS_D(list) BOOST_PP_LIST_IS_CONS_ ## list
+# define BOOST_PP_LIST_IS_CONS_(head, tail) 1
+# define BOOST_PP_LIST_IS_CONS_BOOST_PP_NIL 0
+# else
+# define BOOST_PP_LIST_IS_CONS(list) BOOST_PP_IS_BINARY(list)
+# endif
+#
+# /* BOOST_PP_LIST_IS_NIL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
+# define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_IS_BINARY(list))
+# else
+# define BOOST_PP_LIST_IS_NIL(list) BOOST_PP_COMPL(BOOST_PP_LIST_IS_CONS(list))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/append.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/append.hpp
new file mode 100644
index 0000000..26e9d74
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/append.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_APPEND_HPP
+# define BOOST_PREPROCESSOR_LIST_APPEND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+#
+# /* BOOST_PP_LIST_APPEND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
+# else
+# define BOOST_PP_LIST_APPEND(a, b) BOOST_PP_LIST_APPEND_I(a, b)
+# define BOOST_PP_LIST_APPEND_I(a, b) BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# define BOOST_PP_LIST_APPEND_O(d, s, x) (x, s)
+#
+# /* BOOST_PP_LIST_APPEND_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
+# else
+# define BOOST_PP_LIST_APPEND_D(d, a, b) BOOST_PP_LIST_APPEND_D_I(d, a, b)
+# define BOOST_PP_LIST_APPEND_D_I(d, a, b) BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_APPEND_O, b, a)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/at.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/at.hpp
new file mode 100644
index 0000000..125669b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/at.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_AT_HPP
+# define BOOST_PREPROCESSOR_LIST_AT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/rest_n.hpp>
+#
+# /* BOOST_PP_LIST_AT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
+# else
+# define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_AT_I(list, index)
+# define BOOST_PP_LIST_AT_I(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
+# endif
+#
+# /* BOOST_PP_LIST_AT_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
+# else
+# define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_AT_D_I(d, list, index)
+# define BOOST_PP_LIST_AT_D_I(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/cat.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/cat.hpp
new file mode 100644
index 0000000..1ef74bf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/cat.hpp
@@ -0,0 +1,42 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_CAT_HPP
+# define BOOST_PREPROCESSOR_LIST_CAT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+#
+# /* BOOST_PP_LIST_CAT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_CAT(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list))
+# else
+# define BOOST_PP_LIST_CAT(list) BOOST_PP_LIST_CAT_I(list)
+# define BOOST_PP_LIST_CAT_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list))
+# endif
+#
+# define BOOST_PP_LIST_CAT_O(d, s, x) BOOST_PP_CAT(s, x)
+#
+# /* BOOST_PP_LIST_CAT_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_CAT_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list))
+# else
+# define BOOST_PP_LIST_CAT_D(d, list) BOOST_PP_LIST_CAT_D_I(d, list)
+# define BOOST_PP_LIST_CAT_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_CAT_O, BOOST_PP_LIST_FIRST(list), BOOST_PP_LIST_REST(list))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/dmc/fold_left.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/dmc/fold_left.hpp
new file mode 100644
index 0000000..844ac5b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/dmc/fold_left.hpp
@@ -0,0 +1,279 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, BOOST_PP_TUPLE_ELEM_3_1)(o, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, BOOST_PP_TUPLE_ELEM_3_1)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/edg/fold_left.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/edg/fold_left.hpp
new file mode 100644
index 0000000..ae9524f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/edg/fold_left.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l)
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/edg/fold_right.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/edg/fold_right.hpp
new file mode 100644
index 0000000..d372d2e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/edg/fold_right.hpp
@@ -0,0 +1,794 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_EDG_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l)
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_1_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(2, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_2, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_2_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(3, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_3, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_3_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(4, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_4, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_4_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(5, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_5, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_5_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(6, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_6, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_6_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(7, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_7, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_7_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(8, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_8, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_8_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(9, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_9, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_9_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(10, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_10, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_10_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(11, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_11, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_11_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(12, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_12, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_12_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(13, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_13, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_13_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(14, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_14, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_14_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(15, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_15, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_15_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(16, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_16, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_16_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(17, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_17, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_17_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(18, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_18, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_18_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(19, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_19, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_19_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(20, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_20, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_20_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(21, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_21, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_21_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(22, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_22, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_22_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(23, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_23, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_23_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(24, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_24, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_24_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(25, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_25, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_25_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(26, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_26, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_26_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(27, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_27, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_27_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(28, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_28, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_28_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(29, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_29, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_29_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(30, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_30, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_30_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(31, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_31, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_31_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(32, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_32, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_32_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(33, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_33, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_33_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(34, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_34, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_34_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(35, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_35, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_35_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(36, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_36, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_36_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(37, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_37, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_37_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(38, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_38, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_38_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(39, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_39, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_39_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(40, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_40, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_40_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(41, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_41, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_41_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(42, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_42, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_42_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(43, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_43, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_43_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(44, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_44, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_44_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(45, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_45, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_45_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(46, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_46, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_46_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(47, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_47, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_47_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(48, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_48, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_48_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(49, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_49, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_49_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(50, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_50, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_50_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(51, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_51, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_51_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(52, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_52, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_52_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(53, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_53, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_53_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(54, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_54, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_54_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(55, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_55, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_55_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(56, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_56, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_56_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(57, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_57, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_57_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(58, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_58, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_58_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(59, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_59, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_59_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(60, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_60, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_60_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(61, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_61, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_61_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(62, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_62, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_62_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(63, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_63, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_63_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(64, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_64, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_64_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(65, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_65, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_65_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(66, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_66, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_66_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(67, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_67, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_67_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(68, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_68, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_68_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(69, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_69, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_69_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(70, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_70, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_70_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(71, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_71, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_71_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(72, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_72, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_72_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(73, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_73, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_73_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(74, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_74, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_74_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(75, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_75, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_75_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(76, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_76, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_76_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(77, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_77, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_77_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(78, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_78, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_78_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(79, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_79, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_79_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(80, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_80, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_80_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(81, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_81, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_81_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(82, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_82, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_82_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(83, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_83, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_83_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(84, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_84, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_84_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(85, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_85, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_85_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(86, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_86, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_86_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(87, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_87, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_87_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(88, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_88, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_88_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(89, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_89, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_89_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(90, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_90, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_90_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(91, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_91, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_91_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(92, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_92, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_92_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(93, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_93, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_93_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(94, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_94, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_94_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(95, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_95, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_95_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(96, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_96, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_96_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(97, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_97, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_97_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(98, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_98, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_98_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(99, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_99, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_99_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(100, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_100, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_100_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(101, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_101, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_101_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(102, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_102, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_102_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(103, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_103, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_103_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(104, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_104, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_104_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(105, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_105, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_105_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(106, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_106, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_106_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(107, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_107, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_107_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(108, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_108, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_108_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(109, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_109, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_109_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(110, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_110, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_110_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(111, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_111, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_111_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(112, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_112, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_112_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(113, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_113, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_113_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(114, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_114, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_114_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(115, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_115, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_115_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(116, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_116, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_116_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(117, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_117, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_117_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(118, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_118, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_118_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(119, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_119, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_119_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(120, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_120, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_120_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(121, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_121, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_121_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(122, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_122, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_122_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(123, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_123, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_123_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(124, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_124, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_124_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(125, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_125, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_125_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(126, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_126, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_126_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(127, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_127, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_127_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(128, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_128, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_128_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(129, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_129, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_129_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(130, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_130, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_130_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(131, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_131, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_131_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(132, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_132, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_132_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(133, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_133, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_133_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(134, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_134, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_134_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(135, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_135, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_135_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(136, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_136, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_136_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(137, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_137, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_137_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(138, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_138, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_138_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(139, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_139, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_139_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(140, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_140, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_140_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(141, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_141, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_141_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(142, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_142, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_142_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(143, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_143, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_143_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(144, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_144, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_144_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(145, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_145, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_145_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(146, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_146, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_146_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(147, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_147, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_147_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(148, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_148, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_148_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(149, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_149, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_149_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(150, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_150, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_150_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(151, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_151, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_151_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(152, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_152, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_152_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(153, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_153, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_153_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(154, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_154, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_154_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(155, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_155, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_155_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(156, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_156, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_156_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(157, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_157, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_157_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(158, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_158, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_158_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(159, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_159, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_159_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(160, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_160, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_160_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(161, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_161, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_161_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(162, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_162, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_162_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(163, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_163, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_163_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(164, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_164, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_164_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(165, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_165, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_165_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(166, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_166, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_166_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(167, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_167, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_167_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(168, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_168, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_168_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(169, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_169, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_169_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(170, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_170, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_170_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(171, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_171, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_171_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(172, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_172, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_172_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(173, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_173, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_173_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(174, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_174, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_174_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(175, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_175, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_175_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(176, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_176, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_176_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(177, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_177, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_177_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(178, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_178, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_178_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(179, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_179, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_179_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(180, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_180, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_180_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(181, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_181, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_181_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(182, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_182, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_182_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(183, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_183, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_183_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(184, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_184, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_184_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(185, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_185, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_185_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(186, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_186, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_186_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(187, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_187, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_187_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(188, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_188, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_188_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(189, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_189, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_189_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(190, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_190, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_190_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(191, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_191, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_191_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(192, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_192, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_192_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(193, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_193, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_193_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(194, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_194, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_194_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(195, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_195, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_195_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(196, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_196, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_196_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(197, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_197, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_197_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(198, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_198, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_198_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(199, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_199, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_199_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(200, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_200, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_200_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(201, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_201, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_201_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(202, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_202, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_202_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(203, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_203, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_203_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(204, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_204, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_204_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(205, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_205, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_205_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(206, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_206, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_206_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(207, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_207, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_207_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(208, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_208, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_208_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(209, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_209, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_209_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(210, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_210, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_210_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(211, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_211, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_211_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(212, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_212, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_212_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(213, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_213, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_213_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(214, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_214, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_214_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(215, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_215, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_215_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(216, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_216, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_216_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(217, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_217, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_217_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(218, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_218, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_218_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(219, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_219, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_219_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(220, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_220, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_220_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(221, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_221, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_221_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(222, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_222, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_222_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(223, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_223, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_223_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(224, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_224, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_224_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(225, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_225, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_225_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(226, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_226, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_226_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(227, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_227, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_227_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(228, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_228, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_228_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(229, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_229, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_229_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(230, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_230, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_230_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(231, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_231, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_231_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(232, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_232, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_232_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(233, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_233, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_233_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(234, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_234, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_234_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(235, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_235, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_235_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(236, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_236, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_236_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(237, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_237, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_237_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(238, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_238, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_238_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(239, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_239, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_239_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(240, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_240, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_240_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(241, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_241, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_241_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(242, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_242, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_242_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(243, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_243, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_243_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(244, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_244, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_244_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(245, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_245, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_245_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(246, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_246, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_246_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(247, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_247, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_247_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(248, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_248, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_248_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(249, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_249, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_249_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(250, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_250, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_250_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(251, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_251, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_251_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(252, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_252, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_252_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(253, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_253, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_253_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(254, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_254, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_254_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(255, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_255, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_255_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(256, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_256, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+# define BOOST_PP_LIST_FOLD_RIGHT_256_D(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), o, s BOOST_PP_TUPLE_EAT_3)(257, BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_RIGHT_257, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3)(o, s, BOOST_PP_LIST_REST(l)), BOOST_PP_LIST_FIRST(l))
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_RIGHT_CHECK_BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/fold_left.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/fold_left.hpp
new file mode 100644
index 0000000..f5fcab7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/fold_left.hpp
@@ -0,0 +1,279 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_2, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(2, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_3, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(3, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_4, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(4, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_5, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(5, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_6, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(6, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_7, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(7, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_8, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(8, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_9, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(9, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_10, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(10, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_11, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(11, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_12, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(12, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_13, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(13, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_14, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(14, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_15, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(15, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_16, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(16, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_17, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(17, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_18, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(18, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_19, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(19, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_20, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(20, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_21, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(21, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_22, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(22, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_23, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(23, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_24, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(24, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_25, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(25, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_26, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(26, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_27, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(27, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_28, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(28, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_29, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(29, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_30, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(30, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_31, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(31, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_32, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(32, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_33, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(33, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_34, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(34, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_35, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(35, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_36, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(36, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_37, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(37, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_38, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(38, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_39, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(39, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_40, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(40, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_41, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(41, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_42, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(42, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_43, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(43, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_44, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(44, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_45, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(45, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_46, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(46, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_47, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(47, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_48, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(48, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_49, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(49, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_50, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(50, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_51, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(51, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_52, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(52, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_53, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(53, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_54, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(54, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_55, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(55, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_56, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(56, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_57, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(57, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_58, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(58, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_59, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(59, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_60, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(60, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_61, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(61, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_62, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(62, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_63, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(63, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_64, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(64, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_65, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(65, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_66, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(66, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_67, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(67, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_68, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(68, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_69, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(69, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_70, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(70, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_71, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(71, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_72, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(72, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_73, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(73, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_74, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(74, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_75, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(75, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_76, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(76, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_77, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(77, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_78, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(78, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_79, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(79, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_80, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(80, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_81, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(81, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_82, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(82, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_83, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(83, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_84, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(84, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_85, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(85, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_86, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(86, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_87, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(87, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_88, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(88, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_89, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(89, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_90, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(90, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_91, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(91, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_92, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(92, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_93, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(93, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_94, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(94, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_95, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(95, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_96, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(96, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_97, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(97, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_98, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(98, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_99, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(99, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_100, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(100, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_101, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(101, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_102, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(102, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_103, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(103, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_104, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(104, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_105, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(105, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_106, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(106, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_107, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(107, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_108, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(108, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_109, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(109, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_110, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(110, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_111, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(111, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_112, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(112, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_113, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(113, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_114, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(114, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_115, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(115, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_116, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(116, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_117, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(117, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_118, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(118, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_119, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(119, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_120, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(120, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_121, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(121, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_122, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(122, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_123, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(123, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_124, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(124, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_125, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(125, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_126, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(126, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_127, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(127, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_128, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(128, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_129, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(129, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_130, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(130, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_131, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(131, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_132, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(132, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_133, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(133, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_134, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(134, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_135, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(135, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_136, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(136, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_137, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(137, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_138, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(138, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_139, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(139, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_140, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(140, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_141, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(141, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_142, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(142, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_143, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(143, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_144, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(144, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_145, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(145, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_146, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(146, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_147, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(147, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_148, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(148, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_149, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(149, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_150, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(150, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_151, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(151, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_152, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(152, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_153, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(153, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_154, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(154, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_155, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(155, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_156, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(156, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_157, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(157, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_158, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(158, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_159, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(159, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_160, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(160, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_161, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(161, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_162, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(162, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_163, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(163, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_164, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(164, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_165, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(165, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_166, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(166, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_167, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(167, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_168, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(168, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_169, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(169, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_170, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(170, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_171, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(171, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_172, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(172, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_173, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(173, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_174, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(174, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_175, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(175, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_176, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(176, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_177, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(177, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_178, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(178, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_179, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(179, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_180, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(180, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_181, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(181, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_182, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(182, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_183, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(183, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_184, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(184, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_185, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(185, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_186, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(186, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_187, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(187, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_188, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(188, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_189, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(189, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_190, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(190, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_191, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(191, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_192, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(192, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_193, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(193, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_194, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(194, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_195, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(195, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_196, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(196, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_197, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(197, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_198, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(198, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_199, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(199, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_200, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(200, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_201, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(201, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_202, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(202, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_203, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(203, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_204, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(204, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_205, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(205, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_206, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(206, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_207, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(207, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_208, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(208, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_209, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(209, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_210, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(210, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_211, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(211, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_212, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(212, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_213, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(213, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_214, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(214, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_215, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(215, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_216, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(216, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_217, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(217, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_218, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(218, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_219, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(219, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_220, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(220, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_221, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(221, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_222, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(222, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_223, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(223, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_224, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(224, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_225, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(225, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_226, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(226, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_227, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(227, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_228, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(228, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_229, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(229, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_230, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(230, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_231, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(231, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_232, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(232, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_233, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(233, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_234, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(234, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_235, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(235, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_236, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(236, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_237, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(237, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_238, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(238, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_239, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(239, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_240, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(240, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_241, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(241, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_242, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(242, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_243, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(243, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_244, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(244, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_245, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(245, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_246, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(246, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_247, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(247, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_248, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(248, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_249, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(249, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_250, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(250, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_251, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(251, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_252, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(252, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_253, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(253, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_254, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(254, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_255, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(255, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_256, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(256, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+# define BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) BOOST_PP_IIF(BOOST_PP_LIST_IS_CONS(l), BOOST_PP_LIST_FOLD_LEFT_257, s BOOST_PP_TUPLE_EAT_3)(o, BOOST_PP_EXPR_IIF(BOOST_PP_LIST_IS_CONS(l), o)(257, s, BOOST_PP_LIST_FIRST(l)), BOOST_PP_LIST_REST(l))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/fold_right.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/fold_right.hpp
new file mode 100644
index 0000000..29146d5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/detail/fold_right.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_DETAIL_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/list/fold_left.hpp>
+# include <boost/preprocessor/list/reverse.hpp>
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_1(o, s, l) BOOST_PP_LIST_FOLD_LEFT_1(o, s, BOOST_PP_LIST_REVERSE_D(1, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_2(o, s, l) BOOST_PP_LIST_FOLD_LEFT_2(o, s, BOOST_PP_LIST_REVERSE_D(2, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_3(o, s, l) BOOST_PP_LIST_FOLD_LEFT_3(o, s, BOOST_PP_LIST_REVERSE_D(3, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_4(o, s, l) BOOST_PP_LIST_FOLD_LEFT_4(o, s, BOOST_PP_LIST_REVERSE_D(4, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_5(o, s, l) BOOST_PP_LIST_FOLD_LEFT_5(o, s, BOOST_PP_LIST_REVERSE_D(5, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_6(o, s, l) BOOST_PP_LIST_FOLD_LEFT_6(o, s, BOOST_PP_LIST_REVERSE_D(6, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_7(o, s, l) BOOST_PP_LIST_FOLD_LEFT_7(o, s, BOOST_PP_LIST_REVERSE_D(7, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_8(o, s, l) BOOST_PP_LIST_FOLD_LEFT_8(o, s, BOOST_PP_LIST_REVERSE_D(8, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_9(o, s, l) BOOST_PP_LIST_FOLD_LEFT_9(o, s, BOOST_PP_LIST_REVERSE_D(9, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_10(o, s, l) BOOST_PP_LIST_FOLD_LEFT_10(o, s, BOOST_PP_LIST_REVERSE_D(10, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_11(o, s, l) BOOST_PP_LIST_FOLD_LEFT_11(o, s, BOOST_PP_LIST_REVERSE_D(11, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_12(o, s, l) BOOST_PP_LIST_FOLD_LEFT_12(o, s, BOOST_PP_LIST_REVERSE_D(12, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_13(o, s, l) BOOST_PP_LIST_FOLD_LEFT_13(o, s, BOOST_PP_LIST_REVERSE_D(13, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_14(o, s, l) BOOST_PP_LIST_FOLD_LEFT_14(o, s, BOOST_PP_LIST_REVERSE_D(14, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_15(o, s, l) BOOST_PP_LIST_FOLD_LEFT_15(o, s, BOOST_PP_LIST_REVERSE_D(15, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_16(o, s, l) BOOST_PP_LIST_FOLD_LEFT_16(o, s, BOOST_PP_LIST_REVERSE_D(16, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_17(o, s, l) BOOST_PP_LIST_FOLD_LEFT_17(o, s, BOOST_PP_LIST_REVERSE_D(17, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_18(o, s, l) BOOST_PP_LIST_FOLD_LEFT_18(o, s, BOOST_PP_LIST_REVERSE_D(18, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_19(o, s, l) BOOST_PP_LIST_FOLD_LEFT_19(o, s, BOOST_PP_LIST_REVERSE_D(19, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_20(o, s, l) BOOST_PP_LIST_FOLD_LEFT_20(o, s, BOOST_PP_LIST_REVERSE_D(20, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_21(o, s, l) BOOST_PP_LIST_FOLD_LEFT_21(o, s, BOOST_PP_LIST_REVERSE_D(21, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_22(o, s, l) BOOST_PP_LIST_FOLD_LEFT_22(o, s, BOOST_PP_LIST_REVERSE_D(22, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_23(o, s, l) BOOST_PP_LIST_FOLD_LEFT_23(o, s, BOOST_PP_LIST_REVERSE_D(23, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_24(o, s, l) BOOST_PP_LIST_FOLD_LEFT_24(o, s, BOOST_PP_LIST_REVERSE_D(24, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_25(o, s, l) BOOST_PP_LIST_FOLD_LEFT_25(o, s, BOOST_PP_LIST_REVERSE_D(25, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_26(o, s, l) BOOST_PP_LIST_FOLD_LEFT_26(o, s, BOOST_PP_LIST_REVERSE_D(26, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_27(o, s, l) BOOST_PP_LIST_FOLD_LEFT_27(o, s, BOOST_PP_LIST_REVERSE_D(27, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_28(o, s, l) BOOST_PP_LIST_FOLD_LEFT_28(o, s, BOOST_PP_LIST_REVERSE_D(28, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_29(o, s, l) BOOST_PP_LIST_FOLD_LEFT_29(o, s, BOOST_PP_LIST_REVERSE_D(29, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_30(o, s, l) BOOST_PP_LIST_FOLD_LEFT_30(o, s, BOOST_PP_LIST_REVERSE_D(30, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_31(o, s, l) BOOST_PP_LIST_FOLD_LEFT_31(o, s, BOOST_PP_LIST_REVERSE_D(31, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_32(o, s, l) BOOST_PP_LIST_FOLD_LEFT_32(o, s, BOOST_PP_LIST_REVERSE_D(32, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_33(o, s, l) BOOST_PP_LIST_FOLD_LEFT_33(o, s, BOOST_PP_LIST_REVERSE_D(33, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_34(o, s, l) BOOST_PP_LIST_FOLD_LEFT_34(o, s, BOOST_PP_LIST_REVERSE_D(34, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_35(o, s, l) BOOST_PP_LIST_FOLD_LEFT_35(o, s, BOOST_PP_LIST_REVERSE_D(35, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_36(o, s, l) BOOST_PP_LIST_FOLD_LEFT_36(o, s, BOOST_PP_LIST_REVERSE_D(36, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_37(o, s, l) BOOST_PP_LIST_FOLD_LEFT_37(o, s, BOOST_PP_LIST_REVERSE_D(37, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_38(o, s, l) BOOST_PP_LIST_FOLD_LEFT_38(o, s, BOOST_PP_LIST_REVERSE_D(38, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_39(o, s, l) BOOST_PP_LIST_FOLD_LEFT_39(o, s, BOOST_PP_LIST_REVERSE_D(39, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_40(o, s, l) BOOST_PP_LIST_FOLD_LEFT_40(o, s, BOOST_PP_LIST_REVERSE_D(40, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_41(o, s, l) BOOST_PP_LIST_FOLD_LEFT_41(o, s, BOOST_PP_LIST_REVERSE_D(41, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_42(o, s, l) BOOST_PP_LIST_FOLD_LEFT_42(o, s, BOOST_PP_LIST_REVERSE_D(42, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_43(o, s, l) BOOST_PP_LIST_FOLD_LEFT_43(o, s, BOOST_PP_LIST_REVERSE_D(43, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_44(o, s, l) BOOST_PP_LIST_FOLD_LEFT_44(o, s, BOOST_PP_LIST_REVERSE_D(44, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_45(o, s, l) BOOST_PP_LIST_FOLD_LEFT_45(o, s, BOOST_PP_LIST_REVERSE_D(45, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_46(o, s, l) BOOST_PP_LIST_FOLD_LEFT_46(o, s, BOOST_PP_LIST_REVERSE_D(46, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_47(o, s, l) BOOST_PP_LIST_FOLD_LEFT_47(o, s, BOOST_PP_LIST_REVERSE_D(47, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_48(o, s, l) BOOST_PP_LIST_FOLD_LEFT_48(o, s, BOOST_PP_LIST_REVERSE_D(48, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_49(o, s, l) BOOST_PP_LIST_FOLD_LEFT_49(o, s, BOOST_PP_LIST_REVERSE_D(49, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_50(o, s, l) BOOST_PP_LIST_FOLD_LEFT_50(o, s, BOOST_PP_LIST_REVERSE_D(50, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_51(o, s, l) BOOST_PP_LIST_FOLD_LEFT_51(o, s, BOOST_PP_LIST_REVERSE_D(51, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_52(o, s, l) BOOST_PP_LIST_FOLD_LEFT_52(o, s, BOOST_PP_LIST_REVERSE_D(52, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_53(o, s, l) BOOST_PP_LIST_FOLD_LEFT_53(o, s, BOOST_PP_LIST_REVERSE_D(53, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_54(o, s, l) BOOST_PP_LIST_FOLD_LEFT_54(o, s, BOOST_PP_LIST_REVERSE_D(54, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_55(o, s, l) BOOST_PP_LIST_FOLD_LEFT_55(o, s, BOOST_PP_LIST_REVERSE_D(55, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_56(o, s, l) BOOST_PP_LIST_FOLD_LEFT_56(o, s, BOOST_PP_LIST_REVERSE_D(56, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_57(o, s, l) BOOST_PP_LIST_FOLD_LEFT_57(o, s, BOOST_PP_LIST_REVERSE_D(57, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_58(o, s, l) BOOST_PP_LIST_FOLD_LEFT_58(o, s, BOOST_PP_LIST_REVERSE_D(58, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_59(o, s, l) BOOST_PP_LIST_FOLD_LEFT_59(o, s, BOOST_PP_LIST_REVERSE_D(59, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_60(o, s, l) BOOST_PP_LIST_FOLD_LEFT_60(o, s, BOOST_PP_LIST_REVERSE_D(60, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_61(o, s, l) BOOST_PP_LIST_FOLD_LEFT_61(o, s, BOOST_PP_LIST_REVERSE_D(61, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_62(o, s, l) BOOST_PP_LIST_FOLD_LEFT_62(o, s, BOOST_PP_LIST_REVERSE_D(62, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_63(o, s, l) BOOST_PP_LIST_FOLD_LEFT_63(o, s, BOOST_PP_LIST_REVERSE_D(63, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_64(o, s, l) BOOST_PP_LIST_FOLD_LEFT_64(o, s, BOOST_PP_LIST_REVERSE_D(64, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_65(o, s, l) BOOST_PP_LIST_FOLD_LEFT_65(o, s, BOOST_PP_LIST_REVERSE_D(65, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_66(o, s, l) BOOST_PP_LIST_FOLD_LEFT_66(o, s, BOOST_PP_LIST_REVERSE_D(66, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_67(o, s, l) BOOST_PP_LIST_FOLD_LEFT_67(o, s, BOOST_PP_LIST_REVERSE_D(67, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_68(o, s, l) BOOST_PP_LIST_FOLD_LEFT_68(o, s, BOOST_PP_LIST_REVERSE_D(68, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_69(o, s, l) BOOST_PP_LIST_FOLD_LEFT_69(o, s, BOOST_PP_LIST_REVERSE_D(69, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_70(o, s, l) BOOST_PP_LIST_FOLD_LEFT_70(o, s, BOOST_PP_LIST_REVERSE_D(70, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_71(o, s, l) BOOST_PP_LIST_FOLD_LEFT_71(o, s, BOOST_PP_LIST_REVERSE_D(71, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_72(o, s, l) BOOST_PP_LIST_FOLD_LEFT_72(o, s, BOOST_PP_LIST_REVERSE_D(72, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_73(o, s, l) BOOST_PP_LIST_FOLD_LEFT_73(o, s, BOOST_PP_LIST_REVERSE_D(73, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_74(o, s, l) BOOST_PP_LIST_FOLD_LEFT_74(o, s, BOOST_PP_LIST_REVERSE_D(74, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_75(o, s, l) BOOST_PP_LIST_FOLD_LEFT_75(o, s, BOOST_PP_LIST_REVERSE_D(75, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_76(o, s, l) BOOST_PP_LIST_FOLD_LEFT_76(o, s, BOOST_PP_LIST_REVERSE_D(76, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_77(o, s, l) BOOST_PP_LIST_FOLD_LEFT_77(o, s, BOOST_PP_LIST_REVERSE_D(77, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_78(o, s, l) BOOST_PP_LIST_FOLD_LEFT_78(o, s, BOOST_PP_LIST_REVERSE_D(78, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_79(o, s, l) BOOST_PP_LIST_FOLD_LEFT_79(o, s, BOOST_PP_LIST_REVERSE_D(79, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_80(o, s, l) BOOST_PP_LIST_FOLD_LEFT_80(o, s, BOOST_PP_LIST_REVERSE_D(80, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_81(o, s, l) BOOST_PP_LIST_FOLD_LEFT_81(o, s, BOOST_PP_LIST_REVERSE_D(81, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_82(o, s, l) BOOST_PP_LIST_FOLD_LEFT_82(o, s, BOOST_PP_LIST_REVERSE_D(82, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_83(o, s, l) BOOST_PP_LIST_FOLD_LEFT_83(o, s, BOOST_PP_LIST_REVERSE_D(83, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_84(o, s, l) BOOST_PP_LIST_FOLD_LEFT_84(o, s, BOOST_PP_LIST_REVERSE_D(84, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_85(o, s, l) BOOST_PP_LIST_FOLD_LEFT_85(o, s, BOOST_PP_LIST_REVERSE_D(85, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_86(o, s, l) BOOST_PP_LIST_FOLD_LEFT_86(o, s, BOOST_PP_LIST_REVERSE_D(86, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_87(o, s, l) BOOST_PP_LIST_FOLD_LEFT_87(o, s, BOOST_PP_LIST_REVERSE_D(87, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_88(o, s, l) BOOST_PP_LIST_FOLD_LEFT_88(o, s, BOOST_PP_LIST_REVERSE_D(88, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_89(o, s, l) BOOST_PP_LIST_FOLD_LEFT_89(o, s, BOOST_PP_LIST_REVERSE_D(89, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_90(o, s, l) BOOST_PP_LIST_FOLD_LEFT_90(o, s, BOOST_PP_LIST_REVERSE_D(90, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_91(o, s, l) BOOST_PP_LIST_FOLD_LEFT_91(o, s, BOOST_PP_LIST_REVERSE_D(91, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_92(o, s, l) BOOST_PP_LIST_FOLD_LEFT_92(o, s, BOOST_PP_LIST_REVERSE_D(92, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_93(o, s, l) BOOST_PP_LIST_FOLD_LEFT_93(o, s, BOOST_PP_LIST_REVERSE_D(93, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_94(o, s, l) BOOST_PP_LIST_FOLD_LEFT_94(o, s, BOOST_PP_LIST_REVERSE_D(94, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_95(o, s, l) BOOST_PP_LIST_FOLD_LEFT_95(o, s, BOOST_PP_LIST_REVERSE_D(95, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_96(o, s, l) BOOST_PP_LIST_FOLD_LEFT_96(o, s, BOOST_PP_LIST_REVERSE_D(96, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_97(o, s, l) BOOST_PP_LIST_FOLD_LEFT_97(o, s, BOOST_PP_LIST_REVERSE_D(97, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_98(o, s, l) BOOST_PP_LIST_FOLD_LEFT_98(o, s, BOOST_PP_LIST_REVERSE_D(98, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_99(o, s, l) BOOST_PP_LIST_FOLD_LEFT_99(o, s, BOOST_PP_LIST_REVERSE_D(99, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_100(o, s, l) BOOST_PP_LIST_FOLD_LEFT_100(o, s, BOOST_PP_LIST_REVERSE_D(100, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_101(o, s, l) BOOST_PP_LIST_FOLD_LEFT_101(o, s, BOOST_PP_LIST_REVERSE_D(101, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_102(o, s, l) BOOST_PP_LIST_FOLD_LEFT_102(o, s, BOOST_PP_LIST_REVERSE_D(102, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_103(o, s, l) BOOST_PP_LIST_FOLD_LEFT_103(o, s, BOOST_PP_LIST_REVERSE_D(103, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_104(o, s, l) BOOST_PP_LIST_FOLD_LEFT_104(o, s, BOOST_PP_LIST_REVERSE_D(104, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_105(o, s, l) BOOST_PP_LIST_FOLD_LEFT_105(o, s, BOOST_PP_LIST_REVERSE_D(105, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_106(o, s, l) BOOST_PP_LIST_FOLD_LEFT_106(o, s, BOOST_PP_LIST_REVERSE_D(106, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_107(o, s, l) BOOST_PP_LIST_FOLD_LEFT_107(o, s, BOOST_PP_LIST_REVERSE_D(107, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_108(o, s, l) BOOST_PP_LIST_FOLD_LEFT_108(o, s, BOOST_PP_LIST_REVERSE_D(108, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_109(o, s, l) BOOST_PP_LIST_FOLD_LEFT_109(o, s, BOOST_PP_LIST_REVERSE_D(109, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_110(o, s, l) BOOST_PP_LIST_FOLD_LEFT_110(o, s, BOOST_PP_LIST_REVERSE_D(110, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_111(o, s, l) BOOST_PP_LIST_FOLD_LEFT_111(o, s, BOOST_PP_LIST_REVERSE_D(111, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_112(o, s, l) BOOST_PP_LIST_FOLD_LEFT_112(o, s, BOOST_PP_LIST_REVERSE_D(112, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_113(o, s, l) BOOST_PP_LIST_FOLD_LEFT_113(o, s, BOOST_PP_LIST_REVERSE_D(113, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_114(o, s, l) BOOST_PP_LIST_FOLD_LEFT_114(o, s, BOOST_PP_LIST_REVERSE_D(114, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_115(o, s, l) BOOST_PP_LIST_FOLD_LEFT_115(o, s, BOOST_PP_LIST_REVERSE_D(115, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_116(o, s, l) BOOST_PP_LIST_FOLD_LEFT_116(o, s, BOOST_PP_LIST_REVERSE_D(116, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_117(o, s, l) BOOST_PP_LIST_FOLD_LEFT_117(o, s, BOOST_PP_LIST_REVERSE_D(117, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_118(o, s, l) BOOST_PP_LIST_FOLD_LEFT_118(o, s, BOOST_PP_LIST_REVERSE_D(118, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_119(o, s, l) BOOST_PP_LIST_FOLD_LEFT_119(o, s, BOOST_PP_LIST_REVERSE_D(119, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_120(o, s, l) BOOST_PP_LIST_FOLD_LEFT_120(o, s, BOOST_PP_LIST_REVERSE_D(120, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_121(o, s, l) BOOST_PP_LIST_FOLD_LEFT_121(o, s, BOOST_PP_LIST_REVERSE_D(121, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_122(o, s, l) BOOST_PP_LIST_FOLD_LEFT_122(o, s, BOOST_PP_LIST_REVERSE_D(122, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_123(o, s, l) BOOST_PP_LIST_FOLD_LEFT_123(o, s, BOOST_PP_LIST_REVERSE_D(123, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_124(o, s, l) BOOST_PP_LIST_FOLD_LEFT_124(o, s, BOOST_PP_LIST_REVERSE_D(124, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_125(o, s, l) BOOST_PP_LIST_FOLD_LEFT_125(o, s, BOOST_PP_LIST_REVERSE_D(125, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_126(o, s, l) BOOST_PP_LIST_FOLD_LEFT_126(o, s, BOOST_PP_LIST_REVERSE_D(126, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_127(o, s, l) BOOST_PP_LIST_FOLD_LEFT_127(o, s, BOOST_PP_LIST_REVERSE_D(127, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_128(o, s, l) BOOST_PP_LIST_FOLD_LEFT_128(o, s, BOOST_PP_LIST_REVERSE_D(128, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_129(o, s, l) BOOST_PP_LIST_FOLD_LEFT_129(o, s, BOOST_PP_LIST_REVERSE_D(129, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_130(o, s, l) BOOST_PP_LIST_FOLD_LEFT_130(o, s, BOOST_PP_LIST_REVERSE_D(130, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_131(o, s, l) BOOST_PP_LIST_FOLD_LEFT_131(o, s, BOOST_PP_LIST_REVERSE_D(131, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_132(o, s, l) BOOST_PP_LIST_FOLD_LEFT_132(o, s, BOOST_PP_LIST_REVERSE_D(132, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_133(o, s, l) BOOST_PP_LIST_FOLD_LEFT_133(o, s, BOOST_PP_LIST_REVERSE_D(133, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_134(o, s, l) BOOST_PP_LIST_FOLD_LEFT_134(o, s, BOOST_PP_LIST_REVERSE_D(134, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_135(o, s, l) BOOST_PP_LIST_FOLD_LEFT_135(o, s, BOOST_PP_LIST_REVERSE_D(135, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_136(o, s, l) BOOST_PP_LIST_FOLD_LEFT_136(o, s, BOOST_PP_LIST_REVERSE_D(136, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_137(o, s, l) BOOST_PP_LIST_FOLD_LEFT_137(o, s, BOOST_PP_LIST_REVERSE_D(137, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_138(o, s, l) BOOST_PP_LIST_FOLD_LEFT_138(o, s, BOOST_PP_LIST_REVERSE_D(138, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_139(o, s, l) BOOST_PP_LIST_FOLD_LEFT_139(o, s, BOOST_PP_LIST_REVERSE_D(139, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_140(o, s, l) BOOST_PP_LIST_FOLD_LEFT_140(o, s, BOOST_PP_LIST_REVERSE_D(140, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_141(o, s, l) BOOST_PP_LIST_FOLD_LEFT_141(o, s, BOOST_PP_LIST_REVERSE_D(141, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_142(o, s, l) BOOST_PP_LIST_FOLD_LEFT_142(o, s, BOOST_PP_LIST_REVERSE_D(142, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_143(o, s, l) BOOST_PP_LIST_FOLD_LEFT_143(o, s, BOOST_PP_LIST_REVERSE_D(143, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_144(o, s, l) BOOST_PP_LIST_FOLD_LEFT_144(o, s, BOOST_PP_LIST_REVERSE_D(144, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_145(o, s, l) BOOST_PP_LIST_FOLD_LEFT_145(o, s, BOOST_PP_LIST_REVERSE_D(145, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_146(o, s, l) BOOST_PP_LIST_FOLD_LEFT_146(o, s, BOOST_PP_LIST_REVERSE_D(146, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_147(o, s, l) BOOST_PP_LIST_FOLD_LEFT_147(o, s, BOOST_PP_LIST_REVERSE_D(147, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_148(o, s, l) BOOST_PP_LIST_FOLD_LEFT_148(o, s, BOOST_PP_LIST_REVERSE_D(148, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_149(o, s, l) BOOST_PP_LIST_FOLD_LEFT_149(o, s, BOOST_PP_LIST_REVERSE_D(149, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_150(o, s, l) BOOST_PP_LIST_FOLD_LEFT_150(o, s, BOOST_PP_LIST_REVERSE_D(150, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_151(o, s, l) BOOST_PP_LIST_FOLD_LEFT_151(o, s, BOOST_PP_LIST_REVERSE_D(151, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_152(o, s, l) BOOST_PP_LIST_FOLD_LEFT_152(o, s, BOOST_PP_LIST_REVERSE_D(152, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_153(o, s, l) BOOST_PP_LIST_FOLD_LEFT_153(o, s, BOOST_PP_LIST_REVERSE_D(153, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_154(o, s, l) BOOST_PP_LIST_FOLD_LEFT_154(o, s, BOOST_PP_LIST_REVERSE_D(154, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_155(o, s, l) BOOST_PP_LIST_FOLD_LEFT_155(o, s, BOOST_PP_LIST_REVERSE_D(155, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_156(o, s, l) BOOST_PP_LIST_FOLD_LEFT_156(o, s, BOOST_PP_LIST_REVERSE_D(156, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_157(o, s, l) BOOST_PP_LIST_FOLD_LEFT_157(o, s, BOOST_PP_LIST_REVERSE_D(157, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_158(o, s, l) BOOST_PP_LIST_FOLD_LEFT_158(o, s, BOOST_PP_LIST_REVERSE_D(158, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_159(o, s, l) BOOST_PP_LIST_FOLD_LEFT_159(o, s, BOOST_PP_LIST_REVERSE_D(159, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_160(o, s, l) BOOST_PP_LIST_FOLD_LEFT_160(o, s, BOOST_PP_LIST_REVERSE_D(160, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_161(o, s, l) BOOST_PP_LIST_FOLD_LEFT_161(o, s, BOOST_PP_LIST_REVERSE_D(161, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_162(o, s, l) BOOST_PP_LIST_FOLD_LEFT_162(o, s, BOOST_PP_LIST_REVERSE_D(162, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_163(o, s, l) BOOST_PP_LIST_FOLD_LEFT_163(o, s, BOOST_PP_LIST_REVERSE_D(163, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_164(o, s, l) BOOST_PP_LIST_FOLD_LEFT_164(o, s, BOOST_PP_LIST_REVERSE_D(164, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_165(o, s, l) BOOST_PP_LIST_FOLD_LEFT_165(o, s, BOOST_PP_LIST_REVERSE_D(165, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_166(o, s, l) BOOST_PP_LIST_FOLD_LEFT_166(o, s, BOOST_PP_LIST_REVERSE_D(166, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_167(o, s, l) BOOST_PP_LIST_FOLD_LEFT_167(o, s, BOOST_PP_LIST_REVERSE_D(167, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_168(o, s, l) BOOST_PP_LIST_FOLD_LEFT_168(o, s, BOOST_PP_LIST_REVERSE_D(168, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_169(o, s, l) BOOST_PP_LIST_FOLD_LEFT_169(o, s, BOOST_PP_LIST_REVERSE_D(169, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_170(o, s, l) BOOST_PP_LIST_FOLD_LEFT_170(o, s, BOOST_PP_LIST_REVERSE_D(170, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_171(o, s, l) BOOST_PP_LIST_FOLD_LEFT_171(o, s, BOOST_PP_LIST_REVERSE_D(171, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_172(o, s, l) BOOST_PP_LIST_FOLD_LEFT_172(o, s, BOOST_PP_LIST_REVERSE_D(172, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_173(o, s, l) BOOST_PP_LIST_FOLD_LEFT_173(o, s, BOOST_PP_LIST_REVERSE_D(173, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_174(o, s, l) BOOST_PP_LIST_FOLD_LEFT_174(o, s, BOOST_PP_LIST_REVERSE_D(174, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_175(o, s, l) BOOST_PP_LIST_FOLD_LEFT_175(o, s, BOOST_PP_LIST_REVERSE_D(175, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_176(o, s, l) BOOST_PP_LIST_FOLD_LEFT_176(o, s, BOOST_PP_LIST_REVERSE_D(176, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_177(o, s, l) BOOST_PP_LIST_FOLD_LEFT_177(o, s, BOOST_PP_LIST_REVERSE_D(177, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_178(o, s, l) BOOST_PP_LIST_FOLD_LEFT_178(o, s, BOOST_PP_LIST_REVERSE_D(178, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_179(o, s, l) BOOST_PP_LIST_FOLD_LEFT_179(o, s, BOOST_PP_LIST_REVERSE_D(179, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_180(o, s, l) BOOST_PP_LIST_FOLD_LEFT_180(o, s, BOOST_PP_LIST_REVERSE_D(180, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_181(o, s, l) BOOST_PP_LIST_FOLD_LEFT_181(o, s, BOOST_PP_LIST_REVERSE_D(181, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_182(o, s, l) BOOST_PP_LIST_FOLD_LEFT_182(o, s, BOOST_PP_LIST_REVERSE_D(182, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_183(o, s, l) BOOST_PP_LIST_FOLD_LEFT_183(o, s, BOOST_PP_LIST_REVERSE_D(183, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_184(o, s, l) BOOST_PP_LIST_FOLD_LEFT_184(o, s, BOOST_PP_LIST_REVERSE_D(184, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_185(o, s, l) BOOST_PP_LIST_FOLD_LEFT_185(o, s, BOOST_PP_LIST_REVERSE_D(185, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_186(o, s, l) BOOST_PP_LIST_FOLD_LEFT_186(o, s, BOOST_PP_LIST_REVERSE_D(186, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_187(o, s, l) BOOST_PP_LIST_FOLD_LEFT_187(o, s, BOOST_PP_LIST_REVERSE_D(187, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_188(o, s, l) BOOST_PP_LIST_FOLD_LEFT_188(o, s, BOOST_PP_LIST_REVERSE_D(188, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_189(o, s, l) BOOST_PP_LIST_FOLD_LEFT_189(o, s, BOOST_PP_LIST_REVERSE_D(189, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_190(o, s, l) BOOST_PP_LIST_FOLD_LEFT_190(o, s, BOOST_PP_LIST_REVERSE_D(190, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_191(o, s, l) BOOST_PP_LIST_FOLD_LEFT_191(o, s, BOOST_PP_LIST_REVERSE_D(191, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_192(o, s, l) BOOST_PP_LIST_FOLD_LEFT_192(o, s, BOOST_PP_LIST_REVERSE_D(192, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_193(o, s, l) BOOST_PP_LIST_FOLD_LEFT_193(o, s, BOOST_PP_LIST_REVERSE_D(193, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_194(o, s, l) BOOST_PP_LIST_FOLD_LEFT_194(o, s, BOOST_PP_LIST_REVERSE_D(194, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_195(o, s, l) BOOST_PP_LIST_FOLD_LEFT_195(o, s, BOOST_PP_LIST_REVERSE_D(195, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_196(o, s, l) BOOST_PP_LIST_FOLD_LEFT_196(o, s, BOOST_PP_LIST_REVERSE_D(196, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_197(o, s, l) BOOST_PP_LIST_FOLD_LEFT_197(o, s, BOOST_PP_LIST_REVERSE_D(197, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_198(o, s, l) BOOST_PP_LIST_FOLD_LEFT_198(o, s, BOOST_PP_LIST_REVERSE_D(198, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_199(o, s, l) BOOST_PP_LIST_FOLD_LEFT_199(o, s, BOOST_PP_LIST_REVERSE_D(199, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_200(o, s, l) BOOST_PP_LIST_FOLD_LEFT_200(o, s, BOOST_PP_LIST_REVERSE_D(200, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_201(o, s, l) BOOST_PP_LIST_FOLD_LEFT_201(o, s, BOOST_PP_LIST_REVERSE_D(201, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_202(o, s, l) BOOST_PP_LIST_FOLD_LEFT_202(o, s, BOOST_PP_LIST_REVERSE_D(202, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_203(o, s, l) BOOST_PP_LIST_FOLD_LEFT_203(o, s, BOOST_PP_LIST_REVERSE_D(203, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_204(o, s, l) BOOST_PP_LIST_FOLD_LEFT_204(o, s, BOOST_PP_LIST_REVERSE_D(204, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_205(o, s, l) BOOST_PP_LIST_FOLD_LEFT_205(o, s, BOOST_PP_LIST_REVERSE_D(205, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_206(o, s, l) BOOST_PP_LIST_FOLD_LEFT_206(o, s, BOOST_PP_LIST_REVERSE_D(206, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_207(o, s, l) BOOST_PP_LIST_FOLD_LEFT_207(o, s, BOOST_PP_LIST_REVERSE_D(207, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_208(o, s, l) BOOST_PP_LIST_FOLD_LEFT_208(o, s, BOOST_PP_LIST_REVERSE_D(208, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_209(o, s, l) BOOST_PP_LIST_FOLD_LEFT_209(o, s, BOOST_PP_LIST_REVERSE_D(209, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_210(o, s, l) BOOST_PP_LIST_FOLD_LEFT_210(o, s, BOOST_PP_LIST_REVERSE_D(210, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_211(o, s, l) BOOST_PP_LIST_FOLD_LEFT_211(o, s, BOOST_PP_LIST_REVERSE_D(211, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_212(o, s, l) BOOST_PP_LIST_FOLD_LEFT_212(o, s, BOOST_PP_LIST_REVERSE_D(212, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_213(o, s, l) BOOST_PP_LIST_FOLD_LEFT_213(o, s, BOOST_PP_LIST_REVERSE_D(213, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_214(o, s, l) BOOST_PP_LIST_FOLD_LEFT_214(o, s, BOOST_PP_LIST_REVERSE_D(214, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_215(o, s, l) BOOST_PP_LIST_FOLD_LEFT_215(o, s, BOOST_PP_LIST_REVERSE_D(215, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_216(o, s, l) BOOST_PP_LIST_FOLD_LEFT_216(o, s, BOOST_PP_LIST_REVERSE_D(216, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_217(o, s, l) BOOST_PP_LIST_FOLD_LEFT_217(o, s, BOOST_PP_LIST_REVERSE_D(217, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_218(o, s, l) BOOST_PP_LIST_FOLD_LEFT_218(o, s, BOOST_PP_LIST_REVERSE_D(218, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_219(o, s, l) BOOST_PP_LIST_FOLD_LEFT_219(o, s, BOOST_PP_LIST_REVERSE_D(219, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_220(o, s, l) BOOST_PP_LIST_FOLD_LEFT_220(o, s, BOOST_PP_LIST_REVERSE_D(220, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_221(o, s, l) BOOST_PP_LIST_FOLD_LEFT_221(o, s, BOOST_PP_LIST_REVERSE_D(221, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_222(o, s, l) BOOST_PP_LIST_FOLD_LEFT_222(o, s, BOOST_PP_LIST_REVERSE_D(222, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_223(o, s, l) BOOST_PP_LIST_FOLD_LEFT_223(o, s, BOOST_PP_LIST_REVERSE_D(223, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_224(o, s, l) BOOST_PP_LIST_FOLD_LEFT_224(o, s, BOOST_PP_LIST_REVERSE_D(224, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_225(o, s, l) BOOST_PP_LIST_FOLD_LEFT_225(o, s, BOOST_PP_LIST_REVERSE_D(225, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_226(o, s, l) BOOST_PP_LIST_FOLD_LEFT_226(o, s, BOOST_PP_LIST_REVERSE_D(226, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_227(o, s, l) BOOST_PP_LIST_FOLD_LEFT_227(o, s, BOOST_PP_LIST_REVERSE_D(227, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_228(o, s, l) BOOST_PP_LIST_FOLD_LEFT_228(o, s, BOOST_PP_LIST_REVERSE_D(228, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_229(o, s, l) BOOST_PP_LIST_FOLD_LEFT_229(o, s, BOOST_PP_LIST_REVERSE_D(229, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_230(o, s, l) BOOST_PP_LIST_FOLD_LEFT_230(o, s, BOOST_PP_LIST_REVERSE_D(230, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_231(o, s, l) BOOST_PP_LIST_FOLD_LEFT_231(o, s, BOOST_PP_LIST_REVERSE_D(231, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_232(o, s, l) BOOST_PP_LIST_FOLD_LEFT_232(o, s, BOOST_PP_LIST_REVERSE_D(232, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_233(o, s, l) BOOST_PP_LIST_FOLD_LEFT_233(o, s, BOOST_PP_LIST_REVERSE_D(233, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_234(o, s, l) BOOST_PP_LIST_FOLD_LEFT_234(o, s, BOOST_PP_LIST_REVERSE_D(234, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_235(o, s, l) BOOST_PP_LIST_FOLD_LEFT_235(o, s, BOOST_PP_LIST_REVERSE_D(235, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_236(o, s, l) BOOST_PP_LIST_FOLD_LEFT_236(o, s, BOOST_PP_LIST_REVERSE_D(236, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_237(o, s, l) BOOST_PP_LIST_FOLD_LEFT_237(o, s, BOOST_PP_LIST_REVERSE_D(237, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_238(o, s, l) BOOST_PP_LIST_FOLD_LEFT_238(o, s, BOOST_PP_LIST_REVERSE_D(238, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_239(o, s, l) BOOST_PP_LIST_FOLD_LEFT_239(o, s, BOOST_PP_LIST_REVERSE_D(239, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_240(o, s, l) BOOST_PP_LIST_FOLD_LEFT_240(o, s, BOOST_PP_LIST_REVERSE_D(240, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_241(o, s, l) BOOST_PP_LIST_FOLD_LEFT_241(o, s, BOOST_PP_LIST_REVERSE_D(241, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_242(o, s, l) BOOST_PP_LIST_FOLD_LEFT_242(o, s, BOOST_PP_LIST_REVERSE_D(242, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_243(o, s, l) BOOST_PP_LIST_FOLD_LEFT_243(o, s, BOOST_PP_LIST_REVERSE_D(243, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_244(o, s, l) BOOST_PP_LIST_FOLD_LEFT_244(o, s, BOOST_PP_LIST_REVERSE_D(244, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_245(o, s, l) BOOST_PP_LIST_FOLD_LEFT_245(o, s, BOOST_PP_LIST_REVERSE_D(245, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_246(o, s, l) BOOST_PP_LIST_FOLD_LEFT_246(o, s, BOOST_PP_LIST_REVERSE_D(246, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_247(o, s, l) BOOST_PP_LIST_FOLD_LEFT_247(o, s, BOOST_PP_LIST_REVERSE_D(247, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_248(o, s, l) BOOST_PP_LIST_FOLD_LEFT_248(o, s, BOOST_PP_LIST_REVERSE_D(248, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_249(o, s, l) BOOST_PP_LIST_FOLD_LEFT_249(o, s, BOOST_PP_LIST_REVERSE_D(249, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_250(o, s, l) BOOST_PP_LIST_FOLD_LEFT_250(o, s, BOOST_PP_LIST_REVERSE_D(250, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_251(o, s, l) BOOST_PP_LIST_FOLD_LEFT_251(o, s, BOOST_PP_LIST_REVERSE_D(251, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_252(o, s, l) BOOST_PP_LIST_FOLD_LEFT_252(o, s, BOOST_PP_LIST_REVERSE_D(252, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_253(o, s, l) BOOST_PP_LIST_FOLD_LEFT_253(o, s, BOOST_PP_LIST_REVERSE_D(253, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_254(o, s, l) BOOST_PP_LIST_FOLD_LEFT_254(o, s, BOOST_PP_LIST_REVERSE_D(254, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_255(o, s, l) BOOST_PP_LIST_FOLD_LEFT_255(o, s, BOOST_PP_LIST_REVERSE_D(255, l))
+# define BOOST_PP_LIST_FOLD_RIGHT_256(o, s, l) BOOST_PP_LIST_FOLD_LEFT_256(o, s, BOOST_PP_LIST_REVERSE_D(256, l))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/enum.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/enum.hpp
new file mode 100644
index 0000000..1eabea6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/enum.hpp
@@ -0,0 +1,41 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_ENUM_HPP
+# define BOOST_PREPROCESSOR_LIST_ENUM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+#
+# /* BOOST_PP_LIST_ENUM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_ENUM(list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list)
+# else
+# define BOOST_PP_LIST_ENUM(list) BOOST_PP_LIST_ENUM_I(list)
+# define BOOST_PP_LIST_ENUM_I(list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list)
+# endif
+#
+# define BOOST_PP_LIST_ENUM_O(r, _, i, elem) BOOST_PP_COMMA_IF(i) elem
+#
+# /* BOOST_PP_LIST_ENUM_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_ENUM_R(r, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list)
+# else
+# define BOOST_PP_LIST_ENUM_R(r, list) BOOST_PP_LIST_ENUM_R_I(r, list)
+# define BOOST_PP_LIST_ENUM_R_I(r, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_ENUM_O, BOOST_PP_NIL, list)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/filter.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/filter.hpp
new file mode 100644
index 0000000..9e0faab
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/filter.hpp
@@ -0,0 +1,54 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FILTER_HPP
+# define BOOST_PREPROCESSOR_LIST_FILTER_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FILTER */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FILTER(pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# else
+# define BOOST_PP_LIST_FILTER(pred, data, list) BOOST_PP_LIST_FILTER_I(pred, data, list)
+# define BOOST_PP_LIST_FILTER_I(pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FILTER_O(d, pdr, elem) BOOST_PP_LIST_FILTER_O_D(d, BOOST_PP_TUPLE_ELEM(3, 0, pdr), BOOST_PP_TUPLE_ELEM(3, 1, pdr), BOOST_PP_TUPLE_ELEM(3, 2, pdr), elem)
+# else
+# define BOOST_PP_LIST_FILTER_O(d, pdr, elem) BOOST_PP_LIST_FILTER_O_I(d, BOOST_PP_TUPLE_REM_3 pdr, elem)
+# define BOOST_PP_LIST_FILTER_O_I(d, im, elem) BOOST_PP_LIST_FILTER_O_D(d, im, elem)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_LIST_FILTER_O_D(d, pred, data, res, elem) (pred, data, BOOST_PP_IF(pred(d, data, elem), (elem, res), res))
+# else
+# define BOOST_PP_LIST_FILTER_O_D(d, pred, data, res, elem) (pred, data, BOOST_PP_IF(pred##(d, data, elem), (elem, res), res))
+# endif
+#
+# /* BOOST_PP_LIST_FILTER_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FILTER_D(d, pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# else
+# define BOOST_PP_LIST_FILTER_D(d, pred, data, list) BOOST_PP_LIST_FILTER_D_I(d, pred, data, list)
+# define BOOST_PP_LIST_FILTER_D_I(d, pred, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_FILTER_O, (pred, data, BOOST_PP_NIL), list))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/first_n.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/first_n.hpp
new file mode 100644
index 0000000..5e60c50
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/first_n.hpp
@@ -0,0 +1,58 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FIRST_N_HPP
+# define BOOST_PREPROCESSOR_LIST_FIRST_N_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/reverse.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FIRST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FIRST_N(count, list) BOOST_PP_LIST_REVERSE(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# else
+# define BOOST_PP_LIST_FIRST_N(count, list) BOOST_PP_LIST_FIRST_N_I(count, list)
+# define BOOST_PP_LIST_FIRST_N_I(count, list) BOOST_PP_LIST_REVERSE(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FIRST_N_P(d, data) BOOST_PP_TUPLE_ELEM(3, 0, data)
+# else
+# define BOOST_PP_LIST_FIRST_N_P(d, data) BOOST_PP_LIST_FIRST_N_P_I data
+# define BOOST_PP_LIST_FIRST_N_P_I(c, l, nl) c
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FIRST_N_O(d, data) BOOST_PP_LIST_FIRST_N_O_D data
+# else
+# define BOOST_PP_LIST_FIRST_N_O(d, data) BOOST_PP_LIST_FIRST_N_O_D(BOOST_PP_TUPLE_ELEM(3, 0, data), BOOST_PP_TUPLE_ELEM(3, 1, data), BOOST_PP_TUPLE_ELEM(3, 2, data))
+# endif
+#
+# define BOOST_PP_LIST_FIRST_N_O_D(c, l, nl) (BOOST_PP_DEC(c), BOOST_PP_LIST_REST(l), (BOOST_PP_LIST_FIRST(l), nl))
+#
+# /* BOOST_PP_LIST_FIRST_N_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FIRST_N_D(d, count, list) BOOST_PP_LIST_REVERSE_D(d, BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# else
+# define BOOST_PP_LIST_FIRST_N_D(d, count, list) BOOST_PP_LIST_FIRST_N_D_I(d, count, list)
+# define BOOST_PP_LIST_FIRST_N_D_I(d, count, list) BOOST_PP_LIST_REVERSE_D(d, BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_FIRST_N_P, BOOST_PP_LIST_FIRST_N_O, (count, list, BOOST_PP_NIL))))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/fold_left.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/fold_left.hpp
new file mode 100644
index 0000000..f235aec
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/fold_left.hpp
@@ -0,0 +1,303 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_LIST_FOLD_LEFT */
+#
+# if 0
+# define BOOST_PP_LIST_FOLD_LEFT(op, state, list)
+# endif
+#
+# define BOOST_PP_LIST_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# define BOOST_PP_LIST_FOLD_LEFT_257(o, s, l) BOOST_PP_ERROR(0x0004)
+#
+# define BOOST_PP_LIST_FOLD_LEFT_D(d, o, s, l) BOOST_PP_LIST_FOLD_LEFT_ ## d(o, s, l)
+# define BOOST_PP_LIST_FOLD_LEFT_2ND BOOST_PP_LIST_FOLD_LEFT
+# define BOOST_PP_LIST_FOLD_LEFT_2ND_D BOOST_PP_LIST_FOLD_LEFT_D
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/list/detail/edg/fold_left.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/list/detail/dmc/fold_left.hpp>
+# else
+# include <boost/preprocessor/list/detail/fold_left.hpp>
+# endif
+#
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_1(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_2(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_3(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_4(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_5(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_6(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_7(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_8(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_9(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_10(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_11(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_12(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_13(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_14(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_15(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_16(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_17(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_18(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_19(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_20(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_21(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_22(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_23(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_24(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_25(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_26(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_27(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_28(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_29(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_30(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_31(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_32(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_33(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_34(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_35(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_36(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_37(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_38(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_39(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_40(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_41(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_42(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_43(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_44(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_45(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_46(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_47(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_48(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_49(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_50(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_51(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_52(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_53(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_54(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_55(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_56(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_57(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_58(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_59(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_60(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_61(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_62(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_63(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_64(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_65(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_66(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_67(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_68(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_69(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_70(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_71(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_72(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_73(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_74(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_75(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_76(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_77(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_78(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_79(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_80(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_81(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_82(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_83(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_84(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_85(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_86(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_87(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_88(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_89(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_90(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_91(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_92(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_93(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_94(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_95(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_96(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_97(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_98(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_99(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_100(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_101(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_102(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_103(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_104(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_105(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_106(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_107(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_108(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_109(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_110(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_111(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_112(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_113(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_114(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_115(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_116(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_117(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_118(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_119(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_120(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_121(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_122(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_123(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_124(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_125(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_126(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_127(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_128(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_129(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_130(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_131(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_132(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_133(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_134(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_135(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_136(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_137(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_138(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_139(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_140(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_141(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_142(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_143(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_144(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_145(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_146(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_147(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_148(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_149(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_150(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_151(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_152(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_153(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_154(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_155(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_156(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_157(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_158(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_159(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_160(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_161(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_162(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_163(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_164(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_165(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_166(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_167(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_168(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_169(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_170(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_171(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_172(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_173(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_174(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_175(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_176(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_177(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_178(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_179(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_180(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_181(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_182(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_183(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_184(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_185(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_186(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_187(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_188(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_189(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_190(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_191(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_192(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_193(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_194(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_195(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_196(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_197(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_198(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_199(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_200(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_201(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_202(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_203(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_204(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_205(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_206(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_207(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_208(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_209(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_210(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_211(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_212(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_213(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_214(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_215(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_216(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_217(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_218(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_219(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_220(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_221(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_222(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_223(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_224(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_225(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_226(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_227(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_228(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_229(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_230(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_231(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_232(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_233(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_234(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_235(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_236(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_237(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_238(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_239(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_240(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_241(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_242(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_243(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_244(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_245(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_246(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_247(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_248(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_249(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_250(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_251(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_252(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_253(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_254(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_255(o, s, l) 0
+# define BOOST_PP_LIST_FOLD_LEFT_CHECK_BOOST_PP_LIST_FOLD_LEFT_256(o, s, l) 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/fold_right.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/fold_right.hpp
new file mode 100644
index 0000000..ce18afe
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/fold_right.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# if 0
+# define BOOST_PP_LIST_FOLD_RIGHT(op, state, list)
+# endif
+#
+# define BOOST_PP_LIST_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_257(o, s, l) BOOST_PP_ERROR(0x0004)
+#
+# define BOOST_PP_LIST_FOLD_RIGHT_D(d, o, s, l) BOOST_PP_LIST_FOLD_RIGHT_ ## d(o, s, l)
+# define BOOST_PP_LIST_FOLD_RIGHT_2ND BOOST_PP_LIST_FOLD_RIGHT
+# define BOOST_PP_LIST_FOLD_RIGHT_2ND_D BOOST_PP_LIST_FOLD_RIGHT_D
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/list/detail/edg/fold_right.hpp>
+# else
+# include <boost/preprocessor/list/detail/fold_right.hpp>
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each.hpp
new file mode 100644
index 0000000..dd04eaa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each.hpp
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_HPP
+# define BOOST_PREPROCESSOR_LIST_FOR_EACH_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/for_each_i.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH(macro, data, list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# else
+# define BOOST_PP_LIST_FOR_EACH(macro, data, list) BOOST_PP_LIST_FOR_EACH_X(macro, data, list)
+# define BOOST_PP_LIST_FOR_EACH_X(macro, data, list) BOOST_PP_LIST_FOR_EACH_I(BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_O(r, md, i, elem) BOOST_PP_LIST_FOR_EACH_O_D(r, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md), elem)
+# else
+# define BOOST_PP_LIST_FOR_EACH_O(r, md, i, elem) BOOST_PP_LIST_FOR_EACH_O_I(r, BOOST_PP_TUPLE_REM_2 md, elem)
+# define BOOST_PP_LIST_FOR_EACH_O_I(r, im, elem) BOOST_PP_LIST_FOR_EACH_O_D(r, im, elem)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_O_D(r, m, d, elem) m(r, d, elem)
+#
+# /* BOOST_PP_LIST_FOR_EACH_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# else
+# define BOOST_PP_LIST_FOR_EACH_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_R_X(r, macro, data, list)
+# define BOOST_PP_LIST_FOR_EACH_R_X(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R(r, BOOST_PP_LIST_FOR_EACH_O, (macro, data), list)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each_i.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each_i.hpp
new file mode 100644
index 0000000..8f02e2e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each_i.hpp
@@ -0,0 +1,65 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+# define BOOST_PREPROCESSOR_LIST_LIST_FOR_EACH_I_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH_I */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() && ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# else
+# define BOOST_PP_LIST_FOR_EACH_I(macro, data, list) BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list)
+# define BOOST_PP_LIST_FOR_EACH_I_I(macro, data, list) BOOST_PP_FOR((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_FOR_EACH_I_P_D x
+# define BOOST_PP_LIST_FOR_EACH_I_P_D(m, d, l, i) BOOST_PP_LIST_IS_CONS(l)
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_P(r, x) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(4, 2, x))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FOR_EACH_I_O(r, x) BOOST_PP_LIST_FOR_EACH_I_O_D x
+# define BOOST_PP_LIST_FOR_EACH_I_O_D(m, d, l, i) (m, d, BOOST_PP_LIST_REST(l), BOOST_PP_INC(i))
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_O(r, x) (BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(4, 2, x)), BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(4, 3, x)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_D(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_M(r, x) BOOST_PP_LIST_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_REM_4 x)
+# define BOOST_PP_LIST_FOR_EACH_I_M_I(r, x_e) BOOST_PP_LIST_FOR_EACH_I_M_D(r, x_e)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_I_M_D(r, m, d, l, i) m(r, d, i, BOOST_PP_LIST_FIRST(l))
+#
+# /* BOOST_PP_LIST_FOR_EACH_I_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# else
+# define BOOST_PP_LIST_FOR_EACH_I_R(r, macro, data, list) BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list)
+# define BOOST_PP_LIST_FOR_EACH_I_R_I(r, macro, data, list) BOOST_PP_FOR_ ## r((macro, data, list, 0), BOOST_PP_LIST_FOR_EACH_I_P, BOOST_PP_LIST_FOR_EACH_I_O, BOOST_PP_LIST_FOR_EACH_I_M)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each_product.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each_product.hpp
new file mode 100644
index 0000000..6d5319b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/for_each_product.hpp
@@ -0,0 +1,141 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
+# define BOOST_PREPROCESSOR_LIST_FOR_EACH_PRODUCT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/list/to_tuple.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/tuple/reverse.hpp>
+#
+# /* BOOST_PP_LIST_FOR_EACH_PRODUCT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_Q(macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# endif
+#
+# /* BOOST_PP_LIST_FOR_EACH_PRODUCT_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_R(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_R_Q(r, macro, size, tuple) BOOST_PP_LIST_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, size, BOOST_PP_TUPLE_TO_LIST(size, tuple))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) impl((BOOST_PP_LIST_FIRST(lists), BOOST_PP_LIST_REST(lists), BOOST_PP_NIL, macro, size), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0)
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_E(impl, macro, size, lists) BOOST_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_E_D(impl, macro, size, lists) impl((BOOST_PP_LIST_FIRST(lists), BOOST_PP_LIST_REST(lists), BOOST_PP_NIL, macro, size), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0)
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_P_I data
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_P_I(a, b, res, macro, size) BOOST_PP_LIST_IS_CONS(a)
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(5, 0, data))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_O(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_O_I data
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_O_I(a, b, res, macro, size) (BOOST_PP_LIST_REST(a), b, res, macro, size)
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_O(r, data) (BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(5, 0, data)), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, BOOST_PP_TUPLE_ELEM(5, 0, data), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_D(r, BOOST_PP_TUPLE_REM_5 data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_D(r, data_e) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, data_e)
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_I(r, a, b, res, macro, size) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, BOOST_PP_LIST_TO_TUPLE_R(r, (BOOST_PP_LIST_FIRST(a), res)), size)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_II(r, macro, args, size) BOOST_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_I_III(r, macro, args, size) macro(r, BOOST_PP_TUPLE_REVERSE(size, args))
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, i) BOOST_PP_IF(BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(5, 1, data)), BOOST_PP_LIST_FOR_EACH_PRODUCT_N_ ## i, BOOST_PP_LIST_FOR_EACH_PRODUCT_I)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data) BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I data
+# else
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data) BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I(BOOST_PP_TUPLE_ELEM(5, 0, data), BOOST_PP_TUPLE_ELEM(5, 1, data), BOOST_PP_TUPLE_ELEM(5, 2, data), BOOST_PP_TUPLE_ELEM(5, 3, data), BOOST_PP_TUPLE_ELEM(5, 4, data))
+# endif
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_H_I(a, b, res, macro, size) (BOOST_PP_LIST_FIRST(b), BOOST_PP_LIST_REST(b), (BOOST_PP_LIST_FIRST(a), res), macro, size)
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_0(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 0)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_1(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 1)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_2(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 2)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_3(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 3)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_4(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 4)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_5(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 5)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_6(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 6)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_7(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 7)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_8(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 8)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_9(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 9)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_10(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 10)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_11(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 11)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_12(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 12)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_13(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 13)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_14(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 14)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_15(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 15)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_16(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 16)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_17(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 17)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_18(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 18)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_19(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 19)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_20(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 20)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_21(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 21)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_22(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 22)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_23(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 23)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_24(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 24)(r, data)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_M_25(r, data) BOOST_PP_LIST_FOR_EACH_PRODUCT_C(data, 25)(r, data)
+#
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_0(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_1)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_1(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_2)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_2(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_3)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_3(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_4)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_4(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_5)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_5(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_6)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_6(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_7)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_7(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_8)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_8(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_9)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_9(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_10)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_10(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_11)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_11(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_12)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_12(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_13)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_13(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_14)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_14(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_15)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_15(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_16)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_16(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_17)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_17(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_18)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_18(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_19)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_19(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_20)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_20(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_21)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_21(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_22)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_22(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_23)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_23(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_24)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_24(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_25)
+# define BOOST_PP_LIST_FOR_EACH_PRODUCT_N_25(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_LIST_FOR_EACH_PRODUCT_H(data), BOOST_PP_LIST_FOR_EACH_PRODUCT_P, BOOST_PP_LIST_FOR_EACH_PRODUCT_O, BOOST_PP_LIST_FOR_EACH_PRODUCT_M_26)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/rest_n.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/rest_n.hpp
new file mode 100644
index 0000000..b42ee5f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/rest_n.hpp
@@ -0,0 +1,55 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_REST_N_HPP
+# define BOOST_PREPROCESSOR_LIST_REST_N_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_LIST_REST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REST_N(count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# else
+# define BOOST_PP_LIST_REST_N(count, list) BOOST_PP_LIST_REST_N_I(count, list)
+# define BOOST_PP_LIST_REST_N_I(count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REST_N_P(d, lc) BOOST_PP_TUPLE_ELEM(2, 1, lc)
+# else
+# define BOOST_PP_LIST_REST_N_P(d, lc) BOOST_PP_LIST_REST_N_P_I lc
+# define BOOST_PP_LIST_REST_N_P_I(list, count) count
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REST_N_O(d, lc) (BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(2, 0, lc)), BOOST_PP_DEC(BOOST_PP_TUPLE_ELEM(2, 1, lc)))
+# else
+# define BOOST_PP_LIST_REST_N_O(d, lc) BOOST_PP_LIST_REST_N_O_I lc
+# define BOOST_PP_LIST_REST_N_O_I(list, count) (BOOST_PP_LIST_REST(list), BOOST_PP_DEC(count))
+# endif
+#
+# /* BOOST_PP_LIST_REST_N_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REST_N_D(d, count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# else
+# define BOOST_PP_LIST_REST_N_D(d, count, list) BOOST_PP_LIST_REST_N_D_I(d, count, list)
+# define BOOST_PP_LIST_REST_N_D_I(d, count, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_REST_N_P, BOOST_PP_LIST_REST_N_O, (list, count)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/reverse.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/reverse.hpp
new file mode 100644
index 0000000..651da05
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/reverse.hpp
@@ -0,0 +1,40 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_REVERSE_HPP
+# define BOOST_PREPROCESSOR_LIST_REVERSE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_left.hpp>
+#
+# /* BOOST_PP_LIST_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# else
+# define BOOST_PP_LIST_REVERSE(list) BOOST_PP_LIST_REVERSE_I(list)
+# define BOOST_PP_LIST_REVERSE_I(list) BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# endif
+#
+# define BOOST_PP_LIST_REVERSE_O(d, s, x) (x, s)
+#
+# /* BOOST_PP_LIST_REVERSE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# else
+# define BOOST_PP_LIST_REVERSE_D(d, list) BOOST_PP_LIST_REVERSE_D_I(d, list)
+# define BOOST_PP_LIST_REVERSE_D_I(d, list) BOOST_PP_LIST_FOLD_LEFT_ ## d(BOOST_PP_LIST_REVERSE_O, BOOST_PP_NIL, list)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/size.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/size.hpp
new file mode 100644
index 0000000..0757fba
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/size.hpp
@@ -0,0 +1,58 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_SIZE_HPP
+# define BOOST_PREPROCESSOR_LIST_SIZE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_SIZE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_SIZE(list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# else
+# define BOOST_PP_LIST_SIZE(list) BOOST_PP_LIST_SIZE_I(list)
+# define BOOST_PP_LIST_SIZE_I(list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_SIZE_P(d, rl) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(2, 1, rl))
+# else
+# define BOOST_PP_LIST_SIZE_P(d, rl) BOOST_PP_LIST_SIZE_P_I(BOOST_PP_TUPLE_REM_2 rl)
+# define BOOST_PP_LIST_SIZE_P_I(im) BOOST_PP_LIST_SIZE_P_II(im)
+# define BOOST_PP_LIST_SIZE_P_II(r, l) BOOST_PP_LIST_IS_CONS(l)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_SIZE_O(d, rl) (BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(2, 0, rl)), BOOST_PP_LIST_REST(BOOST_PP_TUPLE_ELEM(2, 1, rl)))
+# else
+# define BOOST_PP_LIST_SIZE_O(d, rl) BOOST_PP_LIST_SIZE_O_I(BOOST_PP_TUPLE_REM_2 rl)
+# define BOOST_PP_LIST_SIZE_O_I(im) BOOST_PP_LIST_SIZE_O_II(im)
+# define BOOST_PP_LIST_SIZE_O_II(r, l) (BOOST_PP_INC(r), BOOST_PP_LIST_REST(l))
+# endif
+#
+# /* BOOST_PP_LIST_SIZE_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_SIZE_D(d, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# else
+# define BOOST_PP_LIST_SIZE_D(d, list) BOOST_PP_LIST_SIZE_D_I(d, list)
+# define BOOST_PP_LIST_SIZE_D_I(d, list) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_LIST_SIZE_P, BOOST_PP_LIST_SIZE_O, (0, list)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_array.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_array.hpp
new file mode 100644
index 0000000..20829b9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_array.hpp
@@ -0,0 +1,155 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011.
+# * (C) Copyright Edward Diener 2011,2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TO_ARRAY_HPP
+# define BOOST_PREPROCESSOR_LIST_TO_ARRAY_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/list/adt.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400)
+# include <boost/preprocessor/control/iif.hpp>
+# endif
+#
+# /* BOOST_PP_LIST_TO_ARRAY */
+#
+# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400)
+# define BOOST_PP_LIST_TO_ARRAY(list) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_LIST_IS_NIL(list), \
+ BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY, \
+ BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO \
+ ) \
+ (list) \
+/**/
+# define BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_EMPTY(list) (0,())
+# define BOOST_PP_LIST_TO_ARRAY_VC8ORLESS_DO(list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE, list)
+# else
+# define BOOST_PP_LIST_TO_ARRAY(list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE, list)
+# endif
+
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_LIST_TO_ARRAY_I(w, list) \
+ BOOST_PP_LIST_TO_ARRAY_II(((BOOST_PP_TUPLE_REM_CTOR( \
+ 3, \
+ w(BOOST_PP_LIST_TO_ARRAY_P, BOOST_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \
+ )))) \
+ /**/
+# define BOOST_PP_LIST_TO_ARRAY_II(p) BOOST_PP_LIST_TO_ARRAY_II_B(p)
+# define BOOST_PP_LIST_TO_ARRAY_II_B(p) BOOST_PP_LIST_TO_ARRAY_II_C ## p
+# define BOOST_PP_LIST_TO_ARRAY_II_C(p) BOOST_PP_LIST_TO_ARRAY_III p
+# else
+# define BOOST_PP_LIST_TO_ARRAY_I(w, list) \
+ BOOST_PP_LIST_TO_ARRAY_II(BOOST_PP_TUPLE_REM_CTOR( \
+ 3, \
+ w(BOOST_PP_LIST_TO_ARRAY_P, BOOST_PP_LIST_TO_ARRAY_O, (list, 1, (~))) \
+ )) \
+ /**/
+# define BOOST_PP_LIST_TO_ARRAY_II(im) BOOST_PP_LIST_TO_ARRAY_III(im)
+# endif
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_LIST_TO_ARRAY_III(list, size, tuple) (BOOST_PP_DEC(size), BOOST_PP_LIST_TO_ARRAY_IV tuple)
+# define BOOST_PP_LIST_TO_ARRAY_IV(_, ...) (__VA_ARGS__)
+# else
+# define BOOST_PP_LIST_TO_ARRAY_III(list, size, tuple) (BOOST_PP_DEC(size), BOOST_PP_LIST_TO_ARRAY_IV_ ## size tuple)
+# define BOOST_PP_LIST_TO_ARRAY_IV_2(_, e0) (e0)
+# define BOOST_PP_LIST_TO_ARRAY_IV_3(_, e0, e1) (e0, e1)
+# define BOOST_PP_LIST_TO_ARRAY_IV_4(_, e0, e1, e2) (e0, e1, e2)
+# define BOOST_PP_LIST_TO_ARRAY_IV_5(_, e0, e1, e2, e3) (e0, e1, e2, e3)
+# define BOOST_PP_LIST_TO_ARRAY_IV_6(_, e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4)
+# define BOOST_PP_LIST_TO_ARRAY_IV_7(_, e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5)
+# define BOOST_PP_LIST_TO_ARRAY_IV_8(_, e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6)
+# define BOOST_PP_LIST_TO_ARRAY_IV_9(_, e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7)
+# define BOOST_PP_LIST_TO_ARRAY_IV_10(_, e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8)
+# define BOOST_PP_LIST_TO_ARRAY_IV_11(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
+# define BOOST_PP_LIST_TO_ARRAY_IV_12(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
+# define BOOST_PP_LIST_TO_ARRAY_IV_13(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
+# define BOOST_PP_LIST_TO_ARRAY_IV_14(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
+# define BOOST_PP_LIST_TO_ARRAY_IV_15(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
+# define BOOST_PP_LIST_TO_ARRAY_IV_16(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
+# define BOOST_PP_LIST_TO_ARRAY_IV_17(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
+# define BOOST_PP_LIST_TO_ARRAY_IV_18(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16)
+# define BOOST_PP_LIST_TO_ARRAY_IV_19(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17)
+# define BOOST_PP_LIST_TO_ARRAY_IV_20(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18)
+# define BOOST_PP_LIST_TO_ARRAY_IV_21(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19)
+# define BOOST_PP_LIST_TO_ARRAY_IV_22(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20)
+# define BOOST_PP_LIST_TO_ARRAY_IV_23(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21)
+# define BOOST_PP_LIST_TO_ARRAY_IV_24(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22)
+# define BOOST_PP_LIST_TO_ARRAY_IV_25(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23)
+# define BOOST_PP_LIST_TO_ARRAY_IV_26(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24)
+# define BOOST_PP_LIST_TO_ARRAY_IV_27(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25)
+# define BOOST_PP_LIST_TO_ARRAY_IV_28(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26)
+# define BOOST_PP_LIST_TO_ARRAY_IV_29(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27)
+# define BOOST_PP_LIST_TO_ARRAY_IV_30(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28)
+# define BOOST_PP_LIST_TO_ARRAY_IV_31(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29)
+# define BOOST_PP_LIST_TO_ARRAY_IV_32(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30)
+# define BOOST_PP_LIST_TO_ARRAY_IV_33(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31)
+# define BOOST_PP_LIST_TO_ARRAY_IV_34(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32)
+# define BOOST_PP_LIST_TO_ARRAY_IV_35(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33)
+# define BOOST_PP_LIST_TO_ARRAY_IV_36(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34)
+# define BOOST_PP_LIST_TO_ARRAY_IV_37(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35)
+# define BOOST_PP_LIST_TO_ARRAY_IV_38(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36)
+# define BOOST_PP_LIST_TO_ARRAY_IV_39(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37)
+# define BOOST_PP_LIST_TO_ARRAY_IV_40(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38)
+# define BOOST_PP_LIST_TO_ARRAY_IV_41(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39)
+# define BOOST_PP_LIST_TO_ARRAY_IV_42(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40)
+# define BOOST_PP_LIST_TO_ARRAY_IV_43(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41)
+# define BOOST_PP_LIST_TO_ARRAY_IV_44(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42)
+# define BOOST_PP_LIST_TO_ARRAY_IV_45(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43)
+# define BOOST_PP_LIST_TO_ARRAY_IV_46(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44)
+# define BOOST_PP_LIST_TO_ARRAY_IV_47(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45)
+# define BOOST_PP_LIST_TO_ARRAY_IV_48(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46)
+# define BOOST_PP_LIST_TO_ARRAY_IV_49(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47)
+# define BOOST_PP_LIST_TO_ARRAY_IV_50(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48)
+# define BOOST_PP_LIST_TO_ARRAY_IV_51(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49)
+# define BOOST_PP_LIST_TO_ARRAY_IV_52(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50)
+# define BOOST_PP_LIST_TO_ARRAY_IV_53(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51)
+# define BOOST_PP_LIST_TO_ARRAY_IV_54(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52)
+# define BOOST_PP_LIST_TO_ARRAY_IV_55(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53)
+# define BOOST_PP_LIST_TO_ARRAY_IV_56(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54)
+# define BOOST_PP_LIST_TO_ARRAY_IV_57(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55)
+# define BOOST_PP_LIST_TO_ARRAY_IV_58(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56)
+# define BOOST_PP_LIST_TO_ARRAY_IV_59(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57)
+# define BOOST_PP_LIST_TO_ARRAY_IV_60(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58)
+# define BOOST_PP_LIST_TO_ARRAY_IV_61(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59)
+# define BOOST_PP_LIST_TO_ARRAY_IV_62(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60)
+# define BOOST_PP_LIST_TO_ARRAY_IV_63(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61)
+# define BOOST_PP_LIST_TO_ARRAY_IV_64(_, e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62)
+# endif
+# define BOOST_PP_LIST_TO_ARRAY_P(d, state) BOOST_PP_LIST_IS_CONS(BOOST_PP_TUPLE_ELEM(3, 0, state))
+# define BOOST_PP_LIST_TO_ARRAY_O(d, state) BOOST_PP_LIST_TO_ARRAY_O_I state
+# define BOOST_PP_LIST_TO_ARRAY_O_I(list, size, tuple) (BOOST_PP_LIST_REST(list), BOOST_PP_INC(size), (BOOST_PP_TUPLE_REM(size) tuple, BOOST_PP_LIST_FIRST(list)))
+#
+# /* BOOST_PP_LIST_TO_ARRAY_D */
+#
+# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC && (_MSC_VER <= 1400)
+# define BOOST_PP_LIST_TO_ARRAY_D(d, list) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_LIST_IS_NIL(list), \
+ BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY, \
+ BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO \
+ ) \
+ (d, list) \
+/**/
+# define BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_EMPTY(d, list) (0,())
+# define BOOST_PP_LIST_TO_ARRAY_D_VC8ORLESS_DO(d, list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE_ ## d, list)
+# else
+# define BOOST_PP_LIST_TO_ARRAY_D(d, list) BOOST_PP_LIST_TO_ARRAY_I(BOOST_PP_WHILE_ ## d, list)
+# endif
+#
+# endif /* BOOST_PREPROCESSOR_LIST_TO_ARRAY_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_seq.hpp
new file mode 100644
index 0000000..7425907
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_seq.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Paul Mensonides (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TO_SEQ_HPP
+# define BOOST_PREPROCESSOR_LIST_TO_SEQ_HPP
+#
+# include <boost/preprocessor/list/for_each.hpp>
+#
+# /* BOOST_PP_LIST_TO_SEQ */
+#
+# define BOOST_PP_LIST_TO_SEQ(list) \
+ BOOST_PP_LIST_FOR_EACH(BOOST_PP_LIST_TO_SEQ_MACRO, ~, list) \
+ /**/
+# define BOOST_PP_LIST_TO_SEQ_MACRO(r, data, elem) (elem)
+#
+# /* BOOST_PP_LIST_TO_SEQ_R */
+#
+# define BOOST_PP_LIST_TO_SEQ_R(r, list) \
+ BOOST_PP_LIST_FOR_EACH_R(r, BOOST_PP_LIST_TO_SEQ_MACRO, ~, list) \
+ /**/
+#
+# endif /* BOOST_PREPROCESSOR_LIST_TO_SEQ_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_tuple.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_tuple.hpp
new file mode 100644
index 0000000..c7b3da8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/to_tuple.hpp
@@ -0,0 +1,61 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TO_TUPLE_HPP
+# define BOOST_PREPROCESSOR_LIST_TO_TUPLE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/enum.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_LIST_TO_TUPLE */
+#
+# define BOOST_PP_LIST_TO_TUPLE(list) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_LIST_IS_NIL(list), \
+ BOOST_PP_LIST_TO_TUPLE_EMPTY, \
+ BOOST_PP_LIST_TO_TUPLE_DO \
+ ) \
+ (list) \
+/**/
+# define BOOST_PP_LIST_TO_TUPLE_EMPTY(list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TO_TUPLE_DO(list) (BOOST_PP_LIST_ENUM(list))
+# else
+# define BOOST_PP_LIST_TO_TUPLE_DO(list) BOOST_PP_LIST_TO_TUPLE_I(list)
+# define BOOST_PP_LIST_TO_TUPLE_I(list) (BOOST_PP_LIST_ENUM(list))
+# endif
+#
+# /* BOOST_PP_LIST_TO_TUPLE_R */
+#
+# define BOOST_PP_LIST_TO_TUPLE_R(r, list) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_LIST_IS_NIL(list), \
+ BOOST_PP_LIST_TO_TUPLE_R_EMPTY, \
+ BOOST_PP_LIST_TO_TUPLE_R_DO \
+ ) \
+ (r, list) \
+/**/
+# define BOOST_PP_LIST_TO_TUPLE_R_EMPTY(r,list)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TO_TUPLE_R_DO(r, list) (BOOST_PP_LIST_ENUM_R(r, list))
+# else
+# define BOOST_PP_LIST_TO_TUPLE_R_DO(r, list) BOOST_PP_LIST_TO_TUPLE_R_I(r, list)
+# define BOOST_PP_LIST_TO_TUPLE_R_I(r, list) (BOOST_PP_LIST_ENUM_R(r, list))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/list/transform.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/transform.hpp
new file mode 100644
index 0000000..840f306
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/list/transform.hpp
@@ -0,0 +1,49 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_LIST_TRANSFORM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/list/fold_right.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_LIST_TRANSFORM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# else
+# define BOOST_PP_LIST_TRANSFORM(op, data, list) BOOST_PP_LIST_TRANSFORM_I(op, data, list)
+# define BOOST_PP_LIST_TRANSFORM_I(op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, BOOST_PP_TUPLE_ELEM(3, 0, odr), BOOST_PP_TUPLE_ELEM(3, 1, odr), BOOST_PP_TUPLE_ELEM(3, 2, odr), elem)
+# else
+# define BOOST_PP_LIST_TRANSFORM_O(d, odr, elem) BOOST_PP_LIST_TRANSFORM_O_I(d, BOOST_PP_TUPLE_REM_3 odr, elem)
+# define BOOST_PP_LIST_TRANSFORM_O_I(d, im, elem) BOOST_PP_LIST_TRANSFORM_O_D(d, im, elem)
+# endif
+#
+# define BOOST_PP_LIST_TRANSFORM_O_D(d, op, data, res, elem) (op, data, (op(d, data, elem), res))
+#
+# /* BOOST_PP_LIST_TRANSFORM_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# else
+# define BOOST_PP_LIST_TRANSFORM_D(d, op, data, list) BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list)
+# define BOOST_PP_LIST_TRANSFORM_D_I(d, op, data, list) BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_LIST_FOLD_RIGHT_ ## d(BOOST_PP_LIST_TRANSFORM_O, (op, data, BOOST_PP_NIL), list))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical.hpp
new file mode 100644
index 0000000..040edeb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical.hpp
@@ -0,0 +1,29 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_HPP
+#
+# include <boost/preprocessor/logical/and.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+# include <boost/preprocessor/logical/bitnor.hpp>
+# include <boost/preprocessor/logical/bitor.hpp>
+# include <boost/preprocessor/logical/bitxor.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+# include <boost/preprocessor/logical/nor.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+# include <boost/preprocessor/logical/or.hpp>
+# include <boost/preprocessor/logical/xor.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/and.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/and.hpp
new file mode 100644
index 0000000..8590365
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/and.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+#
+# /* BOOST_PP_AND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q)
+# define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitand.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitand.hpp
new file mode 100644
index 0000000..74e9527
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitand.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITAND_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITAND */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_I(x, y)
+# else
+# define BOOST_PP_BITAND(x, y) BOOST_PP_BITAND_OO((x, y))
+# define BOOST_PP_BITAND_OO(par) BOOST_PP_BITAND_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ ## x ## y
+# else
+# define BOOST_PP_BITAND_I(x, y) BOOST_PP_BITAND_ID(BOOST_PP_BITAND_ ## x ## y)
+# define BOOST_PP_BITAND_ID(res) res
+# endif
+#
+# define BOOST_PP_BITAND_00 0
+# define BOOST_PP_BITAND_01 0
+# define BOOST_PP_BITAND_10 0
+# define BOOST_PP_BITAND_11 1
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitnor.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitnor.hpp
new file mode 100644
index 0000000..110fba8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitnor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BITNOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITNOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITNOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITNOR(x, y) BOOST_PP_BITNOR_I(x, y)
+# else
+# define BOOST_PP_BITNOR(x, y) BOOST_PP_BITNOR_OO((x, y))
+# define BOOST_PP_BITNOR_OO(par) BOOST_PP_BITNOR_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITNOR_I(x, y) BOOST_PP_BITNOR_ ## x ## y
+# else
+# define BOOST_PP_BITNOR_I(x, y) BOOST_PP_BITNOR_ID(BOOST_PP_BITNOR_ ## x ## y)
+# define BOOST_PP_BITNOR_ID(id) id
+# endif
+#
+# define BOOST_PP_BITNOR_00 1
+# define BOOST_PP_BITNOR_01 0
+# define BOOST_PP_BITNOR_10 0
+# define BOOST_PP_BITNOR_11 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitor.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitor.hpp
new file mode 100644
index 0000000..c0bc2c6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y)
+# else
+# define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y))
+# define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y
+# else
+# define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y)
+# define BOOST_PP_BITOR_ID(id) id
+# endif
+#
+# define BOOST_PP_BITOR_00 0
+# define BOOST_PP_BITOR_01 1
+# define BOOST_PP_BITOR_10 1
+# define BOOST_PP_BITOR_11 1
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitxor.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitxor.hpp
new file mode 100644
index 0000000..0488aca
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bitxor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BITXOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITXOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITXOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BITXOR(x, y) BOOST_PP_BITXOR_I(x, y)
+# else
+# define BOOST_PP_BITXOR(x, y) BOOST_PP_BITXOR_OO((x, y))
+# define BOOST_PP_BITXOR_OO(par) BOOST_PP_BITXOR_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_BITXOR_I(x, y) BOOST_PP_BITXOR_ ## x ## y
+# else
+# define BOOST_PP_BITXOR_I(x, y) BOOST_PP_BITXOR_ID(BOOST_PP_BITXOR_ ## x ## y)
+# define BOOST_PP_BITXOR_ID(id) id
+# endif
+#
+# define BOOST_PP_BITXOR_00 0
+# define BOOST_PP_BITXOR_01 1
+# define BOOST_PP_BITXOR_10 1
+# define BOOST_PP_BITXOR_11 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bool.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bool.hpp
new file mode 100644
index 0000000..fc01b5b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/bool.hpp
@@ -0,0 +1,288 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BOOL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
+# else
+# define BOOST_PP_BOOL(x) BOOST_PP_BOOL_OO((x))
+# define BOOST_PP_BOOL_OO(par) BOOST_PP_BOOL_I ## par
+# endif
+#
+# define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
+#
+# define BOOST_PP_BOOL_0 0
+# define BOOST_PP_BOOL_1 1
+# define BOOST_PP_BOOL_2 1
+# define BOOST_PP_BOOL_3 1
+# define BOOST_PP_BOOL_4 1
+# define BOOST_PP_BOOL_5 1
+# define BOOST_PP_BOOL_6 1
+# define BOOST_PP_BOOL_7 1
+# define BOOST_PP_BOOL_8 1
+# define BOOST_PP_BOOL_9 1
+# define BOOST_PP_BOOL_10 1
+# define BOOST_PP_BOOL_11 1
+# define BOOST_PP_BOOL_12 1
+# define BOOST_PP_BOOL_13 1
+# define BOOST_PP_BOOL_14 1
+# define BOOST_PP_BOOL_15 1
+# define BOOST_PP_BOOL_16 1
+# define BOOST_PP_BOOL_17 1
+# define BOOST_PP_BOOL_18 1
+# define BOOST_PP_BOOL_19 1
+# define BOOST_PP_BOOL_20 1
+# define BOOST_PP_BOOL_21 1
+# define BOOST_PP_BOOL_22 1
+# define BOOST_PP_BOOL_23 1
+# define BOOST_PP_BOOL_24 1
+# define BOOST_PP_BOOL_25 1
+# define BOOST_PP_BOOL_26 1
+# define BOOST_PP_BOOL_27 1
+# define BOOST_PP_BOOL_28 1
+# define BOOST_PP_BOOL_29 1
+# define BOOST_PP_BOOL_30 1
+# define BOOST_PP_BOOL_31 1
+# define BOOST_PP_BOOL_32 1
+# define BOOST_PP_BOOL_33 1
+# define BOOST_PP_BOOL_34 1
+# define BOOST_PP_BOOL_35 1
+# define BOOST_PP_BOOL_36 1
+# define BOOST_PP_BOOL_37 1
+# define BOOST_PP_BOOL_38 1
+# define BOOST_PP_BOOL_39 1
+# define BOOST_PP_BOOL_40 1
+# define BOOST_PP_BOOL_41 1
+# define BOOST_PP_BOOL_42 1
+# define BOOST_PP_BOOL_43 1
+# define BOOST_PP_BOOL_44 1
+# define BOOST_PP_BOOL_45 1
+# define BOOST_PP_BOOL_46 1
+# define BOOST_PP_BOOL_47 1
+# define BOOST_PP_BOOL_48 1
+# define BOOST_PP_BOOL_49 1
+# define BOOST_PP_BOOL_50 1
+# define BOOST_PP_BOOL_51 1
+# define BOOST_PP_BOOL_52 1
+# define BOOST_PP_BOOL_53 1
+# define BOOST_PP_BOOL_54 1
+# define BOOST_PP_BOOL_55 1
+# define BOOST_PP_BOOL_56 1
+# define BOOST_PP_BOOL_57 1
+# define BOOST_PP_BOOL_58 1
+# define BOOST_PP_BOOL_59 1
+# define BOOST_PP_BOOL_60 1
+# define BOOST_PP_BOOL_61 1
+# define BOOST_PP_BOOL_62 1
+# define BOOST_PP_BOOL_63 1
+# define BOOST_PP_BOOL_64 1
+# define BOOST_PP_BOOL_65 1
+# define BOOST_PP_BOOL_66 1
+# define BOOST_PP_BOOL_67 1
+# define BOOST_PP_BOOL_68 1
+# define BOOST_PP_BOOL_69 1
+# define BOOST_PP_BOOL_70 1
+# define BOOST_PP_BOOL_71 1
+# define BOOST_PP_BOOL_72 1
+# define BOOST_PP_BOOL_73 1
+# define BOOST_PP_BOOL_74 1
+# define BOOST_PP_BOOL_75 1
+# define BOOST_PP_BOOL_76 1
+# define BOOST_PP_BOOL_77 1
+# define BOOST_PP_BOOL_78 1
+# define BOOST_PP_BOOL_79 1
+# define BOOST_PP_BOOL_80 1
+# define BOOST_PP_BOOL_81 1
+# define BOOST_PP_BOOL_82 1
+# define BOOST_PP_BOOL_83 1
+# define BOOST_PP_BOOL_84 1
+# define BOOST_PP_BOOL_85 1
+# define BOOST_PP_BOOL_86 1
+# define BOOST_PP_BOOL_87 1
+# define BOOST_PP_BOOL_88 1
+# define BOOST_PP_BOOL_89 1
+# define BOOST_PP_BOOL_90 1
+# define BOOST_PP_BOOL_91 1
+# define BOOST_PP_BOOL_92 1
+# define BOOST_PP_BOOL_93 1
+# define BOOST_PP_BOOL_94 1
+# define BOOST_PP_BOOL_95 1
+# define BOOST_PP_BOOL_96 1
+# define BOOST_PP_BOOL_97 1
+# define BOOST_PP_BOOL_98 1
+# define BOOST_PP_BOOL_99 1
+# define BOOST_PP_BOOL_100 1
+# define BOOST_PP_BOOL_101 1
+# define BOOST_PP_BOOL_102 1
+# define BOOST_PP_BOOL_103 1
+# define BOOST_PP_BOOL_104 1
+# define BOOST_PP_BOOL_105 1
+# define BOOST_PP_BOOL_106 1
+# define BOOST_PP_BOOL_107 1
+# define BOOST_PP_BOOL_108 1
+# define BOOST_PP_BOOL_109 1
+# define BOOST_PP_BOOL_110 1
+# define BOOST_PP_BOOL_111 1
+# define BOOST_PP_BOOL_112 1
+# define BOOST_PP_BOOL_113 1
+# define BOOST_PP_BOOL_114 1
+# define BOOST_PP_BOOL_115 1
+# define BOOST_PP_BOOL_116 1
+# define BOOST_PP_BOOL_117 1
+# define BOOST_PP_BOOL_118 1
+# define BOOST_PP_BOOL_119 1
+# define BOOST_PP_BOOL_120 1
+# define BOOST_PP_BOOL_121 1
+# define BOOST_PP_BOOL_122 1
+# define BOOST_PP_BOOL_123 1
+# define BOOST_PP_BOOL_124 1
+# define BOOST_PP_BOOL_125 1
+# define BOOST_PP_BOOL_126 1
+# define BOOST_PP_BOOL_127 1
+# define BOOST_PP_BOOL_128 1
+# define BOOST_PP_BOOL_129 1
+# define BOOST_PP_BOOL_130 1
+# define BOOST_PP_BOOL_131 1
+# define BOOST_PP_BOOL_132 1
+# define BOOST_PP_BOOL_133 1
+# define BOOST_PP_BOOL_134 1
+# define BOOST_PP_BOOL_135 1
+# define BOOST_PP_BOOL_136 1
+# define BOOST_PP_BOOL_137 1
+# define BOOST_PP_BOOL_138 1
+# define BOOST_PP_BOOL_139 1
+# define BOOST_PP_BOOL_140 1
+# define BOOST_PP_BOOL_141 1
+# define BOOST_PP_BOOL_142 1
+# define BOOST_PP_BOOL_143 1
+# define BOOST_PP_BOOL_144 1
+# define BOOST_PP_BOOL_145 1
+# define BOOST_PP_BOOL_146 1
+# define BOOST_PP_BOOL_147 1
+# define BOOST_PP_BOOL_148 1
+# define BOOST_PP_BOOL_149 1
+# define BOOST_PP_BOOL_150 1
+# define BOOST_PP_BOOL_151 1
+# define BOOST_PP_BOOL_152 1
+# define BOOST_PP_BOOL_153 1
+# define BOOST_PP_BOOL_154 1
+# define BOOST_PP_BOOL_155 1
+# define BOOST_PP_BOOL_156 1
+# define BOOST_PP_BOOL_157 1
+# define BOOST_PP_BOOL_158 1
+# define BOOST_PP_BOOL_159 1
+# define BOOST_PP_BOOL_160 1
+# define BOOST_PP_BOOL_161 1
+# define BOOST_PP_BOOL_162 1
+# define BOOST_PP_BOOL_163 1
+# define BOOST_PP_BOOL_164 1
+# define BOOST_PP_BOOL_165 1
+# define BOOST_PP_BOOL_166 1
+# define BOOST_PP_BOOL_167 1
+# define BOOST_PP_BOOL_168 1
+# define BOOST_PP_BOOL_169 1
+# define BOOST_PP_BOOL_170 1
+# define BOOST_PP_BOOL_171 1
+# define BOOST_PP_BOOL_172 1
+# define BOOST_PP_BOOL_173 1
+# define BOOST_PP_BOOL_174 1
+# define BOOST_PP_BOOL_175 1
+# define BOOST_PP_BOOL_176 1
+# define BOOST_PP_BOOL_177 1
+# define BOOST_PP_BOOL_178 1
+# define BOOST_PP_BOOL_179 1
+# define BOOST_PP_BOOL_180 1
+# define BOOST_PP_BOOL_181 1
+# define BOOST_PP_BOOL_182 1
+# define BOOST_PP_BOOL_183 1
+# define BOOST_PP_BOOL_184 1
+# define BOOST_PP_BOOL_185 1
+# define BOOST_PP_BOOL_186 1
+# define BOOST_PP_BOOL_187 1
+# define BOOST_PP_BOOL_188 1
+# define BOOST_PP_BOOL_189 1
+# define BOOST_PP_BOOL_190 1
+# define BOOST_PP_BOOL_191 1
+# define BOOST_PP_BOOL_192 1
+# define BOOST_PP_BOOL_193 1
+# define BOOST_PP_BOOL_194 1
+# define BOOST_PP_BOOL_195 1
+# define BOOST_PP_BOOL_196 1
+# define BOOST_PP_BOOL_197 1
+# define BOOST_PP_BOOL_198 1
+# define BOOST_PP_BOOL_199 1
+# define BOOST_PP_BOOL_200 1
+# define BOOST_PP_BOOL_201 1
+# define BOOST_PP_BOOL_202 1
+# define BOOST_PP_BOOL_203 1
+# define BOOST_PP_BOOL_204 1
+# define BOOST_PP_BOOL_205 1
+# define BOOST_PP_BOOL_206 1
+# define BOOST_PP_BOOL_207 1
+# define BOOST_PP_BOOL_208 1
+# define BOOST_PP_BOOL_209 1
+# define BOOST_PP_BOOL_210 1
+# define BOOST_PP_BOOL_211 1
+# define BOOST_PP_BOOL_212 1
+# define BOOST_PP_BOOL_213 1
+# define BOOST_PP_BOOL_214 1
+# define BOOST_PP_BOOL_215 1
+# define BOOST_PP_BOOL_216 1
+# define BOOST_PP_BOOL_217 1
+# define BOOST_PP_BOOL_218 1
+# define BOOST_PP_BOOL_219 1
+# define BOOST_PP_BOOL_220 1
+# define BOOST_PP_BOOL_221 1
+# define BOOST_PP_BOOL_222 1
+# define BOOST_PP_BOOL_223 1
+# define BOOST_PP_BOOL_224 1
+# define BOOST_PP_BOOL_225 1
+# define BOOST_PP_BOOL_226 1
+# define BOOST_PP_BOOL_227 1
+# define BOOST_PP_BOOL_228 1
+# define BOOST_PP_BOOL_229 1
+# define BOOST_PP_BOOL_230 1
+# define BOOST_PP_BOOL_231 1
+# define BOOST_PP_BOOL_232 1
+# define BOOST_PP_BOOL_233 1
+# define BOOST_PP_BOOL_234 1
+# define BOOST_PP_BOOL_235 1
+# define BOOST_PP_BOOL_236 1
+# define BOOST_PP_BOOL_237 1
+# define BOOST_PP_BOOL_238 1
+# define BOOST_PP_BOOL_239 1
+# define BOOST_PP_BOOL_240 1
+# define BOOST_PP_BOOL_241 1
+# define BOOST_PP_BOOL_242 1
+# define BOOST_PP_BOOL_243 1
+# define BOOST_PP_BOOL_244 1
+# define BOOST_PP_BOOL_245 1
+# define BOOST_PP_BOOL_246 1
+# define BOOST_PP_BOOL_247 1
+# define BOOST_PP_BOOL_248 1
+# define BOOST_PP_BOOL_249 1
+# define BOOST_PP_BOOL_250 1
+# define BOOST_PP_BOOL_251 1
+# define BOOST_PP_BOOL_252 1
+# define BOOST_PP_BOOL_253 1
+# define BOOST_PP_BOOL_254 1
+# define BOOST_PP_BOOL_255 1
+# define BOOST_PP_BOOL_256 1
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/compl.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/compl.hpp
new file mode 100644
index 0000000..ad4c7a4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/compl.hpp
@@ -0,0 +1,36 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_COMPL_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_COMPL */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_COMPL(x) BOOST_PP_COMPL_I(x)
+# else
+# define BOOST_PP_COMPL(x) BOOST_PP_COMPL_OO((x))
+# define BOOST_PP_COMPL_OO(par) BOOST_PP_COMPL_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ ## x
+# else
+# define BOOST_PP_COMPL_I(x) BOOST_PP_COMPL_ID(BOOST_PP_COMPL_ ## x)
+# define BOOST_PP_COMPL_ID(id) id
+# endif
+#
+# define BOOST_PP_COMPL_0 1
+# define BOOST_PP_COMPL_1 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/nor.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/nor.hpp
new file mode 100644
index 0000000..2c0df4b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/nor.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitnor.hpp>
+#
+# /* BOOST_PP_NOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_NOR(p, q) BOOST_PP_BITNOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_NOR(p, q) BOOST_PP_NOR_I(p, q)
+# define BOOST_PP_NOR_I(p, q) BOOST_PP_BITNOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/not.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/not.hpp
new file mode 100644
index 0000000..b509d3f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/not.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_NOT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# else
+# define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
+# define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/or.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/or.hpp
new file mode 100644
index 0000000..88d5207
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/or.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitor.hpp>
+#
+# /* BOOST_PP_OR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
+# define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/xor.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/xor.hpp
new file mode 100644
index 0000000..34c00e0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/logical/xor.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_XOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_XOR_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/bitxor.hpp>
+#
+# /* BOOST_PP_XOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_XOR(p, q) BOOST_PP_BITXOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+# define BOOST_PP_XOR(p, q) BOOST_PP_XOR_I(p, q)
+# define BOOST_PP_XOR_I(p, q) BOOST_PP_BITXOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/max.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/max.hpp
new file mode 100644
index 0000000..3a46ed9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/max.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_MAX_HPP
+# define BOOST_PREPROCESSOR_MAX_HPP
+#
+# include <boost/preprocessor/selection/max.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/min.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/min.hpp
new file mode 100644
index 0000000..8d8e9af
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/min.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_MIN_HPP
+# define BOOST_PREPROCESSOR_MIN_HPP
+#
+# include <boost/preprocessor/selection/min.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation.hpp
new file mode 100644
index 0000000..56dd064
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_HPP
+#
+# include <boost/preprocessor/punctuation/comma.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/punctuation/is_begin_parens.hpp>
+# include <boost/preprocessor/punctuation/paren.hpp>
+# include <boost/preprocessor/punctuation/paren_if.hpp>
+# include <boost/preprocessor/punctuation/remove_parens.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/comma.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/comma.hpp
new file mode 100644
index 0000000..38c2e0e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/comma.hpp
@@ -0,0 +1,21 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_HPP
+#
+# /* BOOST_PP_COMMA */
+#
+# define BOOST_PP_COMMA() ,
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/comma_if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/comma_if.hpp
new file mode 100644
index 0000000..c711f36
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/comma_if.hpp
@@ -0,0 +1,31 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/punctuation/comma.hpp>
+#
+# /* BOOST_PP_COMMA_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
+# else
+# define BOOST_PP_COMMA_IF(cond) BOOST_PP_COMMA_IF_I(cond)
+# define BOOST_PP_COMMA_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp
new file mode 100644
index 0000000..c94ccf3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+#ifndef BOOST_PREPROCESSOR_DETAIL_IS_BEGIN_PARENS_HPP
+#define BOOST_PREPROCESSOR_DETAIL_IS_BEGIN_PARENS_HPP
+
+#if BOOST_PP_VARIADICS_MSVC
+
+#include <boost/preprocessor/facilities/empty.hpp>
+
+#define BOOST_PP_DETAIL_VD_IBP_CAT(a, b) BOOST_PP_DETAIL_VD_IBP_CAT_I(a, b)
+#define BOOST_PP_DETAIL_VD_IBP_CAT_I(a, b) BOOST_PP_DETAIL_VD_IBP_CAT_II(a ## b)
+#define BOOST_PP_DETAIL_VD_IBP_CAT_II(res) res
+
+#define BOOST_PP_DETAIL_IBP_SPLIT(i, ...) \
+ BOOST_PP_DETAIL_VD_IBP_CAT(BOOST_PP_DETAIL_IBP_PRIMITIVE_CAT(BOOST_PP_DETAIL_IBP_SPLIT_,i)(__VA_ARGS__),BOOST_PP_EMPTY()) \
+/**/
+
+#define BOOST_PP_DETAIL_IBP_IS_VARIADIC_C(...) 1 1
+
+#else
+
+#define BOOST_PP_DETAIL_IBP_SPLIT(i, ...) \
+ BOOST_PP_DETAIL_IBP_PRIMITIVE_CAT(BOOST_PP_DETAIL_IBP_SPLIT_,i)(__VA_ARGS__) \
+/**/
+
+#define BOOST_PP_DETAIL_IBP_IS_VARIADIC_C(...) 1
+
+#endif /* BOOST_PP_VARIADICS_MSVC */
+
+#define BOOST_PP_DETAIL_IBP_SPLIT_0(a, ...) a
+#define BOOST_PP_DETAIL_IBP_SPLIT_1(a, ...) __VA_ARGS__
+
+#define BOOST_PP_DETAIL_IBP_CAT(a, ...) BOOST_PP_DETAIL_IBP_PRIMITIVE_CAT(a,__VA_ARGS__)
+#define BOOST_PP_DETAIL_IBP_PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
+
+#define BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_1 1,
+#define BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_BOOST_PP_DETAIL_IBP_IS_VARIADIC_C 0,
+
+#endif /* BOOST_PREPROCESSOR_DETAIL_IS_BEGIN_PARENS_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/is_begin_parens.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/is_begin_parens.hpp
new file mode 100644
index 0000000..20b32bc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/is_begin_parens.hpp
@@ -0,0 +1,51 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP
+# define BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP
+
+# include <boost/preprocessor/config/config.hpp>
+
+#if BOOST_PP_VARIADICS
+
+#include <boost/preprocessor/punctuation/detail/is_begin_parens.hpp>
+
+#if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+
+#define BOOST_PP_IS_BEGIN_PARENS(param) \
+ BOOST_PP_DETAIL_IBP_SPLIT \
+ ( \
+ 0, \
+ BOOST_PP_DETAIL_IBP_CAT \
+ ( \
+ BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_, \
+ BOOST_PP_DETAIL_IBP_IS_VARIADIC_C param \
+ ) \
+ ) \
+/**/
+
+#else
+
+#define BOOST_PP_IS_BEGIN_PARENS(...) \
+ BOOST_PP_DETAIL_IBP_SPLIT \
+ ( \
+ 0, \
+ BOOST_PP_DETAIL_IBP_CAT \
+ ( \
+ BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_, \
+ BOOST_PP_DETAIL_IBP_IS_VARIADIC_C __VA_ARGS__ \
+ ) \
+ ) \
+/**/
+
+#endif /* BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */
+#endif /* BOOST_PP_VARIADICS */
+#endif /* BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/paren.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/paren.hpp
new file mode 100644
index 0000000..28c18cb
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/paren.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+#
+# /* BOOST_PP_LPAREN */
+#
+# define BOOST_PP_LPAREN() (
+#
+# /* BOOST_PP_RPAREN */
+#
+# define BOOST_PP_RPAREN() )
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/paren_if.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/paren_if.hpp
new file mode 100644
index 0000000..1239ec1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/paren_if.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_IF_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_IF_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/punctuation/paren.hpp>
+#
+# /* BOOST_PP_LPAREN_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_LPAREN_IF(cond) BOOST_PP_IF(cond, BOOST_PP_LPAREN, BOOST_PP_EMPTY)()
+# else
+# define BOOST_PP_LPAREN_IF(cond) BOOST_PP_LPAREN_IF_I(cond)
+# define BOOST_PP_LPAREN_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_LPAREN, BOOST_PP_EMPTY)()
+# endif
+#
+# /* BOOST_PP_RPAREN_IF */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_RPAREN_IF(cond) BOOST_PP_IF(cond, BOOST_PP_RPAREN, BOOST_PP_EMPTY)()
+# else
+# define BOOST_PP_RPAREN_IF(cond) BOOST_PP_RPAREN_IF_I(cond)
+# define BOOST_PP_RPAREN_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_RPAREN, BOOST_PP_EMPTY)()
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/remove_parens.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/remove_parens.hpp
new file mode 100644
index 0000000..4700936
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/punctuation/remove_parens.hpp
@@ -0,0 +1,39 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+#ifndef BOOST_PREPROCESSOR_REMOVE_PARENS_HPP
+#define BOOST_PREPROCESSOR_REMOVE_PARENS_HPP
+
+#include <boost/preprocessor/config/config.hpp>
+
+#if BOOST_PP_VARIADICS
+
+#include <boost/preprocessor/control/iif.hpp>
+#include <boost/preprocessor/facilities/identity.hpp>
+#include <boost/preprocessor/punctuation/is_begin_parens.hpp>
+#include <boost/preprocessor/tuple/enum.hpp>
+
+#define BOOST_PP_REMOVE_PARENS(param) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_IS_BEGIN_PARENS(param), \
+ BOOST_PP_REMOVE_PARENS_DO, \
+ BOOST_PP_IDENTITY \
+ ) \
+ (param)() \
+/**/
+
+#define BOOST_PP_REMOVE_PARENS_DO(param) \
+ BOOST_PP_IDENTITY(BOOST_PP_TUPLE_ENUM(param)) \
+/**/
+
+#endif /* BOOST_PP_VARIADICS */
+#endif /* BOOST_PREPROCESSOR_REMOVE_PARENS_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat.hpp
new file mode 100644
index 0000000..7c47ee8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_HPP
+# define BOOST_PREPROCESSOR_REPEAT_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_2nd.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_2nd.hpp
new file mode 100644
index 0000000..030c432
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_2nd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_2ND_HPP
+# define BOOST_PREPROCESSOR_REPEAT_2ND_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_3rd.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_3rd.hpp
new file mode 100644
index 0000000..9ab36a5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_3rd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_3RD_HPP
+# define BOOST_PREPROCESSOR_REPEAT_3RD_HPP
+#
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to.hpp
new file mode 100644
index 0000000..4ddc3be
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to_2nd.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to_2nd.hpp
new file mode 100644
index 0000000..b833fb5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to_2nd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_2ND_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to_3rd.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to_3rd.hpp
new file mode 100644
index 0000000..8cd776f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repeat_from_to_3rd.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
+# define BOOST_PREPROCESSOR_REPEAT_FROM_TO_3RD_HPP
+#
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition.hpp
new file mode 100644
index 0000000..efcd60a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_HPP
+# define BOOST_PREPROCESSOR_REPETITION_HPP
+#
+# include <boost/preprocessor/repetition/deduce_r.hpp>
+# include <boost/preprocessor/repetition/deduce_z.hpp>
+# include <boost/preprocessor/repetition/enum.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+# include <boost/preprocessor/repetition/enum_params.hpp>
+# include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+# include <boost/preprocessor/repetition/enum_params_with_defaults.hpp>
+# include <boost/preprocessor/repetition/enum_shifted.hpp>
+# include <boost/preprocessor/repetition/enum_shifted_binary_params.hpp>
+# include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+# include <boost/preprocessor/repetition/enum_trailing.hpp>
+# include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
+# include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/deduce_r.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/deduce_r.hpp
new file mode 100644
index 0000000..e49296a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/deduce_r.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DEDUCE_R_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DEDUCE_R_HPP
+#
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+#
+# /* BOOST_PP_DEDUCE_R */
+#
+# define BOOST_PP_DEDUCE_R() BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/deduce_z.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/deduce_z.hpp
new file mode 100644
index 0000000..14dedc2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/deduce_z.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DEDUCE_Z_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DEDUCE_Z_HPP
+#
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_DEDUCE_Z */
+#
+# define BOOST_PP_DEDUCE_Z() BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/dmc/for.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/dmc/for.hpp
new file mode 100644
index 0000000..1d907ff
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/dmc/for.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p##(2, s)), s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p##(3, s)), s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p##(4, s)), s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p##(5, s)), s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p##(6, s)), s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p##(7, s)), s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p##(8, s)), s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p##(9, s)), s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p##(10, s)), s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p##(11, s)), s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p##(12, s)), s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p##(13, s)), s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p##(14, s)), s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p##(15, s)), s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p##(16, s)), s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p##(17, s)), s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p##(18, s)), s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p##(19, s)), s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p##(20, s)), s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p##(21, s)), s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p##(22, s)), s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p##(23, s)), s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p##(24, s)), s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p##(25, s)), s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p##(26, s)), s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p##(27, s)), s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p##(28, s)), s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p##(29, s)), s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p##(30, s)), s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p##(31, s)), s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p##(32, s)), s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p##(33, s)), s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p##(34, s)), s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p##(35, s)), s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p##(36, s)), s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p##(37, s)), s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p##(38, s)), s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p##(39, s)), s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p##(40, s)), s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p##(41, s)), s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p##(42, s)), s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p##(43, s)), s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p##(44, s)), s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p##(45, s)), s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p##(46, s)), s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p##(47, s)), s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p##(48, s)), s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p##(49, s)), s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p##(50, s)), s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p##(51, s)), s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p##(52, s)), s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p##(53, s)), s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p##(54, s)), s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p##(55, s)), s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p##(56, s)), s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p##(57, s)), s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p##(58, s)), s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p##(59, s)), s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p##(60, s)), s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p##(61, s)), s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p##(62, s)), s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p##(63, s)), s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p##(64, s)), s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p##(65, s)), s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p##(66, s)), s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p##(67, s)), s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p##(68, s)), s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p##(69, s)), s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p##(70, s)), s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p##(71, s)), s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p##(72, s)), s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p##(73, s)), s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p##(74, s)), s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p##(75, s)), s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p##(76, s)), s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p##(77, s)), s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p##(78, s)), s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p##(79, s)), s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p##(80, s)), s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p##(81, s)), s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p##(82, s)), s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p##(83, s)), s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p##(84, s)), s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p##(85, s)), s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p##(86, s)), s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p##(87, s)), s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p##(88, s)), s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p##(89, s)), s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p##(90, s)), s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p##(91, s)), s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p##(92, s)), s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p##(93, s)), s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p##(94, s)), s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p##(95, s)), s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p##(96, s)), s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p##(97, s)), s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p##(98, s)), s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p##(99, s)), s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p##(100, s)), s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p##(101, s)), s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p##(102, s)), s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p##(103, s)), s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p##(104, s)), s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p##(105, s)), s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p##(106, s)), s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p##(107, s)), s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p##(108, s)), s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p##(109, s)), s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p##(110, s)), s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p##(111, s)), s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p##(112, s)), s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p##(113, s)), s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p##(114, s)), s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p##(115, s)), s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p##(116, s)), s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p##(117, s)), s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p##(118, s)), s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p##(119, s)), s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p##(120, s)), s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p##(121, s)), s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p##(122, s)), s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p##(123, s)), s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p##(124, s)), s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p##(125, s)), s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p##(126, s)), s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p##(127, s)), s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p##(128, s)), s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p##(129, s)), s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p##(130, s)), s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p##(131, s)), s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p##(132, s)), s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p##(133, s)), s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p##(134, s)), s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p##(135, s)), s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p##(136, s)), s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p##(137, s)), s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p##(138, s)), s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p##(139, s)), s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p##(140, s)), s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p##(141, s)), s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p##(142, s)), s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p##(143, s)), s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p##(144, s)), s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p##(145, s)), s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p##(146, s)), s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p##(147, s)), s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p##(148, s)), s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p##(149, s)), s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p##(150, s)), s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p##(151, s)), s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p##(152, s)), s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p##(153, s)), s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p##(154, s)), s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p##(155, s)), s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p##(156, s)), s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p##(157, s)), s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p##(158, s)), s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p##(159, s)), s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p##(160, s)), s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p##(161, s)), s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p##(162, s)), s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p##(163, s)), s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p##(164, s)), s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p##(165, s)), s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p##(166, s)), s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p##(167, s)), s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p##(168, s)), s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p##(169, s)), s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p##(170, s)), s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p##(171, s)), s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p##(172, s)), s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p##(173, s)), s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p##(174, s)), s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p##(175, s)), s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p##(176, s)), s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p##(177, s)), s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p##(178, s)), s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p##(179, s)), s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p##(180, s)), s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p##(181, s)), s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p##(182, s)), s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p##(183, s)), s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p##(184, s)), s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p##(185, s)), s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p##(186, s)), s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p##(187, s)), s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p##(188, s)), s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p##(189, s)), s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p##(190, s)), s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p##(191, s)), s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p##(192, s)), s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p##(193, s)), s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p##(194, s)), s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p##(195, s)), s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p##(196, s)), s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p##(197, s)), s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p##(198, s)), s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p##(199, s)), s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p##(200, s)), s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p##(201, s)), s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p##(202, s)), s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p##(203, s)), s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p##(204, s)), s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p##(205, s)), s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p##(206, s)), s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p##(207, s)), s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p##(208, s)), s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p##(209, s)), s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p##(210, s)), s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p##(211, s)), s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p##(212, s)), s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p##(213, s)), s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p##(214, s)), s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p##(215, s)), s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p##(216, s)), s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p##(217, s)), s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p##(218, s)), s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p##(219, s)), s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p##(220, s)), s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p##(221, s)), s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p##(222, s)), s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p##(223, s)), s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p##(224, s)), s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p##(225, s)), s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p##(226, s)), s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p##(227, s)), s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p##(228, s)), s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p##(229, s)), s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p##(230, s)), s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p##(231, s)), s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p##(232, s)), s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p##(233, s)), s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p##(234, s)), s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p##(235, s)), s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p##(236, s)), s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p##(237, s)), s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p##(238, s)), s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p##(239, s)), s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p##(240, s)), s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p##(241, s)), s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p##(242, s)), s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p##(243, s)), s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p##(244, s)), s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p##(245, s)), s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p##(246, s)), s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p##(247, s)), s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p##(248, s)), s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p##(249, s)), s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p##(250, s)), s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p##(251, s)), s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p##(252, s)), s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p##(253, s)), s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p##(254, s)), s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p##(255, s)), s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p##(256, s)), s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p##(257, s)), s, p, o, m)
+#
+# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/edg/for.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/edg/for.hpp
new file mode 100644
index 0000000..212921a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/edg/for.hpp
@@ -0,0 +1,534 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_EDG_FOR_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_I(s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_I(s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_I(s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_I(s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_I(s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_I(s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_I(s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_I(s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_I(s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_I(s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_I(s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_I(s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_I(s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_I(s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_I(s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_I(s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_I(s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_I(s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_I(s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_I(s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_I(s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_I(s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_I(s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_I(s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_I(s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_I(s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_I(s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_I(s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_I(s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_I(s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_I(s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_I(s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_I(s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_I(s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_I(s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_I(s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_I(s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_I(s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_I(s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_I(s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_I(s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_I(s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_I(s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_I(s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_I(s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_I(s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_I(s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_I(s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_I(s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_I(s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_I(s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_I(s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_I(s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_I(s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_I(s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_I(s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_I(s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_I(s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_I(s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_I(s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_I(s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_I(s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_I(s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_I(s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_I(s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_I(s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_I(s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_I(s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_I(s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_I(s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_I(s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_I(s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_I(s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_I(s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_I(s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_I(s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_I(s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_I(s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_I(s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_I(s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_I(s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_I(s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_I(s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_I(s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_I(s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_I(s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_I(s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_I(s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_I(s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_I(s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_I(s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_I(s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_I(s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_I(s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_I(s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_I(s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_I(s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_I(s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_I(s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_I(s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_I(s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_I(s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_I(s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_I(s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_I(s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_I(s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_I(s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_I(s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_I(s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_I(s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_I(s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_I(s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_I(s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_I(s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_I(s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_I(s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_I(s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_I(s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_I(s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_I(s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_I(s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_I(s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_I(s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_I(s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_I(s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_I(s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_I(s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_I(s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_I(s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_I(s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_I(s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_I(s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_I(s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_I(s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_I(s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_I(s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_I(s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_I(s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_I(s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_I(s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_I(s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_I(s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_I(s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_I(s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_I(s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_I(s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_I(s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_I(s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_I(s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_I(s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_I(s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_I(s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_I(s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_I(s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_I(s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_I(s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_I(s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_I(s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_I(s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_I(s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_I(s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_I(s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_I(s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_I(s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_I(s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_I(s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_I(s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_I(s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_I(s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_I(s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_I(s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_I(s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_I(s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_I(s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_I(s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_I(s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_I(s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_I(s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_I(s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_I(s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_I(s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_I(s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_I(s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_I(s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_I(s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_I(s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_I(s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_I(s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_I(s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_I(s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_I(s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_I(s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_I(s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_I(s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_I(s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_I(s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_I(s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_I(s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_I(s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_I(s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_I(s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_I(s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_I(s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_I(s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_I(s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_I(s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_I(s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_I(s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_I(s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_I(s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_I(s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_I(s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_I(s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_I(s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_I(s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_I(s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_I(s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_I(s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_I(s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_I(s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_I(s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_I(s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_I(s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_I(s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_I(s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_I(s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_I(s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_I(s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_I(s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_I(s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_I(s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_I(s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_I(s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_I(s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_I(s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_I(s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_I(s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_I(s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_I(s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_I(s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_I(s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_I(s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_I(s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_I(s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_I(s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_I(s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_I(s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_I(s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_I(s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_I(s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_I(s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_I(s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_I(s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_I(s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_I(s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_I(s, p, o, m)
+#
+# define BOOST_PP_FOR_1_I(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
+# define BOOST_PP_FOR_2_I(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
+# define BOOST_PP_FOR_3_I(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
+# define BOOST_PP_FOR_4_I(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
+# define BOOST_PP_FOR_5_I(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
+# define BOOST_PP_FOR_6_I(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
+# define BOOST_PP_FOR_7_I(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
+# define BOOST_PP_FOR_8_I(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
+# define BOOST_PP_FOR_9_I(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
+# define BOOST_PP_FOR_10_I(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
+# define BOOST_PP_FOR_11_I(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
+# define BOOST_PP_FOR_12_I(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
+# define BOOST_PP_FOR_13_I(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
+# define BOOST_PP_FOR_14_I(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
+# define BOOST_PP_FOR_15_I(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
+# define BOOST_PP_FOR_16_I(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
+# define BOOST_PP_FOR_17_I(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
+# define BOOST_PP_FOR_18_I(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
+# define BOOST_PP_FOR_19_I(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
+# define BOOST_PP_FOR_20_I(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
+# define BOOST_PP_FOR_21_I(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
+# define BOOST_PP_FOR_22_I(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
+# define BOOST_PP_FOR_23_I(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
+# define BOOST_PP_FOR_24_I(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
+# define BOOST_PP_FOR_25_I(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
+# define BOOST_PP_FOR_26_I(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
+# define BOOST_PP_FOR_27_I(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
+# define BOOST_PP_FOR_28_I(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
+# define BOOST_PP_FOR_29_I(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
+# define BOOST_PP_FOR_30_I(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
+# define BOOST_PP_FOR_31_I(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
+# define BOOST_PP_FOR_32_I(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
+# define BOOST_PP_FOR_33_I(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
+# define BOOST_PP_FOR_34_I(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
+# define BOOST_PP_FOR_35_I(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
+# define BOOST_PP_FOR_36_I(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
+# define BOOST_PP_FOR_37_I(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
+# define BOOST_PP_FOR_38_I(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
+# define BOOST_PP_FOR_39_I(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
+# define BOOST_PP_FOR_40_I(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
+# define BOOST_PP_FOR_41_I(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
+# define BOOST_PP_FOR_42_I(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
+# define BOOST_PP_FOR_43_I(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
+# define BOOST_PP_FOR_44_I(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
+# define BOOST_PP_FOR_45_I(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
+# define BOOST_PP_FOR_46_I(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
+# define BOOST_PP_FOR_47_I(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
+# define BOOST_PP_FOR_48_I(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
+# define BOOST_PP_FOR_49_I(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
+# define BOOST_PP_FOR_50_I(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
+# define BOOST_PP_FOR_51_I(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
+# define BOOST_PP_FOR_52_I(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
+# define BOOST_PP_FOR_53_I(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
+# define BOOST_PP_FOR_54_I(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
+# define BOOST_PP_FOR_55_I(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
+# define BOOST_PP_FOR_56_I(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
+# define BOOST_PP_FOR_57_I(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
+# define BOOST_PP_FOR_58_I(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
+# define BOOST_PP_FOR_59_I(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
+# define BOOST_PP_FOR_60_I(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
+# define BOOST_PP_FOR_61_I(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
+# define BOOST_PP_FOR_62_I(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
+# define BOOST_PP_FOR_63_I(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
+# define BOOST_PP_FOR_64_I(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
+# define BOOST_PP_FOR_65_I(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
+# define BOOST_PP_FOR_66_I(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
+# define BOOST_PP_FOR_67_I(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
+# define BOOST_PP_FOR_68_I(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
+# define BOOST_PP_FOR_69_I(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
+# define BOOST_PP_FOR_70_I(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
+# define BOOST_PP_FOR_71_I(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
+# define BOOST_PP_FOR_72_I(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
+# define BOOST_PP_FOR_73_I(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
+# define BOOST_PP_FOR_74_I(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
+# define BOOST_PP_FOR_75_I(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
+# define BOOST_PP_FOR_76_I(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
+# define BOOST_PP_FOR_77_I(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
+# define BOOST_PP_FOR_78_I(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
+# define BOOST_PP_FOR_79_I(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
+# define BOOST_PP_FOR_80_I(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
+# define BOOST_PP_FOR_81_I(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
+# define BOOST_PP_FOR_82_I(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
+# define BOOST_PP_FOR_83_I(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
+# define BOOST_PP_FOR_84_I(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
+# define BOOST_PP_FOR_85_I(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
+# define BOOST_PP_FOR_86_I(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
+# define BOOST_PP_FOR_87_I(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
+# define BOOST_PP_FOR_88_I(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
+# define BOOST_PP_FOR_89_I(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
+# define BOOST_PP_FOR_90_I(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
+# define BOOST_PP_FOR_91_I(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
+# define BOOST_PP_FOR_92_I(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
+# define BOOST_PP_FOR_93_I(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
+# define BOOST_PP_FOR_94_I(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
+# define BOOST_PP_FOR_95_I(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
+# define BOOST_PP_FOR_96_I(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
+# define BOOST_PP_FOR_97_I(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
+# define BOOST_PP_FOR_98_I(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
+# define BOOST_PP_FOR_99_I(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
+# define BOOST_PP_FOR_100_I(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
+# define BOOST_PP_FOR_101_I(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
+# define BOOST_PP_FOR_102_I(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
+# define BOOST_PP_FOR_103_I(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
+# define BOOST_PP_FOR_104_I(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
+# define BOOST_PP_FOR_105_I(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
+# define BOOST_PP_FOR_106_I(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
+# define BOOST_PP_FOR_107_I(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
+# define BOOST_PP_FOR_108_I(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
+# define BOOST_PP_FOR_109_I(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
+# define BOOST_PP_FOR_110_I(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
+# define BOOST_PP_FOR_111_I(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
+# define BOOST_PP_FOR_112_I(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
+# define BOOST_PP_FOR_113_I(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
+# define BOOST_PP_FOR_114_I(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
+# define BOOST_PP_FOR_115_I(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
+# define BOOST_PP_FOR_116_I(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
+# define BOOST_PP_FOR_117_I(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
+# define BOOST_PP_FOR_118_I(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
+# define BOOST_PP_FOR_119_I(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
+# define BOOST_PP_FOR_120_I(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
+# define BOOST_PP_FOR_121_I(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
+# define BOOST_PP_FOR_122_I(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
+# define BOOST_PP_FOR_123_I(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
+# define BOOST_PP_FOR_124_I(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
+# define BOOST_PP_FOR_125_I(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
+# define BOOST_PP_FOR_126_I(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
+# define BOOST_PP_FOR_127_I(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
+# define BOOST_PP_FOR_128_I(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
+# define BOOST_PP_FOR_129_I(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
+# define BOOST_PP_FOR_130_I(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
+# define BOOST_PP_FOR_131_I(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
+# define BOOST_PP_FOR_132_I(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
+# define BOOST_PP_FOR_133_I(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
+# define BOOST_PP_FOR_134_I(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
+# define BOOST_PP_FOR_135_I(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
+# define BOOST_PP_FOR_136_I(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
+# define BOOST_PP_FOR_137_I(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
+# define BOOST_PP_FOR_138_I(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
+# define BOOST_PP_FOR_139_I(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
+# define BOOST_PP_FOR_140_I(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
+# define BOOST_PP_FOR_141_I(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
+# define BOOST_PP_FOR_142_I(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
+# define BOOST_PP_FOR_143_I(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
+# define BOOST_PP_FOR_144_I(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
+# define BOOST_PP_FOR_145_I(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
+# define BOOST_PP_FOR_146_I(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
+# define BOOST_PP_FOR_147_I(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
+# define BOOST_PP_FOR_148_I(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
+# define BOOST_PP_FOR_149_I(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
+# define BOOST_PP_FOR_150_I(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
+# define BOOST_PP_FOR_151_I(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
+# define BOOST_PP_FOR_152_I(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
+# define BOOST_PP_FOR_153_I(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
+# define BOOST_PP_FOR_154_I(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
+# define BOOST_PP_FOR_155_I(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
+# define BOOST_PP_FOR_156_I(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
+# define BOOST_PP_FOR_157_I(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
+# define BOOST_PP_FOR_158_I(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
+# define BOOST_PP_FOR_159_I(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
+# define BOOST_PP_FOR_160_I(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
+# define BOOST_PP_FOR_161_I(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
+# define BOOST_PP_FOR_162_I(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
+# define BOOST_PP_FOR_163_I(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
+# define BOOST_PP_FOR_164_I(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
+# define BOOST_PP_FOR_165_I(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
+# define BOOST_PP_FOR_166_I(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
+# define BOOST_PP_FOR_167_I(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
+# define BOOST_PP_FOR_168_I(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
+# define BOOST_PP_FOR_169_I(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
+# define BOOST_PP_FOR_170_I(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
+# define BOOST_PP_FOR_171_I(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
+# define BOOST_PP_FOR_172_I(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
+# define BOOST_PP_FOR_173_I(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
+# define BOOST_PP_FOR_174_I(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
+# define BOOST_PP_FOR_175_I(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
+# define BOOST_PP_FOR_176_I(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
+# define BOOST_PP_FOR_177_I(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
+# define BOOST_PP_FOR_178_I(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
+# define BOOST_PP_FOR_179_I(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
+# define BOOST_PP_FOR_180_I(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
+# define BOOST_PP_FOR_181_I(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
+# define BOOST_PP_FOR_182_I(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
+# define BOOST_PP_FOR_183_I(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
+# define BOOST_PP_FOR_184_I(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
+# define BOOST_PP_FOR_185_I(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
+# define BOOST_PP_FOR_186_I(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
+# define BOOST_PP_FOR_187_I(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
+# define BOOST_PP_FOR_188_I(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
+# define BOOST_PP_FOR_189_I(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
+# define BOOST_PP_FOR_190_I(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
+# define BOOST_PP_FOR_191_I(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
+# define BOOST_PP_FOR_192_I(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
+# define BOOST_PP_FOR_193_I(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
+# define BOOST_PP_FOR_194_I(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
+# define BOOST_PP_FOR_195_I(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
+# define BOOST_PP_FOR_196_I(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
+# define BOOST_PP_FOR_197_I(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
+# define BOOST_PP_FOR_198_I(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
+# define BOOST_PP_FOR_199_I(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
+# define BOOST_PP_FOR_200_I(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
+# define BOOST_PP_FOR_201_I(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
+# define BOOST_PP_FOR_202_I(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
+# define BOOST_PP_FOR_203_I(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
+# define BOOST_PP_FOR_204_I(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
+# define BOOST_PP_FOR_205_I(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
+# define BOOST_PP_FOR_206_I(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
+# define BOOST_PP_FOR_207_I(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
+# define BOOST_PP_FOR_208_I(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
+# define BOOST_PP_FOR_209_I(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
+# define BOOST_PP_FOR_210_I(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
+# define BOOST_PP_FOR_211_I(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
+# define BOOST_PP_FOR_212_I(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
+# define BOOST_PP_FOR_213_I(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
+# define BOOST_PP_FOR_214_I(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
+# define BOOST_PP_FOR_215_I(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
+# define BOOST_PP_FOR_216_I(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
+# define BOOST_PP_FOR_217_I(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
+# define BOOST_PP_FOR_218_I(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
+# define BOOST_PP_FOR_219_I(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
+# define BOOST_PP_FOR_220_I(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
+# define BOOST_PP_FOR_221_I(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
+# define BOOST_PP_FOR_222_I(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
+# define BOOST_PP_FOR_223_I(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
+# define BOOST_PP_FOR_224_I(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
+# define BOOST_PP_FOR_225_I(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
+# define BOOST_PP_FOR_226_I(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
+# define BOOST_PP_FOR_227_I(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
+# define BOOST_PP_FOR_228_I(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
+# define BOOST_PP_FOR_229_I(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
+# define BOOST_PP_FOR_230_I(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
+# define BOOST_PP_FOR_231_I(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
+# define BOOST_PP_FOR_232_I(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
+# define BOOST_PP_FOR_233_I(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
+# define BOOST_PP_FOR_234_I(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
+# define BOOST_PP_FOR_235_I(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
+# define BOOST_PP_FOR_236_I(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
+# define BOOST_PP_FOR_237_I(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
+# define BOOST_PP_FOR_238_I(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
+# define BOOST_PP_FOR_239_I(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
+# define BOOST_PP_FOR_240_I(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
+# define BOOST_PP_FOR_241_I(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
+# define BOOST_PP_FOR_242_I(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
+# define BOOST_PP_FOR_243_I(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
+# define BOOST_PP_FOR_244_I(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
+# define BOOST_PP_FOR_245_I(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
+# define BOOST_PP_FOR_246_I(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
+# define BOOST_PP_FOR_247_I(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
+# define BOOST_PP_FOR_248_I(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
+# define BOOST_PP_FOR_249_I(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
+# define BOOST_PP_FOR_250_I(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
+# define BOOST_PP_FOR_251_I(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
+# define BOOST_PP_FOR_252_I(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
+# define BOOST_PP_FOR_253_I(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
+# define BOOST_PP_FOR_254_I(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
+# define BOOST_PP_FOR_255_I(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
+# define BOOST_PP_FOR_256_I(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/for.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/for.hpp
new file mode 100644
index 0000000..2770f2c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/for.hpp
@@ -0,0 +1,536 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_FOR_HPP
+#
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_FOR_1_C(BOOST_PP_BOOL(p(2, s)), s, p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_FOR_2_C(BOOST_PP_BOOL(p(3, s)), s, p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_FOR_3_C(BOOST_PP_BOOL(p(4, s)), s, p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_FOR_4_C(BOOST_PP_BOOL(p(5, s)), s, p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_FOR_5_C(BOOST_PP_BOOL(p(6, s)), s, p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_FOR_6_C(BOOST_PP_BOOL(p(7, s)), s, p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_FOR_7_C(BOOST_PP_BOOL(p(8, s)), s, p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_FOR_8_C(BOOST_PP_BOOL(p(9, s)), s, p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_FOR_9_C(BOOST_PP_BOOL(p(10, s)), s, p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_FOR_10_C(BOOST_PP_BOOL(p(11, s)), s, p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_FOR_11_C(BOOST_PP_BOOL(p(12, s)), s, p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_FOR_12_C(BOOST_PP_BOOL(p(13, s)), s, p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_FOR_13_C(BOOST_PP_BOOL(p(14, s)), s, p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_FOR_14_C(BOOST_PP_BOOL(p(15, s)), s, p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_FOR_15_C(BOOST_PP_BOOL(p(16, s)), s, p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_FOR_16_C(BOOST_PP_BOOL(p(17, s)), s, p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_FOR_17_C(BOOST_PP_BOOL(p(18, s)), s, p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_FOR_18_C(BOOST_PP_BOOL(p(19, s)), s, p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_FOR_19_C(BOOST_PP_BOOL(p(20, s)), s, p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_FOR_20_C(BOOST_PP_BOOL(p(21, s)), s, p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_FOR_21_C(BOOST_PP_BOOL(p(22, s)), s, p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_FOR_22_C(BOOST_PP_BOOL(p(23, s)), s, p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_FOR_23_C(BOOST_PP_BOOL(p(24, s)), s, p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_FOR_24_C(BOOST_PP_BOOL(p(25, s)), s, p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_FOR_25_C(BOOST_PP_BOOL(p(26, s)), s, p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_FOR_26_C(BOOST_PP_BOOL(p(27, s)), s, p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_FOR_27_C(BOOST_PP_BOOL(p(28, s)), s, p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_FOR_28_C(BOOST_PP_BOOL(p(29, s)), s, p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_FOR_29_C(BOOST_PP_BOOL(p(30, s)), s, p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_FOR_30_C(BOOST_PP_BOOL(p(31, s)), s, p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_FOR_31_C(BOOST_PP_BOOL(p(32, s)), s, p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_FOR_32_C(BOOST_PP_BOOL(p(33, s)), s, p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_FOR_33_C(BOOST_PP_BOOL(p(34, s)), s, p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_FOR_34_C(BOOST_PP_BOOL(p(35, s)), s, p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_FOR_35_C(BOOST_PP_BOOL(p(36, s)), s, p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_FOR_36_C(BOOST_PP_BOOL(p(37, s)), s, p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_FOR_37_C(BOOST_PP_BOOL(p(38, s)), s, p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_FOR_38_C(BOOST_PP_BOOL(p(39, s)), s, p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_FOR_39_C(BOOST_PP_BOOL(p(40, s)), s, p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_FOR_40_C(BOOST_PP_BOOL(p(41, s)), s, p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_FOR_41_C(BOOST_PP_BOOL(p(42, s)), s, p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_FOR_42_C(BOOST_PP_BOOL(p(43, s)), s, p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_FOR_43_C(BOOST_PP_BOOL(p(44, s)), s, p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_FOR_44_C(BOOST_PP_BOOL(p(45, s)), s, p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_FOR_45_C(BOOST_PP_BOOL(p(46, s)), s, p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_FOR_46_C(BOOST_PP_BOOL(p(47, s)), s, p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_FOR_47_C(BOOST_PP_BOOL(p(48, s)), s, p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_FOR_48_C(BOOST_PP_BOOL(p(49, s)), s, p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_FOR_49_C(BOOST_PP_BOOL(p(50, s)), s, p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_FOR_50_C(BOOST_PP_BOOL(p(51, s)), s, p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_FOR_51_C(BOOST_PP_BOOL(p(52, s)), s, p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_FOR_52_C(BOOST_PP_BOOL(p(53, s)), s, p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_FOR_53_C(BOOST_PP_BOOL(p(54, s)), s, p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_FOR_54_C(BOOST_PP_BOOL(p(55, s)), s, p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_FOR_55_C(BOOST_PP_BOOL(p(56, s)), s, p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_FOR_56_C(BOOST_PP_BOOL(p(57, s)), s, p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_FOR_57_C(BOOST_PP_BOOL(p(58, s)), s, p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_FOR_58_C(BOOST_PP_BOOL(p(59, s)), s, p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_FOR_59_C(BOOST_PP_BOOL(p(60, s)), s, p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_FOR_60_C(BOOST_PP_BOOL(p(61, s)), s, p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_FOR_61_C(BOOST_PP_BOOL(p(62, s)), s, p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_FOR_62_C(BOOST_PP_BOOL(p(63, s)), s, p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_FOR_63_C(BOOST_PP_BOOL(p(64, s)), s, p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_FOR_64_C(BOOST_PP_BOOL(p(65, s)), s, p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_FOR_65_C(BOOST_PP_BOOL(p(66, s)), s, p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_FOR_66_C(BOOST_PP_BOOL(p(67, s)), s, p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_FOR_67_C(BOOST_PP_BOOL(p(68, s)), s, p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_FOR_68_C(BOOST_PP_BOOL(p(69, s)), s, p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_FOR_69_C(BOOST_PP_BOOL(p(70, s)), s, p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_FOR_70_C(BOOST_PP_BOOL(p(71, s)), s, p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_FOR_71_C(BOOST_PP_BOOL(p(72, s)), s, p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_FOR_72_C(BOOST_PP_BOOL(p(73, s)), s, p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_FOR_73_C(BOOST_PP_BOOL(p(74, s)), s, p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_FOR_74_C(BOOST_PP_BOOL(p(75, s)), s, p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_FOR_75_C(BOOST_PP_BOOL(p(76, s)), s, p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_FOR_76_C(BOOST_PP_BOOL(p(77, s)), s, p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_FOR_77_C(BOOST_PP_BOOL(p(78, s)), s, p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_FOR_78_C(BOOST_PP_BOOL(p(79, s)), s, p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_FOR_79_C(BOOST_PP_BOOL(p(80, s)), s, p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_FOR_80_C(BOOST_PP_BOOL(p(81, s)), s, p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_FOR_81_C(BOOST_PP_BOOL(p(82, s)), s, p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_FOR_82_C(BOOST_PP_BOOL(p(83, s)), s, p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_FOR_83_C(BOOST_PP_BOOL(p(84, s)), s, p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_FOR_84_C(BOOST_PP_BOOL(p(85, s)), s, p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_FOR_85_C(BOOST_PP_BOOL(p(86, s)), s, p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_FOR_86_C(BOOST_PP_BOOL(p(87, s)), s, p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_FOR_87_C(BOOST_PP_BOOL(p(88, s)), s, p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_FOR_88_C(BOOST_PP_BOOL(p(89, s)), s, p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_FOR_89_C(BOOST_PP_BOOL(p(90, s)), s, p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_FOR_90_C(BOOST_PP_BOOL(p(91, s)), s, p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_FOR_91_C(BOOST_PP_BOOL(p(92, s)), s, p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_FOR_92_C(BOOST_PP_BOOL(p(93, s)), s, p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_FOR_93_C(BOOST_PP_BOOL(p(94, s)), s, p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_FOR_94_C(BOOST_PP_BOOL(p(95, s)), s, p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_FOR_95_C(BOOST_PP_BOOL(p(96, s)), s, p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_FOR_96_C(BOOST_PP_BOOL(p(97, s)), s, p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_FOR_97_C(BOOST_PP_BOOL(p(98, s)), s, p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_FOR_98_C(BOOST_PP_BOOL(p(99, s)), s, p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_FOR_99_C(BOOST_PP_BOOL(p(100, s)), s, p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_FOR_100_C(BOOST_PP_BOOL(p(101, s)), s, p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_FOR_101_C(BOOST_PP_BOOL(p(102, s)), s, p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_FOR_102_C(BOOST_PP_BOOL(p(103, s)), s, p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_FOR_103_C(BOOST_PP_BOOL(p(104, s)), s, p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_FOR_104_C(BOOST_PP_BOOL(p(105, s)), s, p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_FOR_105_C(BOOST_PP_BOOL(p(106, s)), s, p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_FOR_106_C(BOOST_PP_BOOL(p(107, s)), s, p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_FOR_107_C(BOOST_PP_BOOL(p(108, s)), s, p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_FOR_108_C(BOOST_PP_BOOL(p(109, s)), s, p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_FOR_109_C(BOOST_PP_BOOL(p(110, s)), s, p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_FOR_110_C(BOOST_PP_BOOL(p(111, s)), s, p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_FOR_111_C(BOOST_PP_BOOL(p(112, s)), s, p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_FOR_112_C(BOOST_PP_BOOL(p(113, s)), s, p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_FOR_113_C(BOOST_PP_BOOL(p(114, s)), s, p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_FOR_114_C(BOOST_PP_BOOL(p(115, s)), s, p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_FOR_115_C(BOOST_PP_BOOL(p(116, s)), s, p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_FOR_116_C(BOOST_PP_BOOL(p(117, s)), s, p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_FOR_117_C(BOOST_PP_BOOL(p(118, s)), s, p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_FOR_118_C(BOOST_PP_BOOL(p(119, s)), s, p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_FOR_119_C(BOOST_PP_BOOL(p(120, s)), s, p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_FOR_120_C(BOOST_PP_BOOL(p(121, s)), s, p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_FOR_121_C(BOOST_PP_BOOL(p(122, s)), s, p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_FOR_122_C(BOOST_PP_BOOL(p(123, s)), s, p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_FOR_123_C(BOOST_PP_BOOL(p(124, s)), s, p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_FOR_124_C(BOOST_PP_BOOL(p(125, s)), s, p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_FOR_125_C(BOOST_PP_BOOL(p(126, s)), s, p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_FOR_126_C(BOOST_PP_BOOL(p(127, s)), s, p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_FOR_127_C(BOOST_PP_BOOL(p(128, s)), s, p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_FOR_128_C(BOOST_PP_BOOL(p(129, s)), s, p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_FOR_129_C(BOOST_PP_BOOL(p(130, s)), s, p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_FOR_130_C(BOOST_PP_BOOL(p(131, s)), s, p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_FOR_131_C(BOOST_PP_BOOL(p(132, s)), s, p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_FOR_132_C(BOOST_PP_BOOL(p(133, s)), s, p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_FOR_133_C(BOOST_PP_BOOL(p(134, s)), s, p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_FOR_134_C(BOOST_PP_BOOL(p(135, s)), s, p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_FOR_135_C(BOOST_PP_BOOL(p(136, s)), s, p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_FOR_136_C(BOOST_PP_BOOL(p(137, s)), s, p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_FOR_137_C(BOOST_PP_BOOL(p(138, s)), s, p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_FOR_138_C(BOOST_PP_BOOL(p(139, s)), s, p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_FOR_139_C(BOOST_PP_BOOL(p(140, s)), s, p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_FOR_140_C(BOOST_PP_BOOL(p(141, s)), s, p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_FOR_141_C(BOOST_PP_BOOL(p(142, s)), s, p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_FOR_142_C(BOOST_PP_BOOL(p(143, s)), s, p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_FOR_143_C(BOOST_PP_BOOL(p(144, s)), s, p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_FOR_144_C(BOOST_PP_BOOL(p(145, s)), s, p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_FOR_145_C(BOOST_PP_BOOL(p(146, s)), s, p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_FOR_146_C(BOOST_PP_BOOL(p(147, s)), s, p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_FOR_147_C(BOOST_PP_BOOL(p(148, s)), s, p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_FOR_148_C(BOOST_PP_BOOL(p(149, s)), s, p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_FOR_149_C(BOOST_PP_BOOL(p(150, s)), s, p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_FOR_150_C(BOOST_PP_BOOL(p(151, s)), s, p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_FOR_151_C(BOOST_PP_BOOL(p(152, s)), s, p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_FOR_152_C(BOOST_PP_BOOL(p(153, s)), s, p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_FOR_153_C(BOOST_PP_BOOL(p(154, s)), s, p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_FOR_154_C(BOOST_PP_BOOL(p(155, s)), s, p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_FOR_155_C(BOOST_PP_BOOL(p(156, s)), s, p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_FOR_156_C(BOOST_PP_BOOL(p(157, s)), s, p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_FOR_157_C(BOOST_PP_BOOL(p(158, s)), s, p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_FOR_158_C(BOOST_PP_BOOL(p(159, s)), s, p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_FOR_159_C(BOOST_PP_BOOL(p(160, s)), s, p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_FOR_160_C(BOOST_PP_BOOL(p(161, s)), s, p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_FOR_161_C(BOOST_PP_BOOL(p(162, s)), s, p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_FOR_162_C(BOOST_PP_BOOL(p(163, s)), s, p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_FOR_163_C(BOOST_PP_BOOL(p(164, s)), s, p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_FOR_164_C(BOOST_PP_BOOL(p(165, s)), s, p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_FOR_165_C(BOOST_PP_BOOL(p(166, s)), s, p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_FOR_166_C(BOOST_PP_BOOL(p(167, s)), s, p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_FOR_167_C(BOOST_PP_BOOL(p(168, s)), s, p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_FOR_168_C(BOOST_PP_BOOL(p(169, s)), s, p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_FOR_169_C(BOOST_PP_BOOL(p(170, s)), s, p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_FOR_170_C(BOOST_PP_BOOL(p(171, s)), s, p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_FOR_171_C(BOOST_PP_BOOL(p(172, s)), s, p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_FOR_172_C(BOOST_PP_BOOL(p(173, s)), s, p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_FOR_173_C(BOOST_PP_BOOL(p(174, s)), s, p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_FOR_174_C(BOOST_PP_BOOL(p(175, s)), s, p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_FOR_175_C(BOOST_PP_BOOL(p(176, s)), s, p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_FOR_176_C(BOOST_PP_BOOL(p(177, s)), s, p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_FOR_177_C(BOOST_PP_BOOL(p(178, s)), s, p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_FOR_178_C(BOOST_PP_BOOL(p(179, s)), s, p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_FOR_179_C(BOOST_PP_BOOL(p(180, s)), s, p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_FOR_180_C(BOOST_PP_BOOL(p(181, s)), s, p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_FOR_181_C(BOOST_PP_BOOL(p(182, s)), s, p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_FOR_182_C(BOOST_PP_BOOL(p(183, s)), s, p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_FOR_183_C(BOOST_PP_BOOL(p(184, s)), s, p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_FOR_184_C(BOOST_PP_BOOL(p(185, s)), s, p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_FOR_185_C(BOOST_PP_BOOL(p(186, s)), s, p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_FOR_186_C(BOOST_PP_BOOL(p(187, s)), s, p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_FOR_187_C(BOOST_PP_BOOL(p(188, s)), s, p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_FOR_188_C(BOOST_PP_BOOL(p(189, s)), s, p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_FOR_189_C(BOOST_PP_BOOL(p(190, s)), s, p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_FOR_190_C(BOOST_PP_BOOL(p(191, s)), s, p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_FOR_191_C(BOOST_PP_BOOL(p(192, s)), s, p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_FOR_192_C(BOOST_PP_BOOL(p(193, s)), s, p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_FOR_193_C(BOOST_PP_BOOL(p(194, s)), s, p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_FOR_194_C(BOOST_PP_BOOL(p(195, s)), s, p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_FOR_195_C(BOOST_PP_BOOL(p(196, s)), s, p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_FOR_196_C(BOOST_PP_BOOL(p(197, s)), s, p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_FOR_197_C(BOOST_PP_BOOL(p(198, s)), s, p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_FOR_198_C(BOOST_PP_BOOL(p(199, s)), s, p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_FOR_199_C(BOOST_PP_BOOL(p(200, s)), s, p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_FOR_200_C(BOOST_PP_BOOL(p(201, s)), s, p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_FOR_201_C(BOOST_PP_BOOL(p(202, s)), s, p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_FOR_202_C(BOOST_PP_BOOL(p(203, s)), s, p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_FOR_203_C(BOOST_PP_BOOL(p(204, s)), s, p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_FOR_204_C(BOOST_PP_BOOL(p(205, s)), s, p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_FOR_205_C(BOOST_PP_BOOL(p(206, s)), s, p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_FOR_206_C(BOOST_PP_BOOL(p(207, s)), s, p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_FOR_207_C(BOOST_PP_BOOL(p(208, s)), s, p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_FOR_208_C(BOOST_PP_BOOL(p(209, s)), s, p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_FOR_209_C(BOOST_PP_BOOL(p(210, s)), s, p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_FOR_210_C(BOOST_PP_BOOL(p(211, s)), s, p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_FOR_211_C(BOOST_PP_BOOL(p(212, s)), s, p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_FOR_212_C(BOOST_PP_BOOL(p(213, s)), s, p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_FOR_213_C(BOOST_PP_BOOL(p(214, s)), s, p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_FOR_214_C(BOOST_PP_BOOL(p(215, s)), s, p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_FOR_215_C(BOOST_PP_BOOL(p(216, s)), s, p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_FOR_216_C(BOOST_PP_BOOL(p(217, s)), s, p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_FOR_217_C(BOOST_PP_BOOL(p(218, s)), s, p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_FOR_218_C(BOOST_PP_BOOL(p(219, s)), s, p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_FOR_219_C(BOOST_PP_BOOL(p(220, s)), s, p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_FOR_220_C(BOOST_PP_BOOL(p(221, s)), s, p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_FOR_221_C(BOOST_PP_BOOL(p(222, s)), s, p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_FOR_222_C(BOOST_PP_BOOL(p(223, s)), s, p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_FOR_223_C(BOOST_PP_BOOL(p(224, s)), s, p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_FOR_224_C(BOOST_PP_BOOL(p(225, s)), s, p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_FOR_225_C(BOOST_PP_BOOL(p(226, s)), s, p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_FOR_226_C(BOOST_PP_BOOL(p(227, s)), s, p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_FOR_227_C(BOOST_PP_BOOL(p(228, s)), s, p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_FOR_228_C(BOOST_PP_BOOL(p(229, s)), s, p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_FOR_229_C(BOOST_PP_BOOL(p(230, s)), s, p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_FOR_230_C(BOOST_PP_BOOL(p(231, s)), s, p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_FOR_231_C(BOOST_PP_BOOL(p(232, s)), s, p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_FOR_232_C(BOOST_PP_BOOL(p(233, s)), s, p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_FOR_233_C(BOOST_PP_BOOL(p(234, s)), s, p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_FOR_234_C(BOOST_PP_BOOL(p(235, s)), s, p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_FOR_235_C(BOOST_PP_BOOL(p(236, s)), s, p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_FOR_236_C(BOOST_PP_BOOL(p(237, s)), s, p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_FOR_237_C(BOOST_PP_BOOL(p(238, s)), s, p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_FOR_238_C(BOOST_PP_BOOL(p(239, s)), s, p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_FOR_239_C(BOOST_PP_BOOL(p(240, s)), s, p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_FOR_240_C(BOOST_PP_BOOL(p(241, s)), s, p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_FOR_241_C(BOOST_PP_BOOL(p(242, s)), s, p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_FOR_242_C(BOOST_PP_BOOL(p(243, s)), s, p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_FOR_243_C(BOOST_PP_BOOL(p(244, s)), s, p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_FOR_244_C(BOOST_PP_BOOL(p(245, s)), s, p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_FOR_245_C(BOOST_PP_BOOL(p(246, s)), s, p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_FOR_246_C(BOOST_PP_BOOL(p(247, s)), s, p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_FOR_247_C(BOOST_PP_BOOL(p(248, s)), s, p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_FOR_248_C(BOOST_PP_BOOL(p(249, s)), s, p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_FOR_249_C(BOOST_PP_BOOL(p(250, s)), s, p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_FOR_250_C(BOOST_PP_BOOL(p(251, s)), s, p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_FOR_251_C(BOOST_PP_BOOL(p(252, s)), s, p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_FOR_252_C(BOOST_PP_BOOL(p(253, s)), s, p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_FOR_253_C(BOOST_PP_BOOL(p(254, s)), s, p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_FOR_254_C(BOOST_PP_BOOL(p(255, s)), s, p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_FOR_255_C(BOOST_PP_BOOL(p(256, s)), s, p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_FOR_256_C(BOOST_PP_BOOL(p(257, s)), s, p, o, m)
+#
+# define BOOST_PP_FOR_1_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IIF(c, BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(2, s), p, o, m)
+# define BOOST_PP_FOR_2_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IIF(c, BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(3, s), p, o, m)
+# define BOOST_PP_FOR_3_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IIF(c, BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(4, s), p, o, m)
+# define BOOST_PP_FOR_4_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IIF(c, BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(5, s), p, o, m)
+# define BOOST_PP_FOR_5_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IIF(c, BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(6, s), p, o, m)
+# define BOOST_PP_FOR_6_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IIF(c, BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(7, s), p, o, m)
+# define BOOST_PP_FOR_7_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IIF(c, BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(8, s), p, o, m)
+# define BOOST_PP_FOR_8_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IIF(c, BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(9, s), p, o, m)
+# define BOOST_PP_FOR_9_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IIF(c, BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(10, s), p, o, m)
+# define BOOST_PP_FOR_10_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IIF(c, BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(11, s), p, o, m)
+# define BOOST_PP_FOR_11_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IIF(c, BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(12, s), p, o, m)
+# define BOOST_PP_FOR_12_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IIF(c, BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(13, s), p, o, m)
+# define BOOST_PP_FOR_13_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IIF(c, BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(14, s), p, o, m)
+# define BOOST_PP_FOR_14_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IIF(c, BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(15, s), p, o, m)
+# define BOOST_PP_FOR_15_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IIF(c, BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(16, s), p, o, m)
+# define BOOST_PP_FOR_16_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IIF(c, BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(17, s), p, o, m)
+# define BOOST_PP_FOR_17_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IIF(c, BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(18, s), p, o, m)
+# define BOOST_PP_FOR_18_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IIF(c, BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(19, s), p, o, m)
+# define BOOST_PP_FOR_19_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IIF(c, BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(20, s), p, o, m)
+# define BOOST_PP_FOR_20_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IIF(c, BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(21, s), p, o, m)
+# define BOOST_PP_FOR_21_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IIF(c, BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(22, s), p, o, m)
+# define BOOST_PP_FOR_22_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IIF(c, BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(23, s), p, o, m)
+# define BOOST_PP_FOR_23_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IIF(c, BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(24, s), p, o, m)
+# define BOOST_PP_FOR_24_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IIF(c, BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(25, s), p, o, m)
+# define BOOST_PP_FOR_25_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IIF(c, BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(26, s), p, o, m)
+# define BOOST_PP_FOR_26_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IIF(c, BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(27, s), p, o, m)
+# define BOOST_PP_FOR_27_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IIF(c, BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(28, s), p, o, m)
+# define BOOST_PP_FOR_28_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IIF(c, BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(29, s), p, o, m)
+# define BOOST_PP_FOR_29_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IIF(c, BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(30, s), p, o, m)
+# define BOOST_PP_FOR_30_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IIF(c, BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(31, s), p, o, m)
+# define BOOST_PP_FOR_31_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IIF(c, BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(32, s), p, o, m)
+# define BOOST_PP_FOR_32_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IIF(c, BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(33, s), p, o, m)
+# define BOOST_PP_FOR_33_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IIF(c, BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(34, s), p, o, m)
+# define BOOST_PP_FOR_34_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IIF(c, BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(35, s), p, o, m)
+# define BOOST_PP_FOR_35_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IIF(c, BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(36, s), p, o, m)
+# define BOOST_PP_FOR_36_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IIF(c, BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(37, s), p, o, m)
+# define BOOST_PP_FOR_37_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IIF(c, BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(38, s), p, o, m)
+# define BOOST_PP_FOR_38_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IIF(c, BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(39, s), p, o, m)
+# define BOOST_PP_FOR_39_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IIF(c, BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(40, s), p, o, m)
+# define BOOST_PP_FOR_40_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IIF(c, BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(41, s), p, o, m)
+# define BOOST_PP_FOR_41_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IIF(c, BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(42, s), p, o, m)
+# define BOOST_PP_FOR_42_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IIF(c, BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(43, s), p, o, m)
+# define BOOST_PP_FOR_43_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IIF(c, BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(44, s), p, o, m)
+# define BOOST_PP_FOR_44_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IIF(c, BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(45, s), p, o, m)
+# define BOOST_PP_FOR_45_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IIF(c, BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(46, s), p, o, m)
+# define BOOST_PP_FOR_46_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IIF(c, BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(47, s), p, o, m)
+# define BOOST_PP_FOR_47_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IIF(c, BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(48, s), p, o, m)
+# define BOOST_PP_FOR_48_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IIF(c, BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(49, s), p, o, m)
+# define BOOST_PP_FOR_49_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IIF(c, BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(50, s), p, o, m)
+# define BOOST_PP_FOR_50_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IIF(c, BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(51, s), p, o, m)
+# define BOOST_PP_FOR_51_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IIF(c, BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(52, s), p, o, m)
+# define BOOST_PP_FOR_52_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IIF(c, BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(53, s), p, o, m)
+# define BOOST_PP_FOR_53_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IIF(c, BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(54, s), p, o, m)
+# define BOOST_PP_FOR_54_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IIF(c, BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(55, s), p, o, m)
+# define BOOST_PP_FOR_55_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IIF(c, BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(56, s), p, o, m)
+# define BOOST_PP_FOR_56_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IIF(c, BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(57, s), p, o, m)
+# define BOOST_PP_FOR_57_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IIF(c, BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(58, s), p, o, m)
+# define BOOST_PP_FOR_58_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IIF(c, BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(59, s), p, o, m)
+# define BOOST_PP_FOR_59_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IIF(c, BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(60, s), p, o, m)
+# define BOOST_PP_FOR_60_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IIF(c, BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(61, s), p, o, m)
+# define BOOST_PP_FOR_61_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IIF(c, BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(62, s), p, o, m)
+# define BOOST_PP_FOR_62_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IIF(c, BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(63, s), p, o, m)
+# define BOOST_PP_FOR_63_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IIF(c, BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(64, s), p, o, m)
+# define BOOST_PP_FOR_64_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IIF(c, BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(65, s), p, o, m)
+# define BOOST_PP_FOR_65_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IIF(c, BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(66, s), p, o, m)
+# define BOOST_PP_FOR_66_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IIF(c, BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(67, s), p, o, m)
+# define BOOST_PP_FOR_67_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IIF(c, BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(68, s), p, o, m)
+# define BOOST_PP_FOR_68_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IIF(c, BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(69, s), p, o, m)
+# define BOOST_PP_FOR_69_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IIF(c, BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(70, s), p, o, m)
+# define BOOST_PP_FOR_70_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IIF(c, BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(71, s), p, o, m)
+# define BOOST_PP_FOR_71_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IIF(c, BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(72, s), p, o, m)
+# define BOOST_PP_FOR_72_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IIF(c, BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(73, s), p, o, m)
+# define BOOST_PP_FOR_73_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IIF(c, BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(74, s), p, o, m)
+# define BOOST_PP_FOR_74_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IIF(c, BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(75, s), p, o, m)
+# define BOOST_PP_FOR_75_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IIF(c, BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(76, s), p, o, m)
+# define BOOST_PP_FOR_76_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IIF(c, BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(77, s), p, o, m)
+# define BOOST_PP_FOR_77_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IIF(c, BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(78, s), p, o, m)
+# define BOOST_PP_FOR_78_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IIF(c, BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(79, s), p, o, m)
+# define BOOST_PP_FOR_79_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IIF(c, BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(80, s), p, o, m)
+# define BOOST_PP_FOR_80_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IIF(c, BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(81, s), p, o, m)
+# define BOOST_PP_FOR_81_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IIF(c, BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(82, s), p, o, m)
+# define BOOST_PP_FOR_82_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IIF(c, BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(83, s), p, o, m)
+# define BOOST_PP_FOR_83_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IIF(c, BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(84, s), p, o, m)
+# define BOOST_PP_FOR_84_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IIF(c, BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(85, s), p, o, m)
+# define BOOST_PP_FOR_85_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IIF(c, BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(86, s), p, o, m)
+# define BOOST_PP_FOR_86_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IIF(c, BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(87, s), p, o, m)
+# define BOOST_PP_FOR_87_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IIF(c, BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(88, s), p, o, m)
+# define BOOST_PP_FOR_88_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IIF(c, BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(89, s), p, o, m)
+# define BOOST_PP_FOR_89_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IIF(c, BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(90, s), p, o, m)
+# define BOOST_PP_FOR_90_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IIF(c, BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(91, s), p, o, m)
+# define BOOST_PP_FOR_91_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IIF(c, BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(92, s), p, o, m)
+# define BOOST_PP_FOR_92_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IIF(c, BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(93, s), p, o, m)
+# define BOOST_PP_FOR_93_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IIF(c, BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(94, s), p, o, m)
+# define BOOST_PP_FOR_94_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IIF(c, BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(95, s), p, o, m)
+# define BOOST_PP_FOR_95_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IIF(c, BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(96, s), p, o, m)
+# define BOOST_PP_FOR_96_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IIF(c, BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(97, s), p, o, m)
+# define BOOST_PP_FOR_97_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IIF(c, BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(98, s), p, o, m)
+# define BOOST_PP_FOR_98_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IIF(c, BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(99, s), p, o, m)
+# define BOOST_PP_FOR_99_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IIF(c, BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(100, s), p, o, m)
+# define BOOST_PP_FOR_100_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IIF(c, BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(101, s), p, o, m)
+# define BOOST_PP_FOR_101_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IIF(c, BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(102, s), p, o, m)
+# define BOOST_PP_FOR_102_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IIF(c, BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(103, s), p, o, m)
+# define BOOST_PP_FOR_103_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IIF(c, BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(104, s), p, o, m)
+# define BOOST_PP_FOR_104_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IIF(c, BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(105, s), p, o, m)
+# define BOOST_PP_FOR_105_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IIF(c, BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(106, s), p, o, m)
+# define BOOST_PP_FOR_106_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IIF(c, BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(107, s), p, o, m)
+# define BOOST_PP_FOR_107_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IIF(c, BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(108, s), p, o, m)
+# define BOOST_PP_FOR_108_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IIF(c, BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(109, s), p, o, m)
+# define BOOST_PP_FOR_109_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IIF(c, BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(110, s), p, o, m)
+# define BOOST_PP_FOR_110_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IIF(c, BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(111, s), p, o, m)
+# define BOOST_PP_FOR_111_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IIF(c, BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(112, s), p, o, m)
+# define BOOST_PP_FOR_112_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IIF(c, BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(113, s), p, o, m)
+# define BOOST_PP_FOR_113_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IIF(c, BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(114, s), p, o, m)
+# define BOOST_PP_FOR_114_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IIF(c, BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(115, s), p, o, m)
+# define BOOST_PP_FOR_115_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IIF(c, BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(116, s), p, o, m)
+# define BOOST_PP_FOR_116_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IIF(c, BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(117, s), p, o, m)
+# define BOOST_PP_FOR_117_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IIF(c, BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(118, s), p, o, m)
+# define BOOST_PP_FOR_118_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IIF(c, BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(119, s), p, o, m)
+# define BOOST_PP_FOR_119_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IIF(c, BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(120, s), p, o, m)
+# define BOOST_PP_FOR_120_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IIF(c, BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(121, s), p, o, m)
+# define BOOST_PP_FOR_121_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IIF(c, BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(122, s), p, o, m)
+# define BOOST_PP_FOR_122_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IIF(c, BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(123, s), p, o, m)
+# define BOOST_PP_FOR_123_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IIF(c, BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(124, s), p, o, m)
+# define BOOST_PP_FOR_124_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IIF(c, BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(125, s), p, o, m)
+# define BOOST_PP_FOR_125_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IIF(c, BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(126, s), p, o, m)
+# define BOOST_PP_FOR_126_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IIF(c, BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(127, s), p, o, m)
+# define BOOST_PP_FOR_127_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IIF(c, BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(128, s), p, o, m)
+# define BOOST_PP_FOR_128_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IIF(c, BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(129, s), p, o, m)
+# define BOOST_PP_FOR_129_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IIF(c, BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(130, s), p, o, m)
+# define BOOST_PP_FOR_130_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IIF(c, BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(131, s), p, o, m)
+# define BOOST_PP_FOR_131_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IIF(c, BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(132, s), p, o, m)
+# define BOOST_PP_FOR_132_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IIF(c, BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(133, s), p, o, m)
+# define BOOST_PP_FOR_133_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IIF(c, BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(134, s), p, o, m)
+# define BOOST_PP_FOR_134_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IIF(c, BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(135, s), p, o, m)
+# define BOOST_PP_FOR_135_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IIF(c, BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(136, s), p, o, m)
+# define BOOST_PP_FOR_136_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IIF(c, BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(137, s), p, o, m)
+# define BOOST_PP_FOR_137_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IIF(c, BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(138, s), p, o, m)
+# define BOOST_PP_FOR_138_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IIF(c, BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(139, s), p, o, m)
+# define BOOST_PP_FOR_139_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IIF(c, BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(140, s), p, o, m)
+# define BOOST_PP_FOR_140_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IIF(c, BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(141, s), p, o, m)
+# define BOOST_PP_FOR_141_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IIF(c, BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(142, s), p, o, m)
+# define BOOST_PP_FOR_142_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IIF(c, BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(143, s), p, o, m)
+# define BOOST_PP_FOR_143_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IIF(c, BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(144, s), p, o, m)
+# define BOOST_PP_FOR_144_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IIF(c, BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(145, s), p, o, m)
+# define BOOST_PP_FOR_145_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IIF(c, BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(146, s), p, o, m)
+# define BOOST_PP_FOR_146_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IIF(c, BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(147, s), p, o, m)
+# define BOOST_PP_FOR_147_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IIF(c, BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(148, s), p, o, m)
+# define BOOST_PP_FOR_148_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IIF(c, BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(149, s), p, o, m)
+# define BOOST_PP_FOR_149_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IIF(c, BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(150, s), p, o, m)
+# define BOOST_PP_FOR_150_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IIF(c, BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(151, s), p, o, m)
+# define BOOST_PP_FOR_151_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IIF(c, BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(152, s), p, o, m)
+# define BOOST_PP_FOR_152_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IIF(c, BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(153, s), p, o, m)
+# define BOOST_PP_FOR_153_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IIF(c, BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(154, s), p, o, m)
+# define BOOST_PP_FOR_154_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IIF(c, BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(155, s), p, o, m)
+# define BOOST_PP_FOR_155_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IIF(c, BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(156, s), p, o, m)
+# define BOOST_PP_FOR_156_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IIF(c, BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(157, s), p, o, m)
+# define BOOST_PP_FOR_157_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IIF(c, BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(158, s), p, o, m)
+# define BOOST_PP_FOR_158_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IIF(c, BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(159, s), p, o, m)
+# define BOOST_PP_FOR_159_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IIF(c, BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(160, s), p, o, m)
+# define BOOST_PP_FOR_160_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IIF(c, BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(161, s), p, o, m)
+# define BOOST_PP_FOR_161_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IIF(c, BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(162, s), p, o, m)
+# define BOOST_PP_FOR_162_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IIF(c, BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(163, s), p, o, m)
+# define BOOST_PP_FOR_163_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IIF(c, BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(164, s), p, o, m)
+# define BOOST_PP_FOR_164_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IIF(c, BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(165, s), p, o, m)
+# define BOOST_PP_FOR_165_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IIF(c, BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(166, s), p, o, m)
+# define BOOST_PP_FOR_166_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IIF(c, BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(167, s), p, o, m)
+# define BOOST_PP_FOR_167_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IIF(c, BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(168, s), p, o, m)
+# define BOOST_PP_FOR_168_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IIF(c, BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(169, s), p, o, m)
+# define BOOST_PP_FOR_169_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IIF(c, BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(170, s), p, o, m)
+# define BOOST_PP_FOR_170_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IIF(c, BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(171, s), p, o, m)
+# define BOOST_PP_FOR_171_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IIF(c, BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(172, s), p, o, m)
+# define BOOST_PP_FOR_172_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IIF(c, BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(173, s), p, o, m)
+# define BOOST_PP_FOR_173_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IIF(c, BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(174, s), p, o, m)
+# define BOOST_PP_FOR_174_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IIF(c, BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(175, s), p, o, m)
+# define BOOST_PP_FOR_175_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IIF(c, BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(176, s), p, o, m)
+# define BOOST_PP_FOR_176_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IIF(c, BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(177, s), p, o, m)
+# define BOOST_PP_FOR_177_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IIF(c, BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(178, s), p, o, m)
+# define BOOST_PP_FOR_178_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IIF(c, BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(179, s), p, o, m)
+# define BOOST_PP_FOR_179_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IIF(c, BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(180, s), p, o, m)
+# define BOOST_PP_FOR_180_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IIF(c, BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(181, s), p, o, m)
+# define BOOST_PP_FOR_181_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IIF(c, BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(182, s), p, o, m)
+# define BOOST_PP_FOR_182_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IIF(c, BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(183, s), p, o, m)
+# define BOOST_PP_FOR_183_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IIF(c, BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(184, s), p, o, m)
+# define BOOST_PP_FOR_184_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IIF(c, BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(185, s), p, o, m)
+# define BOOST_PP_FOR_185_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IIF(c, BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(186, s), p, o, m)
+# define BOOST_PP_FOR_186_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IIF(c, BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(187, s), p, o, m)
+# define BOOST_PP_FOR_187_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IIF(c, BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(188, s), p, o, m)
+# define BOOST_PP_FOR_188_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IIF(c, BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(189, s), p, o, m)
+# define BOOST_PP_FOR_189_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IIF(c, BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(190, s), p, o, m)
+# define BOOST_PP_FOR_190_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IIF(c, BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(191, s), p, o, m)
+# define BOOST_PP_FOR_191_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IIF(c, BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(192, s), p, o, m)
+# define BOOST_PP_FOR_192_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IIF(c, BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(193, s), p, o, m)
+# define BOOST_PP_FOR_193_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IIF(c, BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(194, s), p, o, m)
+# define BOOST_PP_FOR_194_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IIF(c, BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(195, s), p, o, m)
+# define BOOST_PP_FOR_195_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IIF(c, BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(196, s), p, o, m)
+# define BOOST_PP_FOR_196_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IIF(c, BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(197, s), p, o, m)
+# define BOOST_PP_FOR_197_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IIF(c, BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(198, s), p, o, m)
+# define BOOST_PP_FOR_198_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IIF(c, BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(199, s), p, o, m)
+# define BOOST_PP_FOR_199_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IIF(c, BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(200, s), p, o, m)
+# define BOOST_PP_FOR_200_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IIF(c, BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(201, s), p, o, m)
+# define BOOST_PP_FOR_201_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IIF(c, BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(202, s), p, o, m)
+# define BOOST_PP_FOR_202_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IIF(c, BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(203, s), p, o, m)
+# define BOOST_PP_FOR_203_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IIF(c, BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(204, s), p, o, m)
+# define BOOST_PP_FOR_204_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IIF(c, BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(205, s), p, o, m)
+# define BOOST_PP_FOR_205_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IIF(c, BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(206, s), p, o, m)
+# define BOOST_PP_FOR_206_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IIF(c, BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(207, s), p, o, m)
+# define BOOST_PP_FOR_207_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IIF(c, BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(208, s), p, o, m)
+# define BOOST_PP_FOR_208_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IIF(c, BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(209, s), p, o, m)
+# define BOOST_PP_FOR_209_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IIF(c, BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(210, s), p, o, m)
+# define BOOST_PP_FOR_210_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IIF(c, BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(211, s), p, o, m)
+# define BOOST_PP_FOR_211_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IIF(c, BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(212, s), p, o, m)
+# define BOOST_PP_FOR_212_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IIF(c, BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(213, s), p, o, m)
+# define BOOST_PP_FOR_213_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IIF(c, BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(214, s), p, o, m)
+# define BOOST_PP_FOR_214_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IIF(c, BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(215, s), p, o, m)
+# define BOOST_PP_FOR_215_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IIF(c, BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(216, s), p, o, m)
+# define BOOST_PP_FOR_216_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IIF(c, BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(217, s), p, o, m)
+# define BOOST_PP_FOR_217_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IIF(c, BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(218, s), p, o, m)
+# define BOOST_PP_FOR_218_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IIF(c, BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(219, s), p, o, m)
+# define BOOST_PP_FOR_219_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IIF(c, BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(220, s), p, o, m)
+# define BOOST_PP_FOR_220_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IIF(c, BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(221, s), p, o, m)
+# define BOOST_PP_FOR_221_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IIF(c, BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(222, s), p, o, m)
+# define BOOST_PP_FOR_222_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IIF(c, BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(223, s), p, o, m)
+# define BOOST_PP_FOR_223_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IIF(c, BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(224, s), p, o, m)
+# define BOOST_PP_FOR_224_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IIF(c, BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(225, s), p, o, m)
+# define BOOST_PP_FOR_225_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IIF(c, BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(226, s), p, o, m)
+# define BOOST_PP_FOR_226_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IIF(c, BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(227, s), p, o, m)
+# define BOOST_PP_FOR_227_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IIF(c, BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(228, s), p, o, m)
+# define BOOST_PP_FOR_228_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IIF(c, BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(229, s), p, o, m)
+# define BOOST_PP_FOR_229_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IIF(c, BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(230, s), p, o, m)
+# define BOOST_PP_FOR_230_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IIF(c, BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(231, s), p, o, m)
+# define BOOST_PP_FOR_231_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IIF(c, BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(232, s), p, o, m)
+# define BOOST_PP_FOR_232_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IIF(c, BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(233, s), p, o, m)
+# define BOOST_PP_FOR_233_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IIF(c, BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(234, s), p, o, m)
+# define BOOST_PP_FOR_234_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IIF(c, BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(235, s), p, o, m)
+# define BOOST_PP_FOR_235_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IIF(c, BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(236, s), p, o, m)
+# define BOOST_PP_FOR_236_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IIF(c, BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(237, s), p, o, m)
+# define BOOST_PP_FOR_237_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IIF(c, BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(238, s), p, o, m)
+# define BOOST_PP_FOR_238_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IIF(c, BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(239, s), p, o, m)
+# define BOOST_PP_FOR_239_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IIF(c, BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(240, s), p, o, m)
+# define BOOST_PP_FOR_240_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IIF(c, BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(241, s), p, o, m)
+# define BOOST_PP_FOR_241_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IIF(c, BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(242, s), p, o, m)
+# define BOOST_PP_FOR_242_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IIF(c, BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(243, s), p, o, m)
+# define BOOST_PP_FOR_243_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IIF(c, BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(244, s), p, o, m)
+# define BOOST_PP_FOR_244_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IIF(c, BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(245, s), p, o, m)
+# define BOOST_PP_FOR_245_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IIF(c, BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(246, s), p, o, m)
+# define BOOST_PP_FOR_246_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IIF(c, BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(247, s), p, o, m)
+# define BOOST_PP_FOR_247_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IIF(c, BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(248, s), p, o, m)
+# define BOOST_PP_FOR_248_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IIF(c, BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(249, s), p, o, m)
+# define BOOST_PP_FOR_249_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IIF(c, BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(250, s), p, o, m)
+# define BOOST_PP_FOR_250_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IIF(c, BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(251, s), p, o, m)
+# define BOOST_PP_FOR_251_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IIF(c, BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(252, s), p, o, m)
+# define BOOST_PP_FOR_252_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IIF(c, BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(253, s), p, o, m)
+# define BOOST_PP_FOR_253_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IIF(c, BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(254, s), p, o, m)
+# define BOOST_PP_FOR_254_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IIF(c, BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(255, s), p, o, m)
+# define BOOST_PP_FOR_255_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IIF(c, BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(256, s), p, o, m)
+# define BOOST_PP_FOR_256_C(c, s, p, o, m) BOOST_PP_IIF(c, m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IIF(c, BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(BOOST_PP_EXPR_IIF(c, o)(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/msvc/for.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/msvc/for.hpp
new file mode 100644
index 0000000..35c1996
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/detail/msvc/for.hpp
@@ -0,0 +1,277 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_DETAIL_MSVC_FOR_HPP
+#
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# define BOOST_PP_FOR_1(s, p, o, m) BOOST_PP_IF(p(2, s), m, BOOST_PP_TUPLE_EAT_2)(2, s) BOOST_PP_IF(p(2, s), BOOST_PP_FOR_2, BOOST_PP_TUPLE_EAT_4)(o(2, s), p, o, m)
+# define BOOST_PP_FOR_2(s, p, o, m) BOOST_PP_IF(p(3, s), m, BOOST_PP_TUPLE_EAT_2)(3, s) BOOST_PP_IF(p(3, s), BOOST_PP_FOR_3, BOOST_PP_TUPLE_EAT_4)(o(3, s), p, o, m)
+# define BOOST_PP_FOR_3(s, p, o, m) BOOST_PP_IF(p(4, s), m, BOOST_PP_TUPLE_EAT_2)(4, s) BOOST_PP_IF(p(4, s), BOOST_PP_FOR_4, BOOST_PP_TUPLE_EAT_4)(o(4, s), p, o, m)
+# define BOOST_PP_FOR_4(s, p, o, m) BOOST_PP_IF(p(5, s), m, BOOST_PP_TUPLE_EAT_2)(5, s) BOOST_PP_IF(p(5, s), BOOST_PP_FOR_5, BOOST_PP_TUPLE_EAT_4)(o(5, s), p, o, m)
+# define BOOST_PP_FOR_5(s, p, o, m) BOOST_PP_IF(p(6, s), m, BOOST_PP_TUPLE_EAT_2)(6, s) BOOST_PP_IF(p(6, s), BOOST_PP_FOR_6, BOOST_PP_TUPLE_EAT_4)(o(6, s), p, o, m)
+# define BOOST_PP_FOR_6(s, p, o, m) BOOST_PP_IF(p(7, s), m, BOOST_PP_TUPLE_EAT_2)(7, s) BOOST_PP_IF(p(7, s), BOOST_PP_FOR_7, BOOST_PP_TUPLE_EAT_4)(o(7, s), p, o, m)
+# define BOOST_PP_FOR_7(s, p, o, m) BOOST_PP_IF(p(8, s), m, BOOST_PP_TUPLE_EAT_2)(8, s) BOOST_PP_IF(p(8, s), BOOST_PP_FOR_8, BOOST_PP_TUPLE_EAT_4)(o(8, s), p, o, m)
+# define BOOST_PP_FOR_8(s, p, o, m) BOOST_PP_IF(p(9, s), m, BOOST_PP_TUPLE_EAT_2)(9, s) BOOST_PP_IF(p(9, s), BOOST_PP_FOR_9, BOOST_PP_TUPLE_EAT_4)(o(9, s), p, o, m)
+# define BOOST_PP_FOR_9(s, p, o, m) BOOST_PP_IF(p(10, s), m, BOOST_PP_TUPLE_EAT_2)(10, s) BOOST_PP_IF(p(10, s), BOOST_PP_FOR_10, BOOST_PP_TUPLE_EAT_4)(o(10, s), p, o, m)
+# define BOOST_PP_FOR_10(s, p, o, m) BOOST_PP_IF(p(11, s), m, BOOST_PP_TUPLE_EAT_2)(11, s) BOOST_PP_IF(p(11, s), BOOST_PP_FOR_11, BOOST_PP_TUPLE_EAT_4)(o(11, s), p, o, m)
+# define BOOST_PP_FOR_11(s, p, o, m) BOOST_PP_IF(p(12, s), m, BOOST_PP_TUPLE_EAT_2)(12, s) BOOST_PP_IF(p(12, s), BOOST_PP_FOR_12, BOOST_PP_TUPLE_EAT_4)(o(12, s), p, o, m)
+# define BOOST_PP_FOR_12(s, p, o, m) BOOST_PP_IF(p(13, s), m, BOOST_PP_TUPLE_EAT_2)(13, s) BOOST_PP_IF(p(13, s), BOOST_PP_FOR_13, BOOST_PP_TUPLE_EAT_4)(o(13, s), p, o, m)
+# define BOOST_PP_FOR_13(s, p, o, m) BOOST_PP_IF(p(14, s), m, BOOST_PP_TUPLE_EAT_2)(14, s) BOOST_PP_IF(p(14, s), BOOST_PP_FOR_14, BOOST_PP_TUPLE_EAT_4)(o(14, s), p, o, m)
+# define BOOST_PP_FOR_14(s, p, o, m) BOOST_PP_IF(p(15, s), m, BOOST_PP_TUPLE_EAT_2)(15, s) BOOST_PP_IF(p(15, s), BOOST_PP_FOR_15, BOOST_PP_TUPLE_EAT_4)(o(15, s), p, o, m)
+# define BOOST_PP_FOR_15(s, p, o, m) BOOST_PP_IF(p(16, s), m, BOOST_PP_TUPLE_EAT_2)(16, s) BOOST_PP_IF(p(16, s), BOOST_PP_FOR_16, BOOST_PP_TUPLE_EAT_4)(o(16, s), p, o, m)
+# define BOOST_PP_FOR_16(s, p, o, m) BOOST_PP_IF(p(17, s), m, BOOST_PP_TUPLE_EAT_2)(17, s) BOOST_PP_IF(p(17, s), BOOST_PP_FOR_17, BOOST_PP_TUPLE_EAT_4)(o(17, s), p, o, m)
+# define BOOST_PP_FOR_17(s, p, o, m) BOOST_PP_IF(p(18, s), m, BOOST_PP_TUPLE_EAT_2)(18, s) BOOST_PP_IF(p(18, s), BOOST_PP_FOR_18, BOOST_PP_TUPLE_EAT_4)(o(18, s), p, o, m)
+# define BOOST_PP_FOR_18(s, p, o, m) BOOST_PP_IF(p(19, s), m, BOOST_PP_TUPLE_EAT_2)(19, s) BOOST_PP_IF(p(19, s), BOOST_PP_FOR_19, BOOST_PP_TUPLE_EAT_4)(o(19, s), p, o, m)
+# define BOOST_PP_FOR_19(s, p, o, m) BOOST_PP_IF(p(20, s), m, BOOST_PP_TUPLE_EAT_2)(20, s) BOOST_PP_IF(p(20, s), BOOST_PP_FOR_20, BOOST_PP_TUPLE_EAT_4)(o(20, s), p, o, m)
+# define BOOST_PP_FOR_20(s, p, o, m) BOOST_PP_IF(p(21, s), m, BOOST_PP_TUPLE_EAT_2)(21, s) BOOST_PP_IF(p(21, s), BOOST_PP_FOR_21, BOOST_PP_TUPLE_EAT_4)(o(21, s), p, o, m)
+# define BOOST_PP_FOR_21(s, p, o, m) BOOST_PP_IF(p(22, s), m, BOOST_PP_TUPLE_EAT_2)(22, s) BOOST_PP_IF(p(22, s), BOOST_PP_FOR_22, BOOST_PP_TUPLE_EAT_4)(o(22, s), p, o, m)
+# define BOOST_PP_FOR_22(s, p, o, m) BOOST_PP_IF(p(23, s), m, BOOST_PP_TUPLE_EAT_2)(23, s) BOOST_PP_IF(p(23, s), BOOST_PP_FOR_23, BOOST_PP_TUPLE_EAT_4)(o(23, s), p, o, m)
+# define BOOST_PP_FOR_23(s, p, o, m) BOOST_PP_IF(p(24, s), m, BOOST_PP_TUPLE_EAT_2)(24, s) BOOST_PP_IF(p(24, s), BOOST_PP_FOR_24, BOOST_PP_TUPLE_EAT_4)(o(24, s), p, o, m)
+# define BOOST_PP_FOR_24(s, p, o, m) BOOST_PP_IF(p(25, s), m, BOOST_PP_TUPLE_EAT_2)(25, s) BOOST_PP_IF(p(25, s), BOOST_PP_FOR_25, BOOST_PP_TUPLE_EAT_4)(o(25, s), p, o, m)
+# define BOOST_PP_FOR_25(s, p, o, m) BOOST_PP_IF(p(26, s), m, BOOST_PP_TUPLE_EAT_2)(26, s) BOOST_PP_IF(p(26, s), BOOST_PP_FOR_26, BOOST_PP_TUPLE_EAT_4)(o(26, s), p, o, m)
+# define BOOST_PP_FOR_26(s, p, o, m) BOOST_PP_IF(p(27, s), m, BOOST_PP_TUPLE_EAT_2)(27, s) BOOST_PP_IF(p(27, s), BOOST_PP_FOR_27, BOOST_PP_TUPLE_EAT_4)(o(27, s), p, o, m)
+# define BOOST_PP_FOR_27(s, p, o, m) BOOST_PP_IF(p(28, s), m, BOOST_PP_TUPLE_EAT_2)(28, s) BOOST_PP_IF(p(28, s), BOOST_PP_FOR_28, BOOST_PP_TUPLE_EAT_4)(o(28, s), p, o, m)
+# define BOOST_PP_FOR_28(s, p, o, m) BOOST_PP_IF(p(29, s), m, BOOST_PP_TUPLE_EAT_2)(29, s) BOOST_PP_IF(p(29, s), BOOST_PP_FOR_29, BOOST_PP_TUPLE_EAT_4)(o(29, s), p, o, m)
+# define BOOST_PP_FOR_29(s, p, o, m) BOOST_PP_IF(p(30, s), m, BOOST_PP_TUPLE_EAT_2)(30, s) BOOST_PP_IF(p(30, s), BOOST_PP_FOR_30, BOOST_PP_TUPLE_EAT_4)(o(30, s), p, o, m)
+# define BOOST_PP_FOR_30(s, p, o, m) BOOST_PP_IF(p(31, s), m, BOOST_PP_TUPLE_EAT_2)(31, s) BOOST_PP_IF(p(31, s), BOOST_PP_FOR_31, BOOST_PP_TUPLE_EAT_4)(o(31, s), p, o, m)
+# define BOOST_PP_FOR_31(s, p, o, m) BOOST_PP_IF(p(32, s), m, BOOST_PP_TUPLE_EAT_2)(32, s) BOOST_PP_IF(p(32, s), BOOST_PP_FOR_32, BOOST_PP_TUPLE_EAT_4)(o(32, s), p, o, m)
+# define BOOST_PP_FOR_32(s, p, o, m) BOOST_PP_IF(p(33, s), m, BOOST_PP_TUPLE_EAT_2)(33, s) BOOST_PP_IF(p(33, s), BOOST_PP_FOR_33, BOOST_PP_TUPLE_EAT_4)(o(33, s), p, o, m)
+# define BOOST_PP_FOR_33(s, p, o, m) BOOST_PP_IF(p(34, s), m, BOOST_PP_TUPLE_EAT_2)(34, s) BOOST_PP_IF(p(34, s), BOOST_PP_FOR_34, BOOST_PP_TUPLE_EAT_4)(o(34, s), p, o, m)
+# define BOOST_PP_FOR_34(s, p, o, m) BOOST_PP_IF(p(35, s), m, BOOST_PP_TUPLE_EAT_2)(35, s) BOOST_PP_IF(p(35, s), BOOST_PP_FOR_35, BOOST_PP_TUPLE_EAT_4)(o(35, s), p, o, m)
+# define BOOST_PP_FOR_35(s, p, o, m) BOOST_PP_IF(p(36, s), m, BOOST_PP_TUPLE_EAT_2)(36, s) BOOST_PP_IF(p(36, s), BOOST_PP_FOR_36, BOOST_PP_TUPLE_EAT_4)(o(36, s), p, o, m)
+# define BOOST_PP_FOR_36(s, p, o, m) BOOST_PP_IF(p(37, s), m, BOOST_PP_TUPLE_EAT_2)(37, s) BOOST_PP_IF(p(37, s), BOOST_PP_FOR_37, BOOST_PP_TUPLE_EAT_4)(o(37, s), p, o, m)
+# define BOOST_PP_FOR_37(s, p, o, m) BOOST_PP_IF(p(38, s), m, BOOST_PP_TUPLE_EAT_2)(38, s) BOOST_PP_IF(p(38, s), BOOST_PP_FOR_38, BOOST_PP_TUPLE_EAT_4)(o(38, s), p, o, m)
+# define BOOST_PP_FOR_38(s, p, o, m) BOOST_PP_IF(p(39, s), m, BOOST_PP_TUPLE_EAT_2)(39, s) BOOST_PP_IF(p(39, s), BOOST_PP_FOR_39, BOOST_PP_TUPLE_EAT_4)(o(39, s), p, o, m)
+# define BOOST_PP_FOR_39(s, p, o, m) BOOST_PP_IF(p(40, s), m, BOOST_PP_TUPLE_EAT_2)(40, s) BOOST_PP_IF(p(40, s), BOOST_PP_FOR_40, BOOST_PP_TUPLE_EAT_4)(o(40, s), p, o, m)
+# define BOOST_PP_FOR_40(s, p, o, m) BOOST_PP_IF(p(41, s), m, BOOST_PP_TUPLE_EAT_2)(41, s) BOOST_PP_IF(p(41, s), BOOST_PP_FOR_41, BOOST_PP_TUPLE_EAT_4)(o(41, s), p, o, m)
+# define BOOST_PP_FOR_41(s, p, o, m) BOOST_PP_IF(p(42, s), m, BOOST_PP_TUPLE_EAT_2)(42, s) BOOST_PP_IF(p(42, s), BOOST_PP_FOR_42, BOOST_PP_TUPLE_EAT_4)(o(42, s), p, o, m)
+# define BOOST_PP_FOR_42(s, p, o, m) BOOST_PP_IF(p(43, s), m, BOOST_PP_TUPLE_EAT_2)(43, s) BOOST_PP_IF(p(43, s), BOOST_PP_FOR_43, BOOST_PP_TUPLE_EAT_4)(o(43, s), p, o, m)
+# define BOOST_PP_FOR_43(s, p, o, m) BOOST_PP_IF(p(44, s), m, BOOST_PP_TUPLE_EAT_2)(44, s) BOOST_PP_IF(p(44, s), BOOST_PP_FOR_44, BOOST_PP_TUPLE_EAT_4)(o(44, s), p, o, m)
+# define BOOST_PP_FOR_44(s, p, o, m) BOOST_PP_IF(p(45, s), m, BOOST_PP_TUPLE_EAT_2)(45, s) BOOST_PP_IF(p(45, s), BOOST_PP_FOR_45, BOOST_PP_TUPLE_EAT_4)(o(45, s), p, o, m)
+# define BOOST_PP_FOR_45(s, p, o, m) BOOST_PP_IF(p(46, s), m, BOOST_PP_TUPLE_EAT_2)(46, s) BOOST_PP_IF(p(46, s), BOOST_PP_FOR_46, BOOST_PP_TUPLE_EAT_4)(o(46, s), p, o, m)
+# define BOOST_PP_FOR_46(s, p, o, m) BOOST_PP_IF(p(47, s), m, BOOST_PP_TUPLE_EAT_2)(47, s) BOOST_PP_IF(p(47, s), BOOST_PP_FOR_47, BOOST_PP_TUPLE_EAT_4)(o(47, s), p, o, m)
+# define BOOST_PP_FOR_47(s, p, o, m) BOOST_PP_IF(p(48, s), m, BOOST_PP_TUPLE_EAT_2)(48, s) BOOST_PP_IF(p(48, s), BOOST_PP_FOR_48, BOOST_PP_TUPLE_EAT_4)(o(48, s), p, o, m)
+# define BOOST_PP_FOR_48(s, p, o, m) BOOST_PP_IF(p(49, s), m, BOOST_PP_TUPLE_EAT_2)(49, s) BOOST_PP_IF(p(49, s), BOOST_PP_FOR_49, BOOST_PP_TUPLE_EAT_4)(o(49, s), p, o, m)
+# define BOOST_PP_FOR_49(s, p, o, m) BOOST_PP_IF(p(50, s), m, BOOST_PP_TUPLE_EAT_2)(50, s) BOOST_PP_IF(p(50, s), BOOST_PP_FOR_50, BOOST_PP_TUPLE_EAT_4)(o(50, s), p, o, m)
+# define BOOST_PP_FOR_50(s, p, o, m) BOOST_PP_IF(p(51, s), m, BOOST_PP_TUPLE_EAT_2)(51, s) BOOST_PP_IF(p(51, s), BOOST_PP_FOR_51, BOOST_PP_TUPLE_EAT_4)(o(51, s), p, o, m)
+# define BOOST_PP_FOR_51(s, p, o, m) BOOST_PP_IF(p(52, s), m, BOOST_PP_TUPLE_EAT_2)(52, s) BOOST_PP_IF(p(52, s), BOOST_PP_FOR_52, BOOST_PP_TUPLE_EAT_4)(o(52, s), p, o, m)
+# define BOOST_PP_FOR_52(s, p, o, m) BOOST_PP_IF(p(53, s), m, BOOST_PP_TUPLE_EAT_2)(53, s) BOOST_PP_IF(p(53, s), BOOST_PP_FOR_53, BOOST_PP_TUPLE_EAT_4)(o(53, s), p, o, m)
+# define BOOST_PP_FOR_53(s, p, o, m) BOOST_PP_IF(p(54, s), m, BOOST_PP_TUPLE_EAT_2)(54, s) BOOST_PP_IF(p(54, s), BOOST_PP_FOR_54, BOOST_PP_TUPLE_EAT_4)(o(54, s), p, o, m)
+# define BOOST_PP_FOR_54(s, p, o, m) BOOST_PP_IF(p(55, s), m, BOOST_PP_TUPLE_EAT_2)(55, s) BOOST_PP_IF(p(55, s), BOOST_PP_FOR_55, BOOST_PP_TUPLE_EAT_4)(o(55, s), p, o, m)
+# define BOOST_PP_FOR_55(s, p, o, m) BOOST_PP_IF(p(56, s), m, BOOST_PP_TUPLE_EAT_2)(56, s) BOOST_PP_IF(p(56, s), BOOST_PP_FOR_56, BOOST_PP_TUPLE_EAT_4)(o(56, s), p, o, m)
+# define BOOST_PP_FOR_56(s, p, o, m) BOOST_PP_IF(p(57, s), m, BOOST_PP_TUPLE_EAT_2)(57, s) BOOST_PP_IF(p(57, s), BOOST_PP_FOR_57, BOOST_PP_TUPLE_EAT_4)(o(57, s), p, o, m)
+# define BOOST_PP_FOR_57(s, p, o, m) BOOST_PP_IF(p(58, s), m, BOOST_PP_TUPLE_EAT_2)(58, s) BOOST_PP_IF(p(58, s), BOOST_PP_FOR_58, BOOST_PP_TUPLE_EAT_4)(o(58, s), p, o, m)
+# define BOOST_PP_FOR_58(s, p, o, m) BOOST_PP_IF(p(59, s), m, BOOST_PP_TUPLE_EAT_2)(59, s) BOOST_PP_IF(p(59, s), BOOST_PP_FOR_59, BOOST_PP_TUPLE_EAT_4)(o(59, s), p, o, m)
+# define BOOST_PP_FOR_59(s, p, o, m) BOOST_PP_IF(p(60, s), m, BOOST_PP_TUPLE_EAT_2)(60, s) BOOST_PP_IF(p(60, s), BOOST_PP_FOR_60, BOOST_PP_TUPLE_EAT_4)(o(60, s), p, o, m)
+# define BOOST_PP_FOR_60(s, p, o, m) BOOST_PP_IF(p(61, s), m, BOOST_PP_TUPLE_EAT_2)(61, s) BOOST_PP_IF(p(61, s), BOOST_PP_FOR_61, BOOST_PP_TUPLE_EAT_4)(o(61, s), p, o, m)
+# define BOOST_PP_FOR_61(s, p, o, m) BOOST_PP_IF(p(62, s), m, BOOST_PP_TUPLE_EAT_2)(62, s) BOOST_PP_IF(p(62, s), BOOST_PP_FOR_62, BOOST_PP_TUPLE_EAT_4)(o(62, s), p, o, m)
+# define BOOST_PP_FOR_62(s, p, o, m) BOOST_PP_IF(p(63, s), m, BOOST_PP_TUPLE_EAT_2)(63, s) BOOST_PP_IF(p(63, s), BOOST_PP_FOR_63, BOOST_PP_TUPLE_EAT_4)(o(63, s), p, o, m)
+# define BOOST_PP_FOR_63(s, p, o, m) BOOST_PP_IF(p(64, s), m, BOOST_PP_TUPLE_EAT_2)(64, s) BOOST_PP_IF(p(64, s), BOOST_PP_FOR_64, BOOST_PP_TUPLE_EAT_4)(o(64, s), p, o, m)
+# define BOOST_PP_FOR_64(s, p, o, m) BOOST_PP_IF(p(65, s), m, BOOST_PP_TUPLE_EAT_2)(65, s) BOOST_PP_IF(p(65, s), BOOST_PP_FOR_65, BOOST_PP_TUPLE_EAT_4)(o(65, s), p, o, m)
+# define BOOST_PP_FOR_65(s, p, o, m) BOOST_PP_IF(p(66, s), m, BOOST_PP_TUPLE_EAT_2)(66, s) BOOST_PP_IF(p(66, s), BOOST_PP_FOR_66, BOOST_PP_TUPLE_EAT_4)(o(66, s), p, o, m)
+# define BOOST_PP_FOR_66(s, p, o, m) BOOST_PP_IF(p(67, s), m, BOOST_PP_TUPLE_EAT_2)(67, s) BOOST_PP_IF(p(67, s), BOOST_PP_FOR_67, BOOST_PP_TUPLE_EAT_4)(o(67, s), p, o, m)
+# define BOOST_PP_FOR_67(s, p, o, m) BOOST_PP_IF(p(68, s), m, BOOST_PP_TUPLE_EAT_2)(68, s) BOOST_PP_IF(p(68, s), BOOST_PP_FOR_68, BOOST_PP_TUPLE_EAT_4)(o(68, s), p, o, m)
+# define BOOST_PP_FOR_68(s, p, o, m) BOOST_PP_IF(p(69, s), m, BOOST_PP_TUPLE_EAT_2)(69, s) BOOST_PP_IF(p(69, s), BOOST_PP_FOR_69, BOOST_PP_TUPLE_EAT_4)(o(69, s), p, o, m)
+# define BOOST_PP_FOR_69(s, p, o, m) BOOST_PP_IF(p(70, s), m, BOOST_PP_TUPLE_EAT_2)(70, s) BOOST_PP_IF(p(70, s), BOOST_PP_FOR_70, BOOST_PP_TUPLE_EAT_4)(o(70, s), p, o, m)
+# define BOOST_PP_FOR_70(s, p, o, m) BOOST_PP_IF(p(71, s), m, BOOST_PP_TUPLE_EAT_2)(71, s) BOOST_PP_IF(p(71, s), BOOST_PP_FOR_71, BOOST_PP_TUPLE_EAT_4)(o(71, s), p, o, m)
+# define BOOST_PP_FOR_71(s, p, o, m) BOOST_PP_IF(p(72, s), m, BOOST_PP_TUPLE_EAT_2)(72, s) BOOST_PP_IF(p(72, s), BOOST_PP_FOR_72, BOOST_PP_TUPLE_EAT_4)(o(72, s), p, o, m)
+# define BOOST_PP_FOR_72(s, p, o, m) BOOST_PP_IF(p(73, s), m, BOOST_PP_TUPLE_EAT_2)(73, s) BOOST_PP_IF(p(73, s), BOOST_PP_FOR_73, BOOST_PP_TUPLE_EAT_4)(o(73, s), p, o, m)
+# define BOOST_PP_FOR_73(s, p, o, m) BOOST_PP_IF(p(74, s), m, BOOST_PP_TUPLE_EAT_2)(74, s) BOOST_PP_IF(p(74, s), BOOST_PP_FOR_74, BOOST_PP_TUPLE_EAT_4)(o(74, s), p, o, m)
+# define BOOST_PP_FOR_74(s, p, o, m) BOOST_PP_IF(p(75, s), m, BOOST_PP_TUPLE_EAT_2)(75, s) BOOST_PP_IF(p(75, s), BOOST_PP_FOR_75, BOOST_PP_TUPLE_EAT_4)(o(75, s), p, o, m)
+# define BOOST_PP_FOR_75(s, p, o, m) BOOST_PP_IF(p(76, s), m, BOOST_PP_TUPLE_EAT_2)(76, s) BOOST_PP_IF(p(76, s), BOOST_PP_FOR_76, BOOST_PP_TUPLE_EAT_4)(o(76, s), p, o, m)
+# define BOOST_PP_FOR_76(s, p, o, m) BOOST_PP_IF(p(77, s), m, BOOST_PP_TUPLE_EAT_2)(77, s) BOOST_PP_IF(p(77, s), BOOST_PP_FOR_77, BOOST_PP_TUPLE_EAT_4)(o(77, s), p, o, m)
+# define BOOST_PP_FOR_77(s, p, o, m) BOOST_PP_IF(p(78, s), m, BOOST_PP_TUPLE_EAT_2)(78, s) BOOST_PP_IF(p(78, s), BOOST_PP_FOR_78, BOOST_PP_TUPLE_EAT_4)(o(78, s), p, o, m)
+# define BOOST_PP_FOR_78(s, p, o, m) BOOST_PP_IF(p(79, s), m, BOOST_PP_TUPLE_EAT_2)(79, s) BOOST_PP_IF(p(79, s), BOOST_PP_FOR_79, BOOST_PP_TUPLE_EAT_4)(o(79, s), p, o, m)
+# define BOOST_PP_FOR_79(s, p, o, m) BOOST_PP_IF(p(80, s), m, BOOST_PP_TUPLE_EAT_2)(80, s) BOOST_PP_IF(p(80, s), BOOST_PP_FOR_80, BOOST_PP_TUPLE_EAT_4)(o(80, s), p, o, m)
+# define BOOST_PP_FOR_80(s, p, o, m) BOOST_PP_IF(p(81, s), m, BOOST_PP_TUPLE_EAT_2)(81, s) BOOST_PP_IF(p(81, s), BOOST_PP_FOR_81, BOOST_PP_TUPLE_EAT_4)(o(81, s), p, o, m)
+# define BOOST_PP_FOR_81(s, p, o, m) BOOST_PP_IF(p(82, s), m, BOOST_PP_TUPLE_EAT_2)(82, s) BOOST_PP_IF(p(82, s), BOOST_PP_FOR_82, BOOST_PP_TUPLE_EAT_4)(o(82, s), p, o, m)
+# define BOOST_PP_FOR_82(s, p, o, m) BOOST_PP_IF(p(83, s), m, BOOST_PP_TUPLE_EAT_2)(83, s) BOOST_PP_IF(p(83, s), BOOST_PP_FOR_83, BOOST_PP_TUPLE_EAT_4)(o(83, s), p, o, m)
+# define BOOST_PP_FOR_83(s, p, o, m) BOOST_PP_IF(p(84, s), m, BOOST_PP_TUPLE_EAT_2)(84, s) BOOST_PP_IF(p(84, s), BOOST_PP_FOR_84, BOOST_PP_TUPLE_EAT_4)(o(84, s), p, o, m)
+# define BOOST_PP_FOR_84(s, p, o, m) BOOST_PP_IF(p(85, s), m, BOOST_PP_TUPLE_EAT_2)(85, s) BOOST_PP_IF(p(85, s), BOOST_PP_FOR_85, BOOST_PP_TUPLE_EAT_4)(o(85, s), p, o, m)
+# define BOOST_PP_FOR_85(s, p, o, m) BOOST_PP_IF(p(86, s), m, BOOST_PP_TUPLE_EAT_2)(86, s) BOOST_PP_IF(p(86, s), BOOST_PP_FOR_86, BOOST_PP_TUPLE_EAT_4)(o(86, s), p, o, m)
+# define BOOST_PP_FOR_86(s, p, o, m) BOOST_PP_IF(p(87, s), m, BOOST_PP_TUPLE_EAT_2)(87, s) BOOST_PP_IF(p(87, s), BOOST_PP_FOR_87, BOOST_PP_TUPLE_EAT_4)(o(87, s), p, o, m)
+# define BOOST_PP_FOR_87(s, p, o, m) BOOST_PP_IF(p(88, s), m, BOOST_PP_TUPLE_EAT_2)(88, s) BOOST_PP_IF(p(88, s), BOOST_PP_FOR_88, BOOST_PP_TUPLE_EAT_4)(o(88, s), p, o, m)
+# define BOOST_PP_FOR_88(s, p, o, m) BOOST_PP_IF(p(89, s), m, BOOST_PP_TUPLE_EAT_2)(89, s) BOOST_PP_IF(p(89, s), BOOST_PP_FOR_89, BOOST_PP_TUPLE_EAT_4)(o(89, s), p, o, m)
+# define BOOST_PP_FOR_89(s, p, o, m) BOOST_PP_IF(p(90, s), m, BOOST_PP_TUPLE_EAT_2)(90, s) BOOST_PP_IF(p(90, s), BOOST_PP_FOR_90, BOOST_PP_TUPLE_EAT_4)(o(90, s), p, o, m)
+# define BOOST_PP_FOR_90(s, p, o, m) BOOST_PP_IF(p(91, s), m, BOOST_PP_TUPLE_EAT_2)(91, s) BOOST_PP_IF(p(91, s), BOOST_PP_FOR_91, BOOST_PP_TUPLE_EAT_4)(o(91, s), p, o, m)
+# define BOOST_PP_FOR_91(s, p, o, m) BOOST_PP_IF(p(92, s), m, BOOST_PP_TUPLE_EAT_2)(92, s) BOOST_PP_IF(p(92, s), BOOST_PP_FOR_92, BOOST_PP_TUPLE_EAT_4)(o(92, s), p, o, m)
+# define BOOST_PP_FOR_92(s, p, o, m) BOOST_PP_IF(p(93, s), m, BOOST_PP_TUPLE_EAT_2)(93, s) BOOST_PP_IF(p(93, s), BOOST_PP_FOR_93, BOOST_PP_TUPLE_EAT_4)(o(93, s), p, o, m)
+# define BOOST_PP_FOR_93(s, p, o, m) BOOST_PP_IF(p(94, s), m, BOOST_PP_TUPLE_EAT_2)(94, s) BOOST_PP_IF(p(94, s), BOOST_PP_FOR_94, BOOST_PP_TUPLE_EAT_4)(o(94, s), p, o, m)
+# define BOOST_PP_FOR_94(s, p, o, m) BOOST_PP_IF(p(95, s), m, BOOST_PP_TUPLE_EAT_2)(95, s) BOOST_PP_IF(p(95, s), BOOST_PP_FOR_95, BOOST_PP_TUPLE_EAT_4)(o(95, s), p, o, m)
+# define BOOST_PP_FOR_95(s, p, o, m) BOOST_PP_IF(p(96, s), m, BOOST_PP_TUPLE_EAT_2)(96, s) BOOST_PP_IF(p(96, s), BOOST_PP_FOR_96, BOOST_PP_TUPLE_EAT_4)(o(96, s), p, o, m)
+# define BOOST_PP_FOR_96(s, p, o, m) BOOST_PP_IF(p(97, s), m, BOOST_PP_TUPLE_EAT_2)(97, s) BOOST_PP_IF(p(97, s), BOOST_PP_FOR_97, BOOST_PP_TUPLE_EAT_4)(o(97, s), p, o, m)
+# define BOOST_PP_FOR_97(s, p, o, m) BOOST_PP_IF(p(98, s), m, BOOST_PP_TUPLE_EAT_2)(98, s) BOOST_PP_IF(p(98, s), BOOST_PP_FOR_98, BOOST_PP_TUPLE_EAT_4)(o(98, s), p, o, m)
+# define BOOST_PP_FOR_98(s, p, o, m) BOOST_PP_IF(p(99, s), m, BOOST_PP_TUPLE_EAT_2)(99, s) BOOST_PP_IF(p(99, s), BOOST_PP_FOR_99, BOOST_PP_TUPLE_EAT_4)(o(99, s), p, o, m)
+# define BOOST_PP_FOR_99(s, p, o, m) BOOST_PP_IF(p(100, s), m, BOOST_PP_TUPLE_EAT_2)(100, s) BOOST_PP_IF(p(100, s), BOOST_PP_FOR_100, BOOST_PP_TUPLE_EAT_4)(o(100, s), p, o, m)
+# define BOOST_PP_FOR_100(s, p, o, m) BOOST_PP_IF(p(101, s), m, BOOST_PP_TUPLE_EAT_2)(101, s) BOOST_PP_IF(p(101, s), BOOST_PP_FOR_101, BOOST_PP_TUPLE_EAT_4)(o(101, s), p, o, m)
+# define BOOST_PP_FOR_101(s, p, o, m) BOOST_PP_IF(p(102, s), m, BOOST_PP_TUPLE_EAT_2)(102, s) BOOST_PP_IF(p(102, s), BOOST_PP_FOR_102, BOOST_PP_TUPLE_EAT_4)(o(102, s), p, o, m)
+# define BOOST_PP_FOR_102(s, p, o, m) BOOST_PP_IF(p(103, s), m, BOOST_PP_TUPLE_EAT_2)(103, s) BOOST_PP_IF(p(103, s), BOOST_PP_FOR_103, BOOST_PP_TUPLE_EAT_4)(o(103, s), p, o, m)
+# define BOOST_PP_FOR_103(s, p, o, m) BOOST_PP_IF(p(104, s), m, BOOST_PP_TUPLE_EAT_2)(104, s) BOOST_PP_IF(p(104, s), BOOST_PP_FOR_104, BOOST_PP_TUPLE_EAT_4)(o(104, s), p, o, m)
+# define BOOST_PP_FOR_104(s, p, o, m) BOOST_PP_IF(p(105, s), m, BOOST_PP_TUPLE_EAT_2)(105, s) BOOST_PP_IF(p(105, s), BOOST_PP_FOR_105, BOOST_PP_TUPLE_EAT_4)(o(105, s), p, o, m)
+# define BOOST_PP_FOR_105(s, p, o, m) BOOST_PP_IF(p(106, s), m, BOOST_PP_TUPLE_EAT_2)(106, s) BOOST_PP_IF(p(106, s), BOOST_PP_FOR_106, BOOST_PP_TUPLE_EAT_4)(o(106, s), p, o, m)
+# define BOOST_PP_FOR_106(s, p, o, m) BOOST_PP_IF(p(107, s), m, BOOST_PP_TUPLE_EAT_2)(107, s) BOOST_PP_IF(p(107, s), BOOST_PP_FOR_107, BOOST_PP_TUPLE_EAT_4)(o(107, s), p, o, m)
+# define BOOST_PP_FOR_107(s, p, o, m) BOOST_PP_IF(p(108, s), m, BOOST_PP_TUPLE_EAT_2)(108, s) BOOST_PP_IF(p(108, s), BOOST_PP_FOR_108, BOOST_PP_TUPLE_EAT_4)(o(108, s), p, o, m)
+# define BOOST_PP_FOR_108(s, p, o, m) BOOST_PP_IF(p(109, s), m, BOOST_PP_TUPLE_EAT_2)(109, s) BOOST_PP_IF(p(109, s), BOOST_PP_FOR_109, BOOST_PP_TUPLE_EAT_4)(o(109, s), p, o, m)
+# define BOOST_PP_FOR_109(s, p, o, m) BOOST_PP_IF(p(110, s), m, BOOST_PP_TUPLE_EAT_2)(110, s) BOOST_PP_IF(p(110, s), BOOST_PP_FOR_110, BOOST_PP_TUPLE_EAT_4)(o(110, s), p, o, m)
+# define BOOST_PP_FOR_110(s, p, o, m) BOOST_PP_IF(p(111, s), m, BOOST_PP_TUPLE_EAT_2)(111, s) BOOST_PP_IF(p(111, s), BOOST_PP_FOR_111, BOOST_PP_TUPLE_EAT_4)(o(111, s), p, o, m)
+# define BOOST_PP_FOR_111(s, p, o, m) BOOST_PP_IF(p(112, s), m, BOOST_PP_TUPLE_EAT_2)(112, s) BOOST_PP_IF(p(112, s), BOOST_PP_FOR_112, BOOST_PP_TUPLE_EAT_4)(o(112, s), p, o, m)
+# define BOOST_PP_FOR_112(s, p, o, m) BOOST_PP_IF(p(113, s), m, BOOST_PP_TUPLE_EAT_2)(113, s) BOOST_PP_IF(p(113, s), BOOST_PP_FOR_113, BOOST_PP_TUPLE_EAT_4)(o(113, s), p, o, m)
+# define BOOST_PP_FOR_113(s, p, o, m) BOOST_PP_IF(p(114, s), m, BOOST_PP_TUPLE_EAT_2)(114, s) BOOST_PP_IF(p(114, s), BOOST_PP_FOR_114, BOOST_PP_TUPLE_EAT_4)(o(114, s), p, o, m)
+# define BOOST_PP_FOR_114(s, p, o, m) BOOST_PP_IF(p(115, s), m, BOOST_PP_TUPLE_EAT_2)(115, s) BOOST_PP_IF(p(115, s), BOOST_PP_FOR_115, BOOST_PP_TUPLE_EAT_4)(o(115, s), p, o, m)
+# define BOOST_PP_FOR_115(s, p, o, m) BOOST_PP_IF(p(116, s), m, BOOST_PP_TUPLE_EAT_2)(116, s) BOOST_PP_IF(p(116, s), BOOST_PP_FOR_116, BOOST_PP_TUPLE_EAT_4)(o(116, s), p, o, m)
+# define BOOST_PP_FOR_116(s, p, o, m) BOOST_PP_IF(p(117, s), m, BOOST_PP_TUPLE_EAT_2)(117, s) BOOST_PP_IF(p(117, s), BOOST_PP_FOR_117, BOOST_PP_TUPLE_EAT_4)(o(117, s), p, o, m)
+# define BOOST_PP_FOR_117(s, p, o, m) BOOST_PP_IF(p(118, s), m, BOOST_PP_TUPLE_EAT_2)(118, s) BOOST_PP_IF(p(118, s), BOOST_PP_FOR_118, BOOST_PP_TUPLE_EAT_4)(o(118, s), p, o, m)
+# define BOOST_PP_FOR_118(s, p, o, m) BOOST_PP_IF(p(119, s), m, BOOST_PP_TUPLE_EAT_2)(119, s) BOOST_PP_IF(p(119, s), BOOST_PP_FOR_119, BOOST_PP_TUPLE_EAT_4)(o(119, s), p, o, m)
+# define BOOST_PP_FOR_119(s, p, o, m) BOOST_PP_IF(p(120, s), m, BOOST_PP_TUPLE_EAT_2)(120, s) BOOST_PP_IF(p(120, s), BOOST_PP_FOR_120, BOOST_PP_TUPLE_EAT_4)(o(120, s), p, o, m)
+# define BOOST_PP_FOR_120(s, p, o, m) BOOST_PP_IF(p(121, s), m, BOOST_PP_TUPLE_EAT_2)(121, s) BOOST_PP_IF(p(121, s), BOOST_PP_FOR_121, BOOST_PP_TUPLE_EAT_4)(o(121, s), p, o, m)
+# define BOOST_PP_FOR_121(s, p, o, m) BOOST_PP_IF(p(122, s), m, BOOST_PP_TUPLE_EAT_2)(122, s) BOOST_PP_IF(p(122, s), BOOST_PP_FOR_122, BOOST_PP_TUPLE_EAT_4)(o(122, s), p, o, m)
+# define BOOST_PP_FOR_122(s, p, o, m) BOOST_PP_IF(p(123, s), m, BOOST_PP_TUPLE_EAT_2)(123, s) BOOST_PP_IF(p(123, s), BOOST_PP_FOR_123, BOOST_PP_TUPLE_EAT_4)(o(123, s), p, o, m)
+# define BOOST_PP_FOR_123(s, p, o, m) BOOST_PP_IF(p(124, s), m, BOOST_PP_TUPLE_EAT_2)(124, s) BOOST_PP_IF(p(124, s), BOOST_PP_FOR_124, BOOST_PP_TUPLE_EAT_4)(o(124, s), p, o, m)
+# define BOOST_PP_FOR_124(s, p, o, m) BOOST_PP_IF(p(125, s), m, BOOST_PP_TUPLE_EAT_2)(125, s) BOOST_PP_IF(p(125, s), BOOST_PP_FOR_125, BOOST_PP_TUPLE_EAT_4)(o(125, s), p, o, m)
+# define BOOST_PP_FOR_125(s, p, o, m) BOOST_PP_IF(p(126, s), m, BOOST_PP_TUPLE_EAT_2)(126, s) BOOST_PP_IF(p(126, s), BOOST_PP_FOR_126, BOOST_PP_TUPLE_EAT_4)(o(126, s), p, o, m)
+# define BOOST_PP_FOR_126(s, p, o, m) BOOST_PP_IF(p(127, s), m, BOOST_PP_TUPLE_EAT_2)(127, s) BOOST_PP_IF(p(127, s), BOOST_PP_FOR_127, BOOST_PP_TUPLE_EAT_4)(o(127, s), p, o, m)
+# define BOOST_PP_FOR_127(s, p, o, m) BOOST_PP_IF(p(128, s), m, BOOST_PP_TUPLE_EAT_2)(128, s) BOOST_PP_IF(p(128, s), BOOST_PP_FOR_128, BOOST_PP_TUPLE_EAT_4)(o(128, s), p, o, m)
+# define BOOST_PP_FOR_128(s, p, o, m) BOOST_PP_IF(p(129, s), m, BOOST_PP_TUPLE_EAT_2)(129, s) BOOST_PP_IF(p(129, s), BOOST_PP_FOR_129, BOOST_PP_TUPLE_EAT_4)(o(129, s), p, o, m)
+# define BOOST_PP_FOR_129(s, p, o, m) BOOST_PP_IF(p(130, s), m, BOOST_PP_TUPLE_EAT_2)(130, s) BOOST_PP_IF(p(130, s), BOOST_PP_FOR_130, BOOST_PP_TUPLE_EAT_4)(o(130, s), p, o, m)
+# define BOOST_PP_FOR_130(s, p, o, m) BOOST_PP_IF(p(131, s), m, BOOST_PP_TUPLE_EAT_2)(131, s) BOOST_PP_IF(p(131, s), BOOST_PP_FOR_131, BOOST_PP_TUPLE_EAT_4)(o(131, s), p, o, m)
+# define BOOST_PP_FOR_131(s, p, o, m) BOOST_PP_IF(p(132, s), m, BOOST_PP_TUPLE_EAT_2)(132, s) BOOST_PP_IF(p(132, s), BOOST_PP_FOR_132, BOOST_PP_TUPLE_EAT_4)(o(132, s), p, o, m)
+# define BOOST_PP_FOR_132(s, p, o, m) BOOST_PP_IF(p(133, s), m, BOOST_PP_TUPLE_EAT_2)(133, s) BOOST_PP_IF(p(133, s), BOOST_PP_FOR_133, BOOST_PP_TUPLE_EAT_4)(o(133, s), p, o, m)
+# define BOOST_PP_FOR_133(s, p, o, m) BOOST_PP_IF(p(134, s), m, BOOST_PP_TUPLE_EAT_2)(134, s) BOOST_PP_IF(p(134, s), BOOST_PP_FOR_134, BOOST_PP_TUPLE_EAT_4)(o(134, s), p, o, m)
+# define BOOST_PP_FOR_134(s, p, o, m) BOOST_PP_IF(p(135, s), m, BOOST_PP_TUPLE_EAT_2)(135, s) BOOST_PP_IF(p(135, s), BOOST_PP_FOR_135, BOOST_PP_TUPLE_EAT_4)(o(135, s), p, o, m)
+# define BOOST_PP_FOR_135(s, p, o, m) BOOST_PP_IF(p(136, s), m, BOOST_PP_TUPLE_EAT_2)(136, s) BOOST_PP_IF(p(136, s), BOOST_PP_FOR_136, BOOST_PP_TUPLE_EAT_4)(o(136, s), p, o, m)
+# define BOOST_PP_FOR_136(s, p, o, m) BOOST_PP_IF(p(137, s), m, BOOST_PP_TUPLE_EAT_2)(137, s) BOOST_PP_IF(p(137, s), BOOST_PP_FOR_137, BOOST_PP_TUPLE_EAT_4)(o(137, s), p, o, m)
+# define BOOST_PP_FOR_137(s, p, o, m) BOOST_PP_IF(p(138, s), m, BOOST_PP_TUPLE_EAT_2)(138, s) BOOST_PP_IF(p(138, s), BOOST_PP_FOR_138, BOOST_PP_TUPLE_EAT_4)(o(138, s), p, o, m)
+# define BOOST_PP_FOR_138(s, p, o, m) BOOST_PP_IF(p(139, s), m, BOOST_PP_TUPLE_EAT_2)(139, s) BOOST_PP_IF(p(139, s), BOOST_PP_FOR_139, BOOST_PP_TUPLE_EAT_4)(o(139, s), p, o, m)
+# define BOOST_PP_FOR_139(s, p, o, m) BOOST_PP_IF(p(140, s), m, BOOST_PP_TUPLE_EAT_2)(140, s) BOOST_PP_IF(p(140, s), BOOST_PP_FOR_140, BOOST_PP_TUPLE_EAT_4)(o(140, s), p, o, m)
+# define BOOST_PP_FOR_140(s, p, o, m) BOOST_PP_IF(p(141, s), m, BOOST_PP_TUPLE_EAT_2)(141, s) BOOST_PP_IF(p(141, s), BOOST_PP_FOR_141, BOOST_PP_TUPLE_EAT_4)(o(141, s), p, o, m)
+# define BOOST_PP_FOR_141(s, p, o, m) BOOST_PP_IF(p(142, s), m, BOOST_PP_TUPLE_EAT_2)(142, s) BOOST_PP_IF(p(142, s), BOOST_PP_FOR_142, BOOST_PP_TUPLE_EAT_4)(o(142, s), p, o, m)
+# define BOOST_PP_FOR_142(s, p, o, m) BOOST_PP_IF(p(143, s), m, BOOST_PP_TUPLE_EAT_2)(143, s) BOOST_PP_IF(p(143, s), BOOST_PP_FOR_143, BOOST_PP_TUPLE_EAT_4)(o(143, s), p, o, m)
+# define BOOST_PP_FOR_143(s, p, o, m) BOOST_PP_IF(p(144, s), m, BOOST_PP_TUPLE_EAT_2)(144, s) BOOST_PP_IF(p(144, s), BOOST_PP_FOR_144, BOOST_PP_TUPLE_EAT_4)(o(144, s), p, o, m)
+# define BOOST_PP_FOR_144(s, p, o, m) BOOST_PP_IF(p(145, s), m, BOOST_PP_TUPLE_EAT_2)(145, s) BOOST_PP_IF(p(145, s), BOOST_PP_FOR_145, BOOST_PP_TUPLE_EAT_4)(o(145, s), p, o, m)
+# define BOOST_PP_FOR_145(s, p, o, m) BOOST_PP_IF(p(146, s), m, BOOST_PP_TUPLE_EAT_2)(146, s) BOOST_PP_IF(p(146, s), BOOST_PP_FOR_146, BOOST_PP_TUPLE_EAT_4)(o(146, s), p, o, m)
+# define BOOST_PP_FOR_146(s, p, o, m) BOOST_PP_IF(p(147, s), m, BOOST_PP_TUPLE_EAT_2)(147, s) BOOST_PP_IF(p(147, s), BOOST_PP_FOR_147, BOOST_PP_TUPLE_EAT_4)(o(147, s), p, o, m)
+# define BOOST_PP_FOR_147(s, p, o, m) BOOST_PP_IF(p(148, s), m, BOOST_PP_TUPLE_EAT_2)(148, s) BOOST_PP_IF(p(148, s), BOOST_PP_FOR_148, BOOST_PP_TUPLE_EAT_4)(o(148, s), p, o, m)
+# define BOOST_PP_FOR_148(s, p, o, m) BOOST_PP_IF(p(149, s), m, BOOST_PP_TUPLE_EAT_2)(149, s) BOOST_PP_IF(p(149, s), BOOST_PP_FOR_149, BOOST_PP_TUPLE_EAT_4)(o(149, s), p, o, m)
+# define BOOST_PP_FOR_149(s, p, o, m) BOOST_PP_IF(p(150, s), m, BOOST_PP_TUPLE_EAT_2)(150, s) BOOST_PP_IF(p(150, s), BOOST_PP_FOR_150, BOOST_PP_TUPLE_EAT_4)(o(150, s), p, o, m)
+# define BOOST_PP_FOR_150(s, p, o, m) BOOST_PP_IF(p(151, s), m, BOOST_PP_TUPLE_EAT_2)(151, s) BOOST_PP_IF(p(151, s), BOOST_PP_FOR_151, BOOST_PP_TUPLE_EAT_4)(o(151, s), p, o, m)
+# define BOOST_PP_FOR_151(s, p, o, m) BOOST_PP_IF(p(152, s), m, BOOST_PP_TUPLE_EAT_2)(152, s) BOOST_PP_IF(p(152, s), BOOST_PP_FOR_152, BOOST_PP_TUPLE_EAT_4)(o(152, s), p, o, m)
+# define BOOST_PP_FOR_152(s, p, o, m) BOOST_PP_IF(p(153, s), m, BOOST_PP_TUPLE_EAT_2)(153, s) BOOST_PP_IF(p(153, s), BOOST_PP_FOR_153, BOOST_PP_TUPLE_EAT_4)(o(153, s), p, o, m)
+# define BOOST_PP_FOR_153(s, p, o, m) BOOST_PP_IF(p(154, s), m, BOOST_PP_TUPLE_EAT_2)(154, s) BOOST_PP_IF(p(154, s), BOOST_PP_FOR_154, BOOST_PP_TUPLE_EAT_4)(o(154, s), p, o, m)
+# define BOOST_PP_FOR_154(s, p, o, m) BOOST_PP_IF(p(155, s), m, BOOST_PP_TUPLE_EAT_2)(155, s) BOOST_PP_IF(p(155, s), BOOST_PP_FOR_155, BOOST_PP_TUPLE_EAT_4)(o(155, s), p, o, m)
+# define BOOST_PP_FOR_155(s, p, o, m) BOOST_PP_IF(p(156, s), m, BOOST_PP_TUPLE_EAT_2)(156, s) BOOST_PP_IF(p(156, s), BOOST_PP_FOR_156, BOOST_PP_TUPLE_EAT_4)(o(156, s), p, o, m)
+# define BOOST_PP_FOR_156(s, p, o, m) BOOST_PP_IF(p(157, s), m, BOOST_PP_TUPLE_EAT_2)(157, s) BOOST_PP_IF(p(157, s), BOOST_PP_FOR_157, BOOST_PP_TUPLE_EAT_4)(o(157, s), p, o, m)
+# define BOOST_PP_FOR_157(s, p, o, m) BOOST_PP_IF(p(158, s), m, BOOST_PP_TUPLE_EAT_2)(158, s) BOOST_PP_IF(p(158, s), BOOST_PP_FOR_158, BOOST_PP_TUPLE_EAT_4)(o(158, s), p, o, m)
+# define BOOST_PP_FOR_158(s, p, o, m) BOOST_PP_IF(p(159, s), m, BOOST_PP_TUPLE_EAT_2)(159, s) BOOST_PP_IF(p(159, s), BOOST_PP_FOR_159, BOOST_PP_TUPLE_EAT_4)(o(159, s), p, o, m)
+# define BOOST_PP_FOR_159(s, p, o, m) BOOST_PP_IF(p(160, s), m, BOOST_PP_TUPLE_EAT_2)(160, s) BOOST_PP_IF(p(160, s), BOOST_PP_FOR_160, BOOST_PP_TUPLE_EAT_4)(o(160, s), p, o, m)
+# define BOOST_PP_FOR_160(s, p, o, m) BOOST_PP_IF(p(161, s), m, BOOST_PP_TUPLE_EAT_2)(161, s) BOOST_PP_IF(p(161, s), BOOST_PP_FOR_161, BOOST_PP_TUPLE_EAT_4)(o(161, s), p, o, m)
+# define BOOST_PP_FOR_161(s, p, o, m) BOOST_PP_IF(p(162, s), m, BOOST_PP_TUPLE_EAT_2)(162, s) BOOST_PP_IF(p(162, s), BOOST_PP_FOR_162, BOOST_PP_TUPLE_EAT_4)(o(162, s), p, o, m)
+# define BOOST_PP_FOR_162(s, p, o, m) BOOST_PP_IF(p(163, s), m, BOOST_PP_TUPLE_EAT_2)(163, s) BOOST_PP_IF(p(163, s), BOOST_PP_FOR_163, BOOST_PP_TUPLE_EAT_4)(o(163, s), p, o, m)
+# define BOOST_PP_FOR_163(s, p, o, m) BOOST_PP_IF(p(164, s), m, BOOST_PP_TUPLE_EAT_2)(164, s) BOOST_PP_IF(p(164, s), BOOST_PP_FOR_164, BOOST_PP_TUPLE_EAT_4)(o(164, s), p, o, m)
+# define BOOST_PP_FOR_164(s, p, o, m) BOOST_PP_IF(p(165, s), m, BOOST_PP_TUPLE_EAT_2)(165, s) BOOST_PP_IF(p(165, s), BOOST_PP_FOR_165, BOOST_PP_TUPLE_EAT_4)(o(165, s), p, o, m)
+# define BOOST_PP_FOR_165(s, p, o, m) BOOST_PP_IF(p(166, s), m, BOOST_PP_TUPLE_EAT_2)(166, s) BOOST_PP_IF(p(166, s), BOOST_PP_FOR_166, BOOST_PP_TUPLE_EAT_4)(o(166, s), p, o, m)
+# define BOOST_PP_FOR_166(s, p, o, m) BOOST_PP_IF(p(167, s), m, BOOST_PP_TUPLE_EAT_2)(167, s) BOOST_PP_IF(p(167, s), BOOST_PP_FOR_167, BOOST_PP_TUPLE_EAT_4)(o(167, s), p, o, m)
+# define BOOST_PP_FOR_167(s, p, o, m) BOOST_PP_IF(p(168, s), m, BOOST_PP_TUPLE_EAT_2)(168, s) BOOST_PP_IF(p(168, s), BOOST_PP_FOR_168, BOOST_PP_TUPLE_EAT_4)(o(168, s), p, o, m)
+# define BOOST_PP_FOR_168(s, p, o, m) BOOST_PP_IF(p(169, s), m, BOOST_PP_TUPLE_EAT_2)(169, s) BOOST_PP_IF(p(169, s), BOOST_PP_FOR_169, BOOST_PP_TUPLE_EAT_4)(o(169, s), p, o, m)
+# define BOOST_PP_FOR_169(s, p, o, m) BOOST_PP_IF(p(170, s), m, BOOST_PP_TUPLE_EAT_2)(170, s) BOOST_PP_IF(p(170, s), BOOST_PP_FOR_170, BOOST_PP_TUPLE_EAT_4)(o(170, s), p, o, m)
+# define BOOST_PP_FOR_170(s, p, o, m) BOOST_PP_IF(p(171, s), m, BOOST_PP_TUPLE_EAT_2)(171, s) BOOST_PP_IF(p(171, s), BOOST_PP_FOR_171, BOOST_PP_TUPLE_EAT_4)(o(171, s), p, o, m)
+# define BOOST_PP_FOR_171(s, p, o, m) BOOST_PP_IF(p(172, s), m, BOOST_PP_TUPLE_EAT_2)(172, s) BOOST_PP_IF(p(172, s), BOOST_PP_FOR_172, BOOST_PP_TUPLE_EAT_4)(o(172, s), p, o, m)
+# define BOOST_PP_FOR_172(s, p, o, m) BOOST_PP_IF(p(173, s), m, BOOST_PP_TUPLE_EAT_2)(173, s) BOOST_PP_IF(p(173, s), BOOST_PP_FOR_173, BOOST_PP_TUPLE_EAT_4)(o(173, s), p, o, m)
+# define BOOST_PP_FOR_173(s, p, o, m) BOOST_PP_IF(p(174, s), m, BOOST_PP_TUPLE_EAT_2)(174, s) BOOST_PP_IF(p(174, s), BOOST_PP_FOR_174, BOOST_PP_TUPLE_EAT_4)(o(174, s), p, o, m)
+# define BOOST_PP_FOR_174(s, p, o, m) BOOST_PP_IF(p(175, s), m, BOOST_PP_TUPLE_EAT_2)(175, s) BOOST_PP_IF(p(175, s), BOOST_PP_FOR_175, BOOST_PP_TUPLE_EAT_4)(o(175, s), p, o, m)
+# define BOOST_PP_FOR_175(s, p, o, m) BOOST_PP_IF(p(176, s), m, BOOST_PP_TUPLE_EAT_2)(176, s) BOOST_PP_IF(p(176, s), BOOST_PP_FOR_176, BOOST_PP_TUPLE_EAT_4)(o(176, s), p, o, m)
+# define BOOST_PP_FOR_176(s, p, o, m) BOOST_PP_IF(p(177, s), m, BOOST_PP_TUPLE_EAT_2)(177, s) BOOST_PP_IF(p(177, s), BOOST_PP_FOR_177, BOOST_PP_TUPLE_EAT_4)(o(177, s), p, o, m)
+# define BOOST_PP_FOR_177(s, p, o, m) BOOST_PP_IF(p(178, s), m, BOOST_PP_TUPLE_EAT_2)(178, s) BOOST_PP_IF(p(178, s), BOOST_PP_FOR_178, BOOST_PP_TUPLE_EAT_4)(o(178, s), p, o, m)
+# define BOOST_PP_FOR_178(s, p, o, m) BOOST_PP_IF(p(179, s), m, BOOST_PP_TUPLE_EAT_2)(179, s) BOOST_PP_IF(p(179, s), BOOST_PP_FOR_179, BOOST_PP_TUPLE_EAT_4)(o(179, s), p, o, m)
+# define BOOST_PP_FOR_179(s, p, o, m) BOOST_PP_IF(p(180, s), m, BOOST_PP_TUPLE_EAT_2)(180, s) BOOST_PP_IF(p(180, s), BOOST_PP_FOR_180, BOOST_PP_TUPLE_EAT_4)(o(180, s), p, o, m)
+# define BOOST_PP_FOR_180(s, p, o, m) BOOST_PP_IF(p(181, s), m, BOOST_PP_TUPLE_EAT_2)(181, s) BOOST_PP_IF(p(181, s), BOOST_PP_FOR_181, BOOST_PP_TUPLE_EAT_4)(o(181, s), p, o, m)
+# define BOOST_PP_FOR_181(s, p, o, m) BOOST_PP_IF(p(182, s), m, BOOST_PP_TUPLE_EAT_2)(182, s) BOOST_PP_IF(p(182, s), BOOST_PP_FOR_182, BOOST_PP_TUPLE_EAT_4)(o(182, s), p, o, m)
+# define BOOST_PP_FOR_182(s, p, o, m) BOOST_PP_IF(p(183, s), m, BOOST_PP_TUPLE_EAT_2)(183, s) BOOST_PP_IF(p(183, s), BOOST_PP_FOR_183, BOOST_PP_TUPLE_EAT_4)(o(183, s), p, o, m)
+# define BOOST_PP_FOR_183(s, p, o, m) BOOST_PP_IF(p(184, s), m, BOOST_PP_TUPLE_EAT_2)(184, s) BOOST_PP_IF(p(184, s), BOOST_PP_FOR_184, BOOST_PP_TUPLE_EAT_4)(o(184, s), p, o, m)
+# define BOOST_PP_FOR_184(s, p, o, m) BOOST_PP_IF(p(185, s), m, BOOST_PP_TUPLE_EAT_2)(185, s) BOOST_PP_IF(p(185, s), BOOST_PP_FOR_185, BOOST_PP_TUPLE_EAT_4)(o(185, s), p, o, m)
+# define BOOST_PP_FOR_185(s, p, o, m) BOOST_PP_IF(p(186, s), m, BOOST_PP_TUPLE_EAT_2)(186, s) BOOST_PP_IF(p(186, s), BOOST_PP_FOR_186, BOOST_PP_TUPLE_EAT_4)(o(186, s), p, o, m)
+# define BOOST_PP_FOR_186(s, p, o, m) BOOST_PP_IF(p(187, s), m, BOOST_PP_TUPLE_EAT_2)(187, s) BOOST_PP_IF(p(187, s), BOOST_PP_FOR_187, BOOST_PP_TUPLE_EAT_4)(o(187, s), p, o, m)
+# define BOOST_PP_FOR_187(s, p, o, m) BOOST_PP_IF(p(188, s), m, BOOST_PP_TUPLE_EAT_2)(188, s) BOOST_PP_IF(p(188, s), BOOST_PP_FOR_188, BOOST_PP_TUPLE_EAT_4)(o(188, s), p, o, m)
+# define BOOST_PP_FOR_188(s, p, o, m) BOOST_PP_IF(p(189, s), m, BOOST_PP_TUPLE_EAT_2)(189, s) BOOST_PP_IF(p(189, s), BOOST_PP_FOR_189, BOOST_PP_TUPLE_EAT_4)(o(189, s), p, o, m)
+# define BOOST_PP_FOR_189(s, p, o, m) BOOST_PP_IF(p(190, s), m, BOOST_PP_TUPLE_EAT_2)(190, s) BOOST_PP_IF(p(190, s), BOOST_PP_FOR_190, BOOST_PP_TUPLE_EAT_4)(o(190, s), p, o, m)
+# define BOOST_PP_FOR_190(s, p, o, m) BOOST_PP_IF(p(191, s), m, BOOST_PP_TUPLE_EAT_2)(191, s) BOOST_PP_IF(p(191, s), BOOST_PP_FOR_191, BOOST_PP_TUPLE_EAT_4)(o(191, s), p, o, m)
+# define BOOST_PP_FOR_191(s, p, o, m) BOOST_PP_IF(p(192, s), m, BOOST_PP_TUPLE_EAT_2)(192, s) BOOST_PP_IF(p(192, s), BOOST_PP_FOR_192, BOOST_PP_TUPLE_EAT_4)(o(192, s), p, o, m)
+# define BOOST_PP_FOR_192(s, p, o, m) BOOST_PP_IF(p(193, s), m, BOOST_PP_TUPLE_EAT_2)(193, s) BOOST_PP_IF(p(193, s), BOOST_PP_FOR_193, BOOST_PP_TUPLE_EAT_4)(o(193, s), p, o, m)
+# define BOOST_PP_FOR_193(s, p, o, m) BOOST_PP_IF(p(194, s), m, BOOST_PP_TUPLE_EAT_2)(194, s) BOOST_PP_IF(p(194, s), BOOST_PP_FOR_194, BOOST_PP_TUPLE_EAT_4)(o(194, s), p, o, m)
+# define BOOST_PP_FOR_194(s, p, o, m) BOOST_PP_IF(p(195, s), m, BOOST_PP_TUPLE_EAT_2)(195, s) BOOST_PP_IF(p(195, s), BOOST_PP_FOR_195, BOOST_PP_TUPLE_EAT_4)(o(195, s), p, o, m)
+# define BOOST_PP_FOR_195(s, p, o, m) BOOST_PP_IF(p(196, s), m, BOOST_PP_TUPLE_EAT_2)(196, s) BOOST_PP_IF(p(196, s), BOOST_PP_FOR_196, BOOST_PP_TUPLE_EAT_4)(o(196, s), p, o, m)
+# define BOOST_PP_FOR_196(s, p, o, m) BOOST_PP_IF(p(197, s), m, BOOST_PP_TUPLE_EAT_2)(197, s) BOOST_PP_IF(p(197, s), BOOST_PP_FOR_197, BOOST_PP_TUPLE_EAT_4)(o(197, s), p, o, m)
+# define BOOST_PP_FOR_197(s, p, o, m) BOOST_PP_IF(p(198, s), m, BOOST_PP_TUPLE_EAT_2)(198, s) BOOST_PP_IF(p(198, s), BOOST_PP_FOR_198, BOOST_PP_TUPLE_EAT_4)(o(198, s), p, o, m)
+# define BOOST_PP_FOR_198(s, p, o, m) BOOST_PP_IF(p(199, s), m, BOOST_PP_TUPLE_EAT_2)(199, s) BOOST_PP_IF(p(199, s), BOOST_PP_FOR_199, BOOST_PP_TUPLE_EAT_4)(o(199, s), p, o, m)
+# define BOOST_PP_FOR_199(s, p, o, m) BOOST_PP_IF(p(200, s), m, BOOST_PP_TUPLE_EAT_2)(200, s) BOOST_PP_IF(p(200, s), BOOST_PP_FOR_200, BOOST_PP_TUPLE_EAT_4)(o(200, s), p, o, m)
+# define BOOST_PP_FOR_200(s, p, o, m) BOOST_PP_IF(p(201, s), m, BOOST_PP_TUPLE_EAT_2)(201, s) BOOST_PP_IF(p(201, s), BOOST_PP_FOR_201, BOOST_PP_TUPLE_EAT_4)(o(201, s), p, o, m)
+# define BOOST_PP_FOR_201(s, p, o, m) BOOST_PP_IF(p(202, s), m, BOOST_PP_TUPLE_EAT_2)(202, s) BOOST_PP_IF(p(202, s), BOOST_PP_FOR_202, BOOST_PP_TUPLE_EAT_4)(o(202, s), p, o, m)
+# define BOOST_PP_FOR_202(s, p, o, m) BOOST_PP_IF(p(203, s), m, BOOST_PP_TUPLE_EAT_2)(203, s) BOOST_PP_IF(p(203, s), BOOST_PP_FOR_203, BOOST_PP_TUPLE_EAT_4)(o(203, s), p, o, m)
+# define BOOST_PP_FOR_203(s, p, o, m) BOOST_PP_IF(p(204, s), m, BOOST_PP_TUPLE_EAT_2)(204, s) BOOST_PP_IF(p(204, s), BOOST_PP_FOR_204, BOOST_PP_TUPLE_EAT_4)(o(204, s), p, o, m)
+# define BOOST_PP_FOR_204(s, p, o, m) BOOST_PP_IF(p(205, s), m, BOOST_PP_TUPLE_EAT_2)(205, s) BOOST_PP_IF(p(205, s), BOOST_PP_FOR_205, BOOST_PP_TUPLE_EAT_4)(o(205, s), p, o, m)
+# define BOOST_PP_FOR_205(s, p, o, m) BOOST_PP_IF(p(206, s), m, BOOST_PP_TUPLE_EAT_2)(206, s) BOOST_PP_IF(p(206, s), BOOST_PP_FOR_206, BOOST_PP_TUPLE_EAT_4)(o(206, s), p, o, m)
+# define BOOST_PP_FOR_206(s, p, o, m) BOOST_PP_IF(p(207, s), m, BOOST_PP_TUPLE_EAT_2)(207, s) BOOST_PP_IF(p(207, s), BOOST_PP_FOR_207, BOOST_PP_TUPLE_EAT_4)(o(207, s), p, o, m)
+# define BOOST_PP_FOR_207(s, p, o, m) BOOST_PP_IF(p(208, s), m, BOOST_PP_TUPLE_EAT_2)(208, s) BOOST_PP_IF(p(208, s), BOOST_PP_FOR_208, BOOST_PP_TUPLE_EAT_4)(o(208, s), p, o, m)
+# define BOOST_PP_FOR_208(s, p, o, m) BOOST_PP_IF(p(209, s), m, BOOST_PP_TUPLE_EAT_2)(209, s) BOOST_PP_IF(p(209, s), BOOST_PP_FOR_209, BOOST_PP_TUPLE_EAT_4)(o(209, s), p, o, m)
+# define BOOST_PP_FOR_209(s, p, o, m) BOOST_PP_IF(p(210, s), m, BOOST_PP_TUPLE_EAT_2)(210, s) BOOST_PP_IF(p(210, s), BOOST_PP_FOR_210, BOOST_PP_TUPLE_EAT_4)(o(210, s), p, o, m)
+# define BOOST_PP_FOR_210(s, p, o, m) BOOST_PP_IF(p(211, s), m, BOOST_PP_TUPLE_EAT_2)(211, s) BOOST_PP_IF(p(211, s), BOOST_PP_FOR_211, BOOST_PP_TUPLE_EAT_4)(o(211, s), p, o, m)
+# define BOOST_PP_FOR_211(s, p, o, m) BOOST_PP_IF(p(212, s), m, BOOST_PP_TUPLE_EAT_2)(212, s) BOOST_PP_IF(p(212, s), BOOST_PP_FOR_212, BOOST_PP_TUPLE_EAT_4)(o(212, s), p, o, m)
+# define BOOST_PP_FOR_212(s, p, o, m) BOOST_PP_IF(p(213, s), m, BOOST_PP_TUPLE_EAT_2)(213, s) BOOST_PP_IF(p(213, s), BOOST_PP_FOR_213, BOOST_PP_TUPLE_EAT_4)(o(213, s), p, o, m)
+# define BOOST_PP_FOR_213(s, p, o, m) BOOST_PP_IF(p(214, s), m, BOOST_PP_TUPLE_EAT_2)(214, s) BOOST_PP_IF(p(214, s), BOOST_PP_FOR_214, BOOST_PP_TUPLE_EAT_4)(o(214, s), p, o, m)
+# define BOOST_PP_FOR_214(s, p, o, m) BOOST_PP_IF(p(215, s), m, BOOST_PP_TUPLE_EAT_2)(215, s) BOOST_PP_IF(p(215, s), BOOST_PP_FOR_215, BOOST_PP_TUPLE_EAT_4)(o(215, s), p, o, m)
+# define BOOST_PP_FOR_215(s, p, o, m) BOOST_PP_IF(p(216, s), m, BOOST_PP_TUPLE_EAT_2)(216, s) BOOST_PP_IF(p(216, s), BOOST_PP_FOR_216, BOOST_PP_TUPLE_EAT_4)(o(216, s), p, o, m)
+# define BOOST_PP_FOR_216(s, p, o, m) BOOST_PP_IF(p(217, s), m, BOOST_PP_TUPLE_EAT_2)(217, s) BOOST_PP_IF(p(217, s), BOOST_PP_FOR_217, BOOST_PP_TUPLE_EAT_4)(o(217, s), p, o, m)
+# define BOOST_PP_FOR_217(s, p, o, m) BOOST_PP_IF(p(218, s), m, BOOST_PP_TUPLE_EAT_2)(218, s) BOOST_PP_IF(p(218, s), BOOST_PP_FOR_218, BOOST_PP_TUPLE_EAT_4)(o(218, s), p, o, m)
+# define BOOST_PP_FOR_218(s, p, o, m) BOOST_PP_IF(p(219, s), m, BOOST_PP_TUPLE_EAT_2)(219, s) BOOST_PP_IF(p(219, s), BOOST_PP_FOR_219, BOOST_PP_TUPLE_EAT_4)(o(219, s), p, o, m)
+# define BOOST_PP_FOR_219(s, p, o, m) BOOST_PP_IF(p(220, s), m, BOOST_PP_TUPLE_EAT_2)(220, s) BOOST_PP_IF(p(220, s), BOOST_PP_FOR_220, BOOST_PP_TUPLE_EAT_4)(o(220, s), p, o, m)
+# define BOOST_PP_FOR_220(s, p, o, m) BOOST_PP_IF(p(221, s), m, BOOST_PP_TUPLE_EAT_2)(221, s) BOOST_PP_IF(p(221, s), BOOST_PP_FOR_221, BOOST_PP_TUPLE_EAT_4)(o(221, s), p, o, m)
+# define BOOST_PP_FOR_221(s, p, o, m) BOOST_PP_IF(p(222, s), m, BOOST_PP_TUPLE_EAT_2)(222, s) BOOST_PP_IF(p(222, s), BOOST_PP_FOR_222, BOOST_PP_TUPLE_EAT_4)(o(222, s), p, o, m)
+# define BOOST_PP_FOR_222(s, p, o, m) BOOST_PP_IF(p(223, s), m, BOOST_PP_TUPLE_EAT_2)(223, s) BOOST_PP_IF(p(223, s), BOOST_PP_FOR_223, BOOST_PP_TUPLE_EAT_4)(o(223, s), p, o, m)
+# define BOOST_PP_FOR_223(s, p, o, m) BOOST_PP_IF(p(224, s), m, BOOST_PP_TUPLE_EAT_2)(224, s) BOOST_PP_IF(p(224, s), BOOST_PP_FOR_224, BOOST_PP_TUPLE_EAT_4)(o(224, s), p, o, m)
+# define BOOST_PP_FOR_224(s, p, o, m) BOOST_PP_IF(p(225, s), m, BOOST_PP_TUPLE_EAT_2)(225, s) BOOST_PP_IF(p(225, s), BOOST_PP_FOR_225, BOOST_PP_TUPLE_EAT_4)(o(225, s), p, o, m)
+# define BOOST_PP_FOR_225(s, p, o, m) BOOST_PP_IF(p(226, s), m, BOOST_PP_TUPLE_EAT_2)(226, s) BOOST_PP_IF(p(226, s), BOOST_PP_FOR_226, BOOST_PP_TUPLE_EAT_4)(o(226, s), p, o, m)
+# define BOOST_PP_FOR_226(s, p, o, m) BOOST_PP_IF(p(227, s), m, BOOST_PP_TUPLE_EAT_2)(227, s) BOOST_PP_IF(p(227, s), BOOST_PP_FOR_227, BOOST_PP_TUPLE_EAT_4)(o(227, s), p, o, m)
+# define BOOST_PP_FOR_227(s, p, o, m) BOOST_PP_IF(p(228, s), m, BOOST_PP_TUPLE_EAT_2)(228, s) BOOST_PP_IF(p(228, s), BOOST_PP_FOR_228, BOOST_PP_TUPLE_EAT_4)(o(228, s), p, o, m)
+# define BOOST_PP_FOR_228(s, p, o, m) BOOST_PP_IF(p(229, s), m, BOOST_PP_TUPLE_EAT_2)(229, s) BOOST_PP_IF(p(229, s), BOOST_PP_FOR_229, BOOST_PP_TUPLE_EAT_4)(o(229, s), p, o, m)
+# define BOOST_PP_FOR_229(s, p, o, m) BOOST_PP_IF(p(230, s), m, BOOST_PP_TUPLE_EAT_2)(230, s) BOOST_PP_IF(p(230, s), BOOST_PP_FOR_230, BOOST_PP_TUPLE_EAT_4)(o(230, s), p, o, m)
+# define BOOST_PP_FOR_230(s, p, o, m) BOOST_PP_IF(p(231, s), m, BOOST_PP_TUPLE_EAT_2)(231, s) BOOST_PP_IF(p(231, s), BOOST_PP_FOR_231, BOOST_PP_TUPLE_EAT_4)(o(231, s), p, o, m)
+# define BOOST_PP_FOR_231(s, p, o, m) BOOST_PP_IF(p(232, s), m, BOOST_PP_TUPLE_EAT_2)(232, s) BOOST_PP_IF(p(232, s), BOOST_PP_FOR_232, BOOST_PP_TUPLE_EAT_4)(o(232, s), p, o, m)
+# define BOOST_PP_FOR_232(s, p, o, m) BOOST_PP_IF(p(233, s), m, BOOST_PP_TUPLE_EAT_2)(233, s) BOOST_PP_IF(p(233, s), BOOST_PP_FOR_233, BOOST_PP_TUPLE_EAT_4)(o(233, s), p, o, m)
+# define BOOST_PP_FOR_233(s, p, o, m) BOOST_PP_IF(p(234, s), m, BOOST_PP_TUPLE_EAT_2)(234, s) BOOST_PP_IF(p(234, s), BOOST_PP_FOR_234, BOOST_PP_TUPLE_EAT_4)(o(234, s), p, o, m)
+# define BOOST_PP_FOR_234(s, p, o, m) BOOST_PP_IF(p(235, s), m, BOOST_PP_TUPLE_EAT_2)(235, s) BOOST_PP_IF(p(235, s), BOOST_PP_FOR_235, BOOST_PP_TUPLE_EAT_4)(o(235, s), p, o, m)
+# define BOOST_PP_FOR_235(s, p, o, m) BOOST_PP_IF(p(236, s), m, BOOST_PP_TUPLE_EAT_2)(236, s) BOOST_PP_IF(p(236, s), BOOST_PP_FOR_236, BOOST_PP_TUPLE_EAT_4)(o(236, s), p, o, m)
+# define BOOST_PP_FOR_236(s, p, o, m) BOOST_PP_IF(p(237, s), m, BOOST_PP_TUPLE_EAT_2)(237, s) BOOST_PP_IF(p(237, s), BOOST_PP_FOR_237, BOOST_PP_TUPLE_EAT_4)(o(237, s), p, o, m)
+# define BOOST_PP_FOR_237(s, p, o, m) BOOST_PP_IF(p(238, s), m, BOOST_PP_TUPLE_EAT_2)(238, s) BOOST_PP_IF(p(238, s), BOOST_PP_FOR_238, BOOST_PP_TUPLE_EAT_4)(o(238, s), p, o, m)
+# define BOOST_PP_FOR_238(s, p, o, m) BOOST_PP_IF(p(239, s), m, BOOST_PP_TUPLE_EAT_2)(239, s) BOOST_PP_IF(p(239, s), BOOST_PP_FOR_239, BOOST_PP_TUPLE_EAT_4)(o(239, s), p, o, m)
+# define BOOST_PP_FOR_239(s, p, o, m) BOOST_PP_IF(p(240, s), m, BOOST_PP_TUPLE_EAT_2)(240, s) BOOST_PP_IF(p(240, s), BOOST_PP_FOR_240, BOOST_PP_TUPLE_EAT_4)(o(240, s), p, o, m)
+# define BOOST_PP_FOR_240(s, p, o, m) BOOST_PP_IF(p(241, s), m, BOOST_PP_TUPLE_EAT_2)(241, s) BOOST_PP_IF(p(241, s), BOOST_PP_FOR_241, BOOST_PP_TUPLE_EAT_4)(o(241, s), p, o, m)
+# define BOOST_PP_FOR_241(s, p, o, m) BOOST_PP_IF(p(242, s), m, BOOST_PP_TUPLE_EAT_2)(242, s) BOOST_PP_IF(p(242, s), BOOST_PP_FOR_242, BOOST_PP_TUPLE_EAT_4)(o(242, s), p, o, m)
+# define BOOST_PP_FOR_242(s, p, o, m) BOOST_PP_IF(p(243, s), m, BOOST_PP_TUPLE_EAT_2)(243, s) BOOST_PP_IF(p(243, s), BOOST_PP_FOR_243, BOOST_PP_TUPLE_EAT_4)(o(243, s), p, o, m)
+# define BOOST_PP_FOR_243(s, p, o, m) BOOST_PP_IF(p(244, s), m, BOOST_PP_TUPLE_EAT_2)(244, s) BOOST_PP_IF(p(244, s), BOOST_PP_FOR_244, BOOST_PP_TUPLE_EAT_4)(o(244, s), p, o, m)
+# define BOOST_PP_FOR_244(s, p, o, m) BOOST_PP_IF(p(245, s), m, BOOST_PP_TUPLE_EAT_2)(245, s) BOOST_PP_IF(p(245, s), BOOST_PP_FOR_245, BOOST_PP_TUPLE_EAT_4)(o(245, s), p, o, m)
+# define BOOST_PP_FOR_245(s, p, o, m) BOOST_PP_IF(p(246, s), m, BOOST_PP_TUPLE_EAT_2)(246, s) BOOST_PP_IF(p(246, s), BOOST_PP_FOR_246, BOOST_PP_TUPLE_EAT_4)(o(246, s), p, o, m)
+# define BOOST_PP_FOR_246(s, p, o, m) BOOST_PP_IF(p(247, s), m, BOOST_PP_TUPLE_EAT_2)(247, s) BOOST_PP_IF(p(247, s), BOOST_PP_FOR_247, BOOST_PP_TUPLE_EAT_4)(o(247, s), p, o, m)
+# define BOOST_PP_FOR_247(s, p, o, m) BOOST_PP_IF(p(248, s), m, BOOST_PP_TUPLE_EAT_2)(248, s) BOOST_PP_IF(p(248, s), BOOST_PP_FOR_248, BOOST_PP_TUPLE_EAT_4)(o(248, s), p, o, m)
+# define BOOST_PP_FOR_248(s, p, o, m) BOOST_PP_IF(p(249, s), m, BOOST_PP_TUPLE_EAT_2)(249, s) BOOST_PP_IF(p(249, s), BOOST_PP_FOR_249, BOOST_PP_TUPLE_EAT_4)(o(249, s), p, o, m)
+# define BOOST_PP_FOR_249(s, p, o, m) BOOST_PP_IF(p(250, s), m, BOOST_PP_TUPLE_EAT_2)(250, s) BOOST_PP_IF(p(250, s), BOOST_PP_FOR_250, BOOST_PP_TUPLE_EAT_4)(o(250, s), p, o, m)
+# define BOOST_PP_FOR_250(s, p, o, m) BOOST_PP_IF(p(251, s), m, BOOST_PP_TUPLE_EAT_2)(251, s) BOOST_PP_IF(p(251, s), BOOST_PP_FOR_251, BOOST_PP_TUPLE_EAT_4)(o(251, s), p, o, m)
+# define BOOST_PP_FOR_251(s, p, o, m) BOOST_PP_IF(p(252, s), m, BOOST_PP_TUPLE_EAT_2)(252, s) BOOST_PP_IF(p(252, s), BOOST_PP_FOR_252, BOOST_PP_TUPLE_EAT_4)(o(252, s), p, o, m)
+# define BOOST_PP_FOR_252(s, p, o, m) BOOST_PP_IF(p(253, s), m, BOOST_PP_TUPLE_EAT_2)(253, s) BOOST_PP_IF(p(253, s), BOOST_PP_FOR_253, BOOST_PP_TUPLE_EAT_4)(o(253, s), p, o, m)
+# define BOOST_PP_FOR_253(s, p, o, m) BOOST_PP_IF(p(254, s), m, BOOST_PP_TUPLE_EAT_2)(254, s) BOOST_PP_IF(p(254, s), BOOST_PP_FOR_254, BOOST_PP_TUPLE_EAT_4)(o(254, s), p, o, m)
+# define BOOST_PP_FOR_254(s, p, o, m) BOOST_PP_IF(p(255, s), m, BOOST_PP_TUPLE_EAT_2)(255, s) BOOST_PP_IF(p(255, s), BOOST_PP_FOR_255, BOOST_PP_TUPLE_EAT_4)(o(255, s), p, o, m)
+# define BOOST_PP_FOR_255(s, p, o, m) BOOST_PP_IF(p(256, s), m, BOOST_PP_TUPLE_EAT_2)(256, s) BOOST_PP_IF(p(256, s), BOOST_PP_FOR_256, BOOST_PP_TUPLE_EAT_4)(o(256, s), p, o, m)
+# define BOOST_PP_FOR_256(s, p, o, m) BOOST_PP_IF(p(257, s), m, BOOST_PP_TUPLE_EAT_2)(257, s) BOOST_PP_IF(p(257, s), BOOST_PP_FOR_257, BOOST_PP_TUPLE_EAT_4)(o(257, s), p, o, m)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum.hpp
new file mode 100644
index 0000000..0198cd9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum.hpp
@@ -0,0 +1,66 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM */
+#
+# if 0
+# define BOOST_PP_ENUM(count, macro, data)
+# endif
+#
+# define BOOST_PP_ENUM BOOST_PP_CAT(BOOST_PP_ENUM_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))
+# define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))
+# define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))
+# else
+# define BOOST_PP_ENUM_1(c, m, d) BOOST_PP_ENUM_1_I(c, m, d)
+# define BOOST_PP_ENUM_2(c, m, d) BOOST_PP_ENUM_2_I(c, m, d)
+# define BOOST_PP_ENUM_3(c, m, d) BOOST_PP_ENUM_3_I(c, m, d)
+# define BOOST_PP_ENUM_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_M_1, (m, d))
+# define BOOST_PP_ENUM_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_M_2, (m, d))
+# define BOOST_PP_ENUM_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_M_3, (m, d))
+# endif
+#
+# define BOOST_PP_ENUM_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_M_1_IM(z, n, im) BOOST_PP_ENUM_M_1_I(z, n, im)
+# define BOOST_PP_ENUM_M_2_IM(z, n, im) BOOST_PP_ENUM_M_2_I(z, n, im)
+# define BOOST_PP_ENUM_M_3_IM(z, n, im) BOOST_PP_ENUM_M_3_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_M_1(z, n, md) BOOST_PP_ENUM_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_M_2(z, n, md) BOOST_PP_ENUM_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_M_3(z, n, md) BOOST_PP_ENUM_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define BOOST_PP_ENUM_M_1_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)
+# define BOOST_PP_ENUM_M_2_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)
+# define BOOST_PP_ENUM_M_3_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, n, d)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_binary_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_binary_params.hpp
new file mode 100644
index 0000000..a2c1048
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_binary_params.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_BINARY_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_BINARY_PARAMS_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_BINARY_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_BINARY_PARAMS(count, p1, p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS(count, p1, p2) BOOST_PP_ENUM_BINARY_PARAMS_I(count, p1, p2)
+# define BOOST_PP_ENUM_BINARY_PARAMS_I(count, p1, p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_BINARY_PARAMS_M_IM(z, n, BOOST_PP_TUPLE_REM_2 pp)
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_IM(z, n, im) BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, pp), BOOST_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2)
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_II(z, n, p1, p2) BOOST_PP_COMMA_IF(n) p1 ## n p2 ## n
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(p1, n) BOOST_PP_CAT(p2, n)
+# endif
+#
+# /* BOOST_PP_ENUM_BINARY_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_ENUM_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define BOOST_PP_ENUM_BINARY_PARAMS_Z_I(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params.hpp
new file mode 100644
index 0000000..65a2369
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params.hpp
@@ -0,0 +1,41 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_ENUM_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_ENUM_PARAMS_I(count, param)
+# define BOOST_PP_ENUM_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
+# endif
+#
+# define BOOST_PP_ENUM_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) param ## n
+#
+# /* BOOST_PP_ENUM_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_ENUM_PARAMS_Z_I(z, count, param)
+# define BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp
new file mode 100644
index 0000000..7496df6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp
@@ -0,0 +1,25 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_A_DEFAULT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/intercept.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#
+# /* BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT */
+#
+# define BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(count, param, def) BOOST_PP_ENUM_BINARY_PARAMS(count, param, = def BOOST_PP_INTERCEPT)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp
new file mode 100644
index 0000000..fa0106f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp
@@ -0,0 +1,24 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_DEFAULTS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_WITH_DEFAULTS_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#
+# /* BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS */
+#
+# define BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(count, param, def) BOOST_PP_ENUM_BINARY_PARAMS(count, param, = def)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted.hpp
new file mode 100644
index 0000000..d5b006f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted.hpp
@@ -0,0 +1,68 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_SHIFTED */
+#
+# if 0
+# define BOOST_PP_ENUM_SHIFTED(count, macro, data)
+# endif
+#
+# define BOOST_PP_ENUM_SHIFTED BOOST_PP_CAT(BOOST_PP_ENUM_SHIFTED_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_1(c, m, d) BOOST_PP_REPEAT_1(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_1, (m, d))
+# define BOOST_PP_ENUM_SHIFTED_2(c, m, d) BOOST_PP_REPEAT_2(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_2, (m, d))
+# define BOOST_PP_ENUM_SHIFTED_3(c, m, d) BOOST_PP_REPEAT_3(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_3, (m, d))
+# else
+# define BOOST_PP_ENUM_SHIFTED_1(c, m, d) BOOST_PP_ENUM_SHIFTED_1_I(c, m, d)
+# define BOOST_PP_ENUM_SHIFTED_2(c, m, d) BOOST_PP_ENUM_SHIFTED_1_2(c, m, d)
+# define BOOST_PP_ENUM_SHIFTED_3(c, m, d) BOOST_PP_ENUM_SHIFTED_1_3(c, m, d)
+# define BOOST_PP_ENUM_SHIFTED_1_I(c, m, d) BOOST_PP_REPEAT_1(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_1, (m, d))
+# define BOOST_PP_ENUM_SHIFTED_2_I(c, m, d) BOOST_PP_REPEAT_2(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_2, (m, d))
+# define BOOST_PP_ENUM_SHIFTED_3_I(c, m, d) BOOST_PP_REPEAT_3(BOOST_PP_DEC(c), BOOST_PP_ENUM_SHIFTED_M_3, (m, d))
+# endif
+#
+# define BOOST_PP_ENUM_SHIFTED_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_SHIFTED_M_1(z, n, md) BOOST_PP_ENUM_SHIFTED_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_SHIFTED_M_2(z, n, md) BOOST_PP_ENUM_SHIFTED_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_SHIFTED_M_3(z, n, md) BOOST_PP_ENUM_SHIFTED_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_SHIFTED_M_1_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_M_1_I(z, n, im)
+# define BOOST_PP_ENUM_SHIFTED_M_2_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_M_2_I(z, n, im)
+# define BOOST_PP_ENUM_SHIFTED_M_3_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_M_3_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_SHIFTED_M_1(z, n, md) BOOST_PP_ENUM_SHIFTED_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_SHIFTED_M_2(z, n, md) BOOST_PP_ENUM_SHIFTED_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_SHIFTED_M_3(z, n, md) BOOST_PP_ENUM_SHIFTED_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define BOOST_PP_ENUM_SHIFTED_M_1_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, BOOST_PP_INC(n), d)
+# define BOOST_PP_ENUM_SHIFTED_M_2_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, BOOST_PP_INC(n), d)
+# define BOOST_PP_ENUM_SHIFTED_M_3_I(z, n, m, d) BOOST_PP_COMMA_IF(n) m(z, BOOST_PP_INC(n), d)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp
new file mode 100644
index 0000000..f3d20fc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp
@@ -0,0 +1,51 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_BINARY_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_BINARY_PARAMS_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS(count, p1, p2) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_I(count, p1, p2)
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_I(count, p1, p2) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_IM(z, n, BOOST_PP_TUPLE_REM_2 pp)
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_IM(z, n, im) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, pp), BOOST_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(p1, BOOST_PP_INC(n)) BOOST_PP_CAT(p2, BOOST_PP_INC(n))
+#
+# /* BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z_I(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted_params.hpp
new file mode 100644
index 0000000..88b2bf4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_shifted_params.hpp
@@ -0,0 +1,44 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/punctuation/comma_if.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_ENUM_SHIFTED_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param)
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# endif
+#
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
+#
+# /* BOOST_PP_ENUM_SHIFTED_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param)
+# define BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing.hpp
new file mode 100644
index 0000000..20af2d5
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing.hpp
@@ -0,0 +1,63 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_TRAILING */
+#
+# if 0
+# define BOOST_PP_ENUM_TRAILING(count, macro, data)
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_1(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_TRAILING_M_1, (m, d))
+# define BOOST_PP_ENUM_TRAILING_2(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_TRAILING_M_2, (m, d))
+# define BOOST_PP_ENUM_TRAILING_3(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_TRAILING_M_3, (m, d))
+# else
+# define BOOST_PP_ENUM_TRAILING_1(c, m, d) BOOST_PP_ENUM_TRAILING_1_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_2(c, m, d) BOOST_PP_ENUM_TRAILING_2_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_3(c, m, d) BOOST_PP_ENUM_TRAILING_3_I(c, m, d)
+# define BOOST_PP_ENUM_TRAILING_1_I(c, m, d) BOOST_PP_REPEAT_1(c, BOOST_PP_ENUM_TRAILING_M_1, (m, d))
+# define BOOST_PP_ENUM_TRAILING_2_I(c, m, d) BOOST_PP_REPEAT_2(c, BOOST_PP_ENUM_TRAILING_M_2, (m, d))
+# define BOOST_PP_ENUM_TRAILING_3_I(c, m, d) BOOST_PP_REPEAT_3(c, BOOST_PP_ENUM_TRAILING_M_3, (m, d))
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_TRAILING_M_1(z, n, md) BOOST_PP_ENUM_TRAILING_M_1_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_2(z, n, md) BOOST_PP_ENUM_TRAILING_M_2_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_3(z, n, md) BOOST_PP_ENUM_TRAILING_M_3_IM(z, n, BOOST_PP_TUPLE_REM_2 md)
+# define BOOST_PP_ENUM_TRAILING_M_1_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_1_I(z, n, im)
+# define BOOST_PP_ENUM_TRAILING_M_2_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_2_I(z, n, im)
+# define BOOST_PP_ENUM_TRAILING_M_3_IM(z, n, im) BOOST_PP_ENUM_TRAILING_M_3_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_TRAILING_M_1(z, n, md) BOOST_PP_ENUM_TRAILING_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_TRAILING_M_2(z, n, md) BOOST_PP_ENUM_TRAILING_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# define BOOST_PP_ENUM_TRAILING_M_3(z, n, md) BOOST_PP_ENUM_TRAILING_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, md), BOOST_PP_TUPLE_ELEM(2, 1, md))
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_M_1_I(z, n, m, d) , m(z, n, d)
+# define BOOST_PP_ENUM_TRAILING_M_2_I(z, n, m, d) , m(z, n, d)
+# define BOOST_PP_ENUM_TRAILING_M_3_I(z, n, m, d) , m(z, n, d)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp
new file mode 100644
index 0000000..e201b69
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp
@@ -0,0 +1,53 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_BINARY_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_BINARY_PARAMS_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_ENUM_TRAILING_BINARY_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(count, p1, p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS(count, p1, p2) BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_I(count, p1, p2)
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_I(count, p1, p2) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_IM(z, n, BOOST_PP_TUPLE_REM_2 pp)
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_IM(z, n, im) BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, im)
+# else
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M(z, n, pp) BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, BOOST_PP_TUPLE_ELEM(2, 0, pp), BOOST_PP_TUPLE_ELEM(2, 1, pp))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, p1, p2) BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_II(z, n, p1, p2)
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_II(z, n, p1, p2) , p1 ## n p2 ## n
+# else
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M_I(z, n, p1, p2) , BOOST_PP_CAT(p1, n) BOOST_PP_CAT(p2, n)
+# endif
+#
+# /* BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# else
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z(z, count, p1, p2) BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z_I(z, count, p1, p2)
+# define BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z_I(z, count, p1, p2) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_M, (p1, p2))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing_params.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing_params.hpp
new file mode 100644
index 0000000..f7520db
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/enum_trailing_params.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
+# define BOOST_PREPROCESSOR_REPETITION_ENUM_TRAILING_PARAMS_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#
+# /* BOOST_PP_ENUM_TRAILING_PARAMS */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_TRAILING_PARAMS(count, param) BOOST_PP_ENUM_TRAILING_PARAMS_I(count, param)
+# define BOOST_PP_ENUM_TRAILING_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# endif
+#
+# define BOOST_PP_ENUM_TRAILING_PARAMS_M(z, n, param) , param ## n
+#
+# /* BOOST_PP_ENUM_TRAILING_PARAMS_Z */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# else
+# define BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, count, param) BOOST_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param)
+# define BOOST_PP_ENUM_TRAILING_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_TRAILING_PARAMS_M, param)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/for.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/for.hpp
new file mode 100644
index 0000000..c38946b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/for.hpp
@@ -0,0 +1,324 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_FOR_HPP
+# define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+#
+# /* BOOST_PP_FOR */
+#
+# if 0
+# define BOOST_PP_FOR(state, pred, op, macro)
+# endif
+#
+# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
+#
+# define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
+#
+# define BOOST_PP_FOR_SR_P(r, s) s
+# define BOOST_PP_FOR_SR_O(r, s) 0
+# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# include <boost/preprocessor/repetition/detail/edg/for.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# include <boost/preprocessor/repetition/detail/msvc/for.hpp>
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# include <boost/preprocessor/repetition/detail/dmc/for.hpp>
+# else
+# include <boost/preprocessor/repetition/detail/for.hpp>
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_FOR_257_PR(s, p) BOOST_PP_BOOL(p##(257, s))
+# else
+# define BOOST_PP_FOR_257_PR(s, p) BOOST_PP_BOOL(p(257, s))
+# endif
+
+# define BOOST_PP_FOR_257_ERROR() BOOST_PP_ERROR(0x0002)
+# define BOOST_PP_FOR_257(s, p, o, m) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_FOR_257_PR(s,p), \
+ BOOST_PP_FOR_257_ERROR, \
+ BOOST_PP_EMPTY \
+ ) \
+ () \
+/**/
+// # define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002)
+#
+# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0
+# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/repeat.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/repeat.hpp
new file mode 100644
index 0000000..0172738
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/repeat.hpp
@@ -0,0 +1,825 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
+# define BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_REPEAT */
+#
+# if 0
+# define BOOST_PP_REPEAT(count, macro, data)
+# endif
+#
+# define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))
+#
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_1(c, m, d) 0
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_2(c, m, d) 0
+# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_3(c, m, d) 0
+#
+# define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
+# define BOOST_PP_REPEAT_2(c, m, d) BOOST_PP_REPEAT_2_I(c, m, d)
+# define BOOST_PP_REPEAT_3(c, m, d) BOOST_PP_REPEAT_3_I(c, m, d)
+# define BOOST_PP_REPEAT_4(c, m, d) BOOST_PP_ERROR(0x0003)
+#
+# define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
+# define BOOST_PP_REPEAT_2_I(c, m, d) BOOST_PP_REPEAT_2_ ## c(m, d)
+# define BOOST_PP_REPEAT_3_I(c, m, d) BOOST_PP_REPEAT_3_ ## c(m, d)
+#
+# define BOOST_PP_REPEAT_1ST BOOST_PP_REPEAT_1
+# define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2
+# define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3
+#
+# define BOOST_PP_REPEAT_1_0(m, d)
+# define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
+# define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
+# define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
+# define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
+# define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
+# define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
+# define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
+# define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
+# define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
+# define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
+# define BOOST_PP_REPEAT_1_11(m, d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d)
+# define BOOST_PP_REPEAT_1_12(m, d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d)
+# define BOOST_PP_REPEAT_1_13(m, d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d)
+# define BOOST_PP_REPEAT_1_14(m, d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d)
+# define BOOST_PP_REPEAT_1_15(m, d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d)
+# define BOOST_PP_REPEAT_1_16(m, d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d)
+# define BOOST_PP_REPEAT_1_17(m, d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d)
+# define BOOST_PP_REPEAT_1_18(m, d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d)
+# define BOOST_PP_REPEAT_1_19(m, d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d)
+# define BOOST_PP_REPEAT_1_20(m, d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d)
+# define BOOST_PP_REPEAT_1_21(m, d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d)
+# define BOOST_PP_REPEAT_1_22(m, d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d)
+# define BOOST_PP_REPEAT_1_23(m, d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d)
+# define BOOST_PP_REPEAT_1_24(m, d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d)
+# define BOOST_PP_REPEAT_1_25(m, d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d)
+# define BOOST_PP_REPEAT_1_26(m, d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d)
+# define BOOST_PP_REPEAT_1_27(m, d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d)
+# define BOOST_PP_REPEAT_1_28(m, d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d)
+# define BOOST_PP_REPEAT_1_29(m, d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d)
+# define BOOST_PP_REPEAT_1_30(m, d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d)
+# define BOOST_PP_REPEAT_1_31(m, d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d)
+# define BOOST_PP_REPEAT_1_32(m, d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d)
+# define BOOST_PP_REPEAT_1_33(m, d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d)
+# define BOOST_PP_REPEAT_1_34(m, d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d)
+# define BOOST_PP_REPEAT_1_35(m, d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d)
+# define BOOST_PP_REPEAT_1_36(m, d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d)
+# define BOOST_PP_REPEAT_1_37(m, d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d)
+# define BOOST_PP_REPEAT_1_38(m, d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d)
+# define BOOST_PP_REPEAT_1_39(m, d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d)
+# define BOOST_PP_REPEAT_1_40(m, d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d)
+# define BOOST_PP_REPEAT_1_41(m, d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d)
+# define BOOST_PP_REPEAT_1_42(m, d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d)
+# define BOOST_PP_REPEAT_1_43(m, d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d)
+# define BOOST_PP_REPEAT_1_44(m, d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d)
+# define BOOST_PP_REPEAT_1_45(m, d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d)
+# define BOOST_PP_REPEAT_1_46(m, d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d)
+# define BOOST_PP_REPEAT_1_47(m, d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d)
+# define BOOST_PP_REPEAT_1_48(m, d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d)
+# define BOOST_PP_REPEAT_1_49(m, d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d)
+# define BOOST_PP_REPEAT_1_50(m, d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d)
+# define BOOST_PP_REPEAT_1_51(m, d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d)
+# define BOOST_PP_REPEAT_1_52(m, d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d)
+# define BOOST_PP_REPEAT_1_53(m, d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d)
+# define BOOST_PP_REPEAT_1_54(m, d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d)
+# define BOOST_PP_REPEAT_1_55(m, d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d)
+# define BOOST_PP_REPEAT_1_56(m, d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d)
+# define BOOST_PP_REPEAT_1_57(m, d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d)
+# define BOOST_PP_REPEAT_1_58(m, d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d)
+# define BOOST_PP_REPEAT_1_59(m, d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d)
+# define BOOST_PP_REPEAT_1_60(m, d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d)
+# define BOOST_PP_REPEAT_1_61(m, d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d)
+# define BOOST_PP_REPEAT_1_62(m, d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d)
+# define BOOST_PP_REPEAT_1_63(m, d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d)
+# define BOOST_PP_REPEAT_1_64(m, d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d)
+# define BOOST_PP_REPEAT_1_65(m, d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d)
+# define BOOST_PP_REPEAT_1_66(m, d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d)
+# define BOOST_PP_REPEAT_1_67(m, d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d)
+# define BOOST_PP_REPEAT_1_68(m, d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d)
+# define BOOST_PP_REPEAT_1_69(m, d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d)
+# define BOOST_PP_REPEAT_1_70(m, d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d)
+# define BOOST_PP_REPEAT_1_71(m, d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d)
+# define BOOST_PP_REPEAT_1_72(m, d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d)
+# define BOOST_PP_REPEAT_1_73(m, d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d)
+# define BOOST_PP_REPEAT_1_74(m, d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d)
+# define BOOST_PP_REPEAT_1_75(m, d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d)
+# define BOOST_PP_REPEAT_1_76(m, d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d)
+# define BOOST_PP_REPEAT_1_77(m, d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d)
+# define BOOST_PP_REPEAT_1_78(m, d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d)
+# define BOOST_PP_REPEAT_1_79(m, d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d)
+# define BOOST_PP_REPEAT_1_80(m, d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d)
+# define BOOST_PP_REPEAT_1_81(m, d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d)
+# define BOOST_PP_REPEAT_1_82(m, d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d)
+# define BOOST_PP_REPEAT_1_83(m, d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d)
+# define BOOST_PP_REPEAT_1_84(m, d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d)
+# define BOOST_PP_REPEAT_1_85(m, d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d)
+# define BOOST_PP_REPEAT_1_86(m, d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d)
+# define BOOST_PP_REPEAT_1_87(m, d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d)
+# define BOOST_PP_REPEAT_1_88(m, d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d)
+# define BOOST_PP_REPEAT_1_89(m, d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d)
+# define BOOST_PP_REPEAT_1_90(m, d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d)
+# define BOOST_PP_REPEAT_1_91(m, d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d)
+# define BOOST_PP_REPEAT_1_92(m, d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d)
+# define BOOST_PP_REPEAT_1_93(m, d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d)
+# define BOOST_PP_REPEAT_1_94(m, d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d)
+# define BOOST_PP_REPEAT_1_95(m, d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d)
+# define BOOST_PP_REPEAT_1_96(m, d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d)
+# define BOOST_PP_REPEAT_1_97(m, d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d)
+# define BOOST_PP_REPEAT_1_98(m, d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d)
+# define BOOST_PP_REPEAT_1_99(m, d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d)
+# define BOOST_PP_REPEAT_1_100(m, d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d)
+# define BOOST_PP_REPEAT_1_101(m, d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d)
+# define BOOST_PP_REPEAT_1_102(m, d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d)
+# define BOOST_PP_REPEAT_1_103(m, d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d)
+# define BOOST_PP_REPEAT_1_104(m, d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d)
+# define BOOST_PP_REPEAT_1_105(m, d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d)
+# define BOOST_PP_REPEAT_1_106(m, d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d)
+# define BOOST_PP_REPEAT_1_107(m, d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d)
+# define BOOST_PP_REPEAT_1_108(m, d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d)
+# define BOOST_PP_REPEAT_1_109(m, d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d)
+# define BOOST_PP_REPEAT_1_110(m, d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d)
+# define BOOST_PP_REPEAT_1_111(m, d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d)
+# define BOOST_PP_REPEAT_1_112(m, d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d)
+# define BOOST_PP_REPEAT_1_113(m, d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d)
+# define BOOST_PP_REPEAT_1_114(m, d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d)
+# define BOOST_PP_REPEAT_1_115(m, d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d)
+# define BOOST_PP_REPEAT_1_116(m, d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d)
+# define BOOST_PP_REPEAT_1_117(m, d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d)
+# define BOOST_PP_REPEAT_1_118(m, d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d)
+# define BOOST_PP_REPEAT_1_119(m, d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d)
+# define BOOST_PP_REPEAT_1_120(m, d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d)
+# define BOOST_PP_REPEAT_1_121(m, d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d)
+# define BOOST_PP_REPEAT_1_122(m, d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d)
+# define BOOST_PP_REPEAT_1_123(m, d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d)
+# define BOOST_PP_REPEAT_1_124(m, d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d)
+# define BOOST_PP_REPEAT_1_125(m, d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d)
+# define BOOST_PP_REPEAT_1_126(m, d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d)
+# define BOOST_PP_REPEAT_1_127(m, d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d)
+# define BOOST_PP_REPEAT_1_128(m, d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d)
+# define BOOST_PP_REPEAT_1_129(m, d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d)
+# define BOOST_PP_REPEAT_1_130(m, d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d)
+# define BOOST_PP_REPEAT_1_131(m, d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d)
+# define BOOST_PP_REPEAT_1_132(m, d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d)
+# define BOOST_PP_REPEAT_1_133(m, d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d)
+# define BOOST_PP_REPEAT_1_134(m, d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d)
+# define BOOST_PP_REPEAT_1_135(m, d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d)
+# define BOOST_PP_REPEAT_1_136(m, d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d)
+# define BOOST_PP_REPEAT_1_137(m, d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d)
+# define BOOST_PP_REPEAT_1_138(m, d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d)
+# define BOOST_PP_REPEAT_1_139(m, d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d)
+# define BOOST_PP_REPEAT_1_140(m, d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d)
+# define BOOST_PP_REPEAT_1_141(m, d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d)
+# define BOOST_PP_REPEAT_1_142(m, d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d)
+# define BOOST_PP_REPEAT_1_143(m, d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d)
+# define BOOST_PP_REPEAT_1_144(m, d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d)
+# define BOOST_PP_REPEAT_1_145(m, d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d)
+# define BOOST_PP_REPEAT_1_146(m, d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d)
+# define BOOST_PP_REPEAT_1_147(m, d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d)
+# define BOOST_PP_REPEAT_1_148(m, d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d)
+# define BOOST_PP_REPEAT_1_149(m, d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d)
+# define BOOST_PP_REPEAT_1_150(m, d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d)
+# define BOOST_PP_REPEAT_1_151(m, d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d)
+# define BOOST_PP_REPEAT_1_152(m, d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d)
+# define BOOST_PP_REPEAT_1_153(m, d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d)
+# define BOOST_PP_REPEAT_1_154(m, d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d)
+# define BOOST_PP_REPEAT_1_155(m, d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d)
+# define BOOST_PP_REPEAT_1_156(m, d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d)
+# define BOOST_PP_REPEAT_1_157(m, d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d)
+# define BOOST_PP_REPEAT_1_158(m, d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d)
+# define BOOST_PP_REPEAT_1_159(m, d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d)
+# define BOOST_PP_REPEAT_1_160(m, d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d)
+# define BOOST_PP_REPEAT_1_161(m, d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d)
+# define BOOST_PP_REPEAT_1_162(m, d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d)
+# define BOOST_PP_REPEAT_1_163(m, d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d)
+# define BOOST_PP_REPEAT_1_164(m, d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d)
+# define BOOST_PP_REPEAT_1_165(m, d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d)
+# define BOOST_PP_REPEAT_1_166(m, d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d)
+# define BOOST_PP_REPEAT_1_167(m, d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d)
+# define BOOST_PP_REPEAT_1_168(m, d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d)
+# define BOOST_PP_REPEAT_1_169(m, d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d)
+# define BOOST_PP_REPEAT_1_170(m, d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d)
+# define BOOST_PP_REPEAT_1_171(m, d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d)
+# define BOOST_PP_REPEAT_1_172(m, d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d)
+# define BOOST_PP_REPEAT_1_173(m, d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d)
+# define BOOST_PP_REPEAT_1_174(m, d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d)
+# define BOOST_PP_REPEAT_1_175(m, d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d)
+# define BOOST_PP_REPEAT_1_176(m, d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d)
+# define BOOST_PP_REPEAT_1_177(m, d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d)
+# define BOOST_PP_REPEAT_1_178(m, d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d)
+# define BOOST_PP_REPEAT_1_179(m, d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d)
+# define BOOST_PP_REPEAT_1_180(m, d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d)
+# define BOOST_PP_REPEAT_1_181(m, d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d)
+# define BOOST_PP_REPEAT_1_182(m, d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d)
+# define BOOST_PP_REPEAT_1_183(m, d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d)
+# define BOOST_PP_REPEAT_1_184(m, d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d)
+# define BOOST_PP_REPEAT_1_185(m, d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d)
+# define BOOST_PP_REPEAT_1_186(m, d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d)
+# define BOOST_PP_REPEAT_1_187(m, d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d)
+# define BOOST_PP_REPEAT_1_188(m, d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d)
+# define BOOST_PP_REPEAT_1_189(m, d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d)
+# define BOOST_PP_REPEAT_1_190(m, d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d)
+# define BOOST_PP_REPEAT_1_191(m, d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d)
+# define BOOST_PP_REPEAT_1_192(m, d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d)
+# define BOOST_PP_REPEAT_1_193(m, d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d)
+# define BOOST_PP_REPEAT_1_194(m, d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d)
+# define BOOST_PP_REPEAT_1_195(m, d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d)
+# define BOOST_PP_REPEAT_1_196(m, d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d)
+# define BOOST_PP_REPEAT_1_197(m, d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d)
+# define BOOST_PP_REPEAT_1_198(m, d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d)
+# define BOOST_PP_REPEAT_1_199(m, d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d)
+# define BOOST_PP_REPEAT_1_200(m, d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d)
+# define BOOST_PP_REPEAT_1_201(m, d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d)
+# define BOOST_PP_REPEAT_1_202(m, d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d)
+# define BOOST_PP_REPEAT_1_203(m, d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d)
+# define BOOST_PP_REPEAT_1_204(m, d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d)
+# define BOOST_PP_REPEAT_1_205(m, d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d)
+# define BOOST_PP_REPEAT_1_206(m, d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d)
+# define BOOST_PP_REPEAT_1_207(m, d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d)
+# define BOOST_PP_REPEAT_1_208(m, d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d)
+# define BOOST_PP_REPEAT_1_209(m, d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d)
+# define BOOST_PP_REPEAT_1_210(m, d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d)
+# define BOOST_PP_REPEAT_1_211(m, d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d)
+# define BOOST_PP_REPEAT_1_212(m, d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d)
+# define BOOST_PP_REPEAT_1_213(m, d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d)
+# define BOOST_PP_REPEAT_1_214(m, d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d)
+# define BOOST_PP_REPEAT_1_215(m, d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d)
+# define BOOST_PP_REPEAT_1_216(m, d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d)
+# define BOOST_PP_REPEAT_1_217(m, d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d)
+# define BOOST_PP_REPEAT_1_218(m, d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d)
+# define BOOST_PP_REPEAT_1_219(m, d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d)
+# define BOOST_PP_REPEAT_1_220(m, d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d)
+# define BOOST_PP_REPEAT_1_221(m, d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d)
+# define BOOST_PP_REPEAT_1_222(m, d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d)
+# define BOOST_PP_REPEAT_1_223(m, d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d)
+# define BOOST_PP_REPEAT_1_224(m, d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d)
+# define BOOST_PP_REPEAT_1_225(m, d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d)
+# define BOOST_PP_REPEAT_1_226(m, d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d)
+# define BOOST_PP_REPEAT_1_227(m, d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d)
+# define BOOST_PP_REPEAT_1_228(m, d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d)
+# define BOOST_PP_REPEAT_1_229(m, d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d)
+# define BOOST_PP_REPEAT_1_230(m, d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d)
+# define BOOST_PP_REPEAT_1_231(m, d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d)
+# define BOOST_PP_REPEAT_1_232(m, d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d)
+# define BOOST_PP_REPEAT_1_233(m, d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d)
+# define BOOST_PP_REPEAT_1_234(m, d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d)
+# define BOOST_PP_REPEAT_1_235(m, d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d)
+# define BOOST_PP_REPEAT_1_236(m, d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d)
+# define BOOST_PP_REPEAT_1_237(m, d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d)
+# define BOOST_PP_REPEAT_1_238(m, d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d)
+# define BOOST_PP_REPEAT_1_239(m, d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d)
+# define BOOST_PP_REPEAT_1_240(m, d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d)
+# define BOOST_PP_REPEAT_1_241(m, d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d)
+# define BOOST_PP_REPEAT_1_242(m, d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d)
+# define BOOST_PP_REPEAT_1_243(m, d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d)
+# define BOOST_PP_REPEAT_1_244(m, d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d)
+# define BOOST_PP_REPEAT_1_245(m, d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d)
+# define BOOST_PP_REPEAT_1_246(m, d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d)
+# define BOOST_PP_REPEAT_1_247(m, d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d)
+# define BOOST_PP_REPEAT_1_248(m, d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d)
+# define BOOST_PP_REPEAT_1_249(m, d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d)
+# define BOOST_PP_REPEAT_1_250(m, d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d)
+# define BOOST_PP_REPEAT_1_251(m, d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d)
+# define BOOST_PP_REPEAT_1_252(m, d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d)
+# define BOOST_PP_REPEAT_1_253(m, d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d)
+# define BOOST_PP_REPEAT_1_254(m, d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d)
+# define BOOST_PP_REPEAT_1_255(m, d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d)
+# define BOOST_PP_REPEAT_1_256(m, d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d)
+#
+# define BOOST_PP_REPEAT_2_0(m, d)
+# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d)
+# define BOOST_PP_REPEAT_2_2(m, d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d)
+# define BOOST_PP_REPEAT_2_3(m, d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d)
+# define BOOST_PP_REPEAT_2_4(m, d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d)
+# define BOOST_PP_REPEAT_2_5(m, d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d)
+# define BOOST_PP_REPEAT_2_6(m, d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d)
+# define BOOST_PP_REPEAT_2_7(m, d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d)
+# define BOOST_PP_REPEAT_2_8(m, d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d)
+# define BOOST_PP_REPEAT_2_9(m, d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d)
+# define BOOST_PP_REPEAT_2_10(m, d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d)
+# define BOOST_PP_REPEAT_2_11(m, d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d)
+# define BOOST_PP_REPEAT_2_12(m, d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d)
+# define BOOST_PP_REPEAT_2_13(m, d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d)
+# define BOOST_PP_REPEAT_2_14(m, d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d)
+# define BOOST_PP_REPEAT_2_15(m, d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d)
+# define BOOST_PP_REPEAT_2_16(m, d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d)
+# define BOOST_PP_REPEAT_2_17(m, d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d)
+# define BOOST_PP_REPEAT_2_18(m, d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d)
+# define BOOST_PP_REPEAT_2_19(m, d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d)
+# define BOOST_PP_REPEAT_2_20(m, d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d)
+# define BOOST_PP_REPEAT_2_21(m, d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d)
+# define BOOST_PP_REPEAT_2_22(m, d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d)
+# define BOOST_PP_REPEAT_2_23(m, d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d)
+# define BOOST_PP_REPEAT_2_24(m, d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d)
+# define BOOST_PP_REPEAT_2_25(m, d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d)
+# define BOOST_PP_REPEAT_2_26(m, d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d)
+# define BOOST_PP_REPEAT_2_27(m, d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d)
+# define BOOST_PP_REPEAT_2_28(m, d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d)
+# define BOOST_PP_REPEAT_2_29(m, d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d)
+# define BOOST_PP_REPEAT_2_30(m, d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d)
+# define BOOST_PP_REPEAT_2_31(m, d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d)
+# define BOOST_PP_REPEAT_2_32(m, d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d)
+# define BOOST_PP_REPEAT_2_33(m, d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d)
+# define BOOST_PP_REPEAT_2_34(m, d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d)
+# define BOOST_PP_REPEAT_2_35(m, d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d)
+# define BOOST_PP_REPEAT_2_36(m, d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d)
+# define BOOST_PP_REPEAT_2_37(m, d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d)
+# define BOOST_PP_REPEAT_2_38(m, d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d)
+# define BOOST_PP_REPEAT_2_39(m, d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d)
+# define BOOST_PP_REPEAT_2_40(m, d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d)
+# define BOOST_PP_REPEAT_2_41(m, d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d)
+# define BOOST_PP_REPEAT_2_42(m, d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d)
+# define BOOST_PP_REPEAT_2_43(m, d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d)
+# define BOOST_PP_REPEAT_2_44(m, d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d)
+# define BOOST_PP_REPEAT_2_45(m, d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d)
+# define BOOST_PP_REPEAT_2_46(m, d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d)
+# define BOOST_PP_REPEAT_2_47(m, d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d)
+# define BOOST_PP_REPEAT_2_48(m, d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d)
+# define BOOST_PP_REPEAT_2_49(m, d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d)
+# define BOOST_PP_REPEAT_2_50(m, d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d)
+# define BOOST_PP_REPEAT_2_51(m, d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d)
+# define BOOST_PP_REPEAT_2_52(m, d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d)
+# define BOOST_PP_REPEAT_2_53(m, d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d)
+# define BOOST_PP_REPEAT_2_54(m, d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d)
+# define BOOST_PP_REPEAT_2_55(m, d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d)
+# define BOOST_PP_REPEAT_2_56(m, d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d)
+# define BOOST_PP_REPEAT_2_57(m, d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d)
+# define BOOST_PP_REPEAT_2_58(m, d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d)
+# define BOOST_PP_REPEAT_2_59(m, d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d)
+# define BOOST_PP_REPEAT_2_60(m, d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d)
+# define BOOST_PP_REPEAT_2_61(m, d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d)
+# define BOOST_PP_REPEAT_2_62(m, d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d)
+# define BOOST_PP_REPEAT_2_63(m, d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d)
+# define BOOST_PP_REPEAT_2_64(m, d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d)
+# define BOOST_PP_REPEAT_2_65(m, d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d)
+# define BOOST_PP_REPEAT_2_66(m, d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d)
+# define BOOST_PP_REPEAT_2_67(m, d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d)
+# define BOOST_PP_REPEAT_2_68(m, d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d)
+# define BOOST_PP_REPEAT_2_69(m, d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d)
+# define BOOST_PP_REPEAT_2_70(m, d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d)
+# define BOOST_PP_REPEAT_2_71(m, d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d)
+# define BOOST_PP_REPEAT_2_72(m, d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d)
+# define BOOST_PP_REPEAT_2_73(m, d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d)
+# define BOOST_PP_REPEAT_2_74(m, d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d)
+# define BOOST_PP_REPEAT_2_75(m, d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d)
+# define BOOST_PP_REPEAT_2_76(m, d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d)
+# define BOOST_PP_REPEAT_2_77(m, d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d)
+# define BOOST_PP_REPEAT_2_78(m, d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d)
+# define BOOST_PP_REPEAT_2_79(m, d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d)
+# define BOOST_PP_REPEAT_2_80(m, d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d)
+# define BOOST_PP_REPEAT_2_81(m, d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d)
+# define BOOST_PP_REPEAT_2_82(m, d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d)
+# define BOOST_PP_REPEAT_2_83(m, d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d)
+# define BOOST_PP_REPEAT_2_84(m, d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d)
+# define BOOST_PP_REPEAT_2_85(m, d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d)
+# define BOOST_PP_REPEAT_2_86(m, d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d)
+# define BOOST_PP_REPEAT_2_87(m, d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d)
+# define BOOST_PP_REPEAT_2_88(m, d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d)
+# define BOOST_PP_REPEAT_2_89(m, d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d)
+# define BOOST_PP_REPEAT_2_90(m, d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d)
+# define BOOST_PP_REPEAT_2_91(m, d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d)
+# define BOOST_PP_REPEAT_2_92(m, d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d)
+# define BOOST_PP_REPEAT_2_93(m, d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d)
+# define BOOST_PP_REPEAT_2_94(m, d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d)
+# define BOOST_PP_REPEAT_2_95(m, d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d)
+# define BOOST_PP_REPEAT_2_96(m, d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d)
+# define BOOST_PP_REPEAT_2_97(m, d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d)
+# define BOOST_PP_REPEAT_2_98(m, d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d)
+# define BOOST_PP_REPEAT_2_99(m, d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d)
+# define BOOST_PP_REPEAT_2_100(m, d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d)
+# define BOOST_PP_REPEAT_2_101(m, d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d)
+# define BOOST_PP_REPEAT_2_102(m, d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d)
+# define BOOST_PP_REPEAT_2_103(m, d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d)
+# define BOOST_PP_REPEAT_2_104(m, d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d)
+# define BOOST_PP_REPEAT_2_105(m, d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d)
+# define BOOST_PP_REPEAT_2_106(m, d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d)
+# define BOOST_PP_REPEAT_2_107(m, d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d)
+# define BOOST_PP_REPEAT_2_108(m, d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d)
+# define BOOST_PP_REPEAT_2_109(m, d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d)
+# define BOOST_PP_REPEAT_2_110(m, d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d)
+# define BOOST_PP_REPEAT_2_111(m, d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d)
+# define BOOST_PP_REPEAT_2_112(m, d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d)
+# define BOOST_PP_REPEAT_2_113(m, d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d)
+# define BOOST_PP_REPEAT_2_114(m, d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d)
+# define BOOST_PP_REPEAT_2_115(m, d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d)
+# define BOOST_PP_REPEAT_2_116(m, d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d)
+# define BOOST_PP_REPEAT_2_117(m, d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d)
+# define BOOST_PP_REPEAT_2_118(m, d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d)
+# define BOOST_PP_REPEAT_2_119(m, d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d)
+# define BOOST_PP_REPEAT_2_120(m, d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d)
+# define BOOST_PP_REPEAT_2_121(m, d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d)
+# define BOOST_PP_REPEAT_2_122(m, d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d)
+# define BOOST_PP_REPEAT_2_123(m, d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d)
+# define BOOST_PP_REPEAT_2_124(m, d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d)
+# define BOOST_PP_REPEAT_2_125(m, d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d)
+# define BOOST_PP_REPEAT_2_126(m, d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d)
+# define BOOST_PP_REPEAT_2_127(m, d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d)
+# define BOOST_PP_REPEAT_2_128(m, d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d)
+# define BOOST_PP_REPEAT_2_129(m, d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d)
+# define BOOST_PP_REPEAT_2_130(m, d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d)
+# define BOOST_PP_REPEAT_2_131(m, d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d)
+# define BOOST_PP_REPEAT_2_132(m, d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d)
+# define BOOST_PP_REPEAT_2_133(m, d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d)
+# define BOOST_PP_REPEAT_2_134(m, d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d)
+# define BOOST_PP_REPEAT_2_135(m, d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d)
+# define BOOST_PP_REPEAT_2_136(m, d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d)
+# define BOOST_PP_REPEAT_2_137(m, d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d)
+# define BOOST_PP_REPEAT_2_138(m, d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d)
+# define BOOST_PP_REPEAT_2_139(m, d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d)
+# define BOOST_PP_REPEAT_2_140(m, d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d)
+# define BOOST_PP_REPEAT_2_141(m, d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d)
+# define BOOST_PP_REPEAT_2_142(m, d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d)
+# define BOOST_PP_REPEAT_2_143(m, d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d)
+# define BOOST_PP_REPEAT_2_144(m, d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d)
+# define BOOST_PP_REPEAT_2_145(m, d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d)
+# define BOOST_PP_REPEAT_2_146(m, d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d)
+# define BOOST_PP_REPEAT_2_147(m, d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d)
+# define BOOST_PP_REPEAT_2_148(m, d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d)
+# define BOOST_PP_REPEAT_2_149(m, d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d)
+# define BOOST_PP_REPEAT_2_150(m, d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d)
+# define BOOST_PP_REPEAT_2_151(m, d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d)
+# define BOOST_PP_REPEAT_2_152(m, d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d)
+# define BOOST_PP_REPEAT_2_153(m, d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d)
+# define BOOST_PP_REPEAT_2_154(m, d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d)
+# define BOOST_PP_REPEAT_2_155(m, d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d)
+# define BOOST_PP_REPEAT_2_156(m, d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d)
+# define BOOST_PP_REPEAT_2_157(m, d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d)
+# define BOOST_PP_REPEAT_2_158(m, d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d)
+# define BOOST_PP_REPEAT_2_159(m, d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d)
+# define BOOST_PP_REPEAT_2_160(m, d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d)
+# define BOOST_PP_REPEAT_2_161(m, d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d)
+# define BOOST_PP_REPEAT_2_162(m, d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d)
+# define BOOST_PP_REPEAT_2_163(m, d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d)
+# define BOOST_PP_REPEAT_2_164(m, d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d)
+# define BOOST_PP_REPEAT_2_165(m, d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d)
+# define BOOST_PP_REPEAT_2_166(m, d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d)
+# define BOOST_PP_REPEAT_2_167(m, d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d)
+# define BOOST_PP_REPEAT_2_168(m, d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d)
+# define BOOST_PP_REPEAT_2_169(m, d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d)
+# define BOOST_PP_REPEAT_2_170(m, d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d)
+# define BOOST_PP_REPEAT_2_171(m, d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d)
+# define BOOST_PP_REPEAT_2_172(m, d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d)
+# define BOOST_PP_REPEAT_2_173(m, d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d)
+# define BOOST_PP_REPEAT_2_174(m, d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d)
+# define BOOST_PP_REPEAT_2_175(m, d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d)
+# define BOOST_PP_REPEAT_2_176(m, d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d)
+# define BOOST_PP_REPEAT_2_177(m, d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d)
+# define BOOST_PP_REPEAT_2_178(m, d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d)
+# define BOOST_PP_REPEAT_2_179(m, d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d)
+# define BOOST_PP_REPEAT_2_180(m, d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d)
+# define BOOST_PP_REPEAT_2_181(m, d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d)
+# define BOOST_PP_REPEAT_2_182(m, d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d)
+# define BOOST_PP_REPEAT_2_183(m, d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d)
+# define BOOST_PP_REPEAT_2_184(m, d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d)
+# define BOOST_PP_REPEAT_2_185(m, d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d)
+# define BOOST_PP_REPEAT_2_186(m, d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d)
+# define BOOST_PP_REPEAT_2_187(m, d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d)
+# define BOOST_PP_REPEAT_2_188(m, d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d)
+# define BOOST_PP_REPEAT_2_189(m, d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d)
+# define BOOST_PP_REPEAT_2_190(m, d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d)
+# define BOOST_PP_REPEAT_2_191(m, d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d)
+# define BOOST_PP_REPEAT_2_192(m, d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d)
+# define BOOST_PP_REPEAT_2_193(m, d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d)
+# define BOOST_PP_REPEAT_2_194(m, d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d)
+# define BOOST_PP_REPEAT_2_195(m, d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d)
+# define BOOST_PP_REPEAT_2_196(m, d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d)
+# define BOOST_PP_REPEAT_2_197(m, d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d)
+# define BOOST_PP_REPEAT_2_198(m, d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d)
+# define BOOST_PP_REPEAT_2_199(m, d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d)
+# define BOOST_PP_REPEAT_2_200(m, d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d)
+# define BOOST_PP_REPEAT_2_201(m, d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d)
+# define BOOST_PP_REPEAT_2_202(m, d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d)
+# define BOOST_PP_REPEAT_2_203(m, d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d)
+# define BOOST_PP_REPEAT_2_204(m, d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d)
+# define BOOST_PP_REPEAT_2_205(m, d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d)
+# define BOOST_PP_REPEAT_2_206(m, d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d)
+# define BOOST_PP_REPEAT_2_207(m, d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d)
+# define BOOST_PP_REPEAT_2_208(m, d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d)
+# define BOOST_PP_REPEAT_2_209(m, d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d)
+# define BOOST_PP_REPEAT_2_210(m, d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d)
+# define BOOST_PP_REPEAT_2_211(m, d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d)
+# define BOOST_PP_REPEAT_2_212(m, d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d)
+# define BOOST_PP_REPEAT_2_213(m, d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d)
+# define BOOST_PP_REPEAT_2_214(m, d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d)
+# define BOOST_PP_REPEAT_2_215(m, d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d)
+# define BOOST_PP_REPEAT_2_216(m, d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d)
+# define BOOST_PP_REPEAT_2_217(m, d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d)
+# define BOOST_PP_REPEAT_2_218(m, d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d)
+# define BOOST_PP_REPEAT_2_219(m, d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d)
+# define BOOST_PP_REPEAT_2_220(m, d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d)
+# define BOOST_PP_REPEAT_2_221(m, d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d)
+# define BOOST_PP_REPEAT_2_222(m, d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d)
+# define BOOST_PP_REPEAT_2_223(m, d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d)
+# define BOOST_PP_REPEAT_2_224(m, d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d)
+# define BOOST_PP_REPEAT_2_225(m, d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d)
+# define BOOST_PP_REPEAT_2_226(m, d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d)
+# define BOOST_PP_REPEAT_2_227(m, d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d)
+# define BOOST_PP_REPEAT_2_228(m, d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d)
+# define BOOST_PP_REPEAT_2_229(m, d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d)
+# define BOOST_PP_REPEAT_2_230(m, d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d)
+# define BOOST_PP_REPEAT_2_231(m, d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d)
+# define BOOST_PP_REPEAT_2_232(m, d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d)
+# define BOOST_PP_REPEAT_2_233(m, d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d)
+# define BOOST_PP_REPEAT_2_234(m, d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d)
+# define BOOST_PP_REPEAT_2_235(m, d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d)
+# define BOOST_PP_REPEAT_2_236(m, d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d)
+# define BOOST_PP_REPEAT_2_237(m, d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d)
+# define BOOST_PP_REPEAT_2_238(m, d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d)
+# define BOOST_PP_REPEAT_2_239(m, d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d)
+# define BOOST_PP_REPEAT_2_240(m, d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d)
+# define BOOST_PP_REPEAT_2_241(m, d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d)
+# define BOOST_PP_REPEAT_2_242(m, d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d)
+# define BOOST_PP_REPEAT_2_243(m, d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d)
+# define BOOST_PP_REPEAT_2_244(m, d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d)
+# define BOOST_PP_REPEAT_2_245(m, d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d)
+# define BOOST_PP_REPEAT_2_246(m, d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d)
+# define BOOST_PP_REPEAT_2_247(m, d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d)
+# define BOOST_PP_REPEAT_2_248(m, d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d)
+# define BOOST_PP_REPEAT_2_249(m, d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d)
+# define BOOST_PP_REPEAT_2_250(m, d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d)
+# define BOOST_PP_REPEAT_2_251(m, d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d)
+# define BOOST_PP_REPEAT_2_252(m, d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d)
+# define BOOST_PP_REPEAT_2_253(m, d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d)
+# define BOOST_PP_REPEAT_2_254(m, d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d)
+# define BOOST_PP_REPEAT_2_255(m, d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d)
+# define BOOST_PP_REPEAT_2_256(m, d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d)
+#
+# define BOOST_PP_REPEAT_3_0(m, d)
+# define BOOST_PP_REPEAT_3_1(m, d) m(4, 0, d)
+# define BOOST_PP_REPEAT_3_2(m, d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d)
+# define BOOST_PP_REPEAT_3_3(m, d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d)
+# define BOOST_PP_REPEAT_3_4(m, d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d)
+# define BOOST_PP_REPEAT_3_5(m, d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d)
+# define BOOST_PP_REPEAT_3_6(m, d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d)
+# define BOOST_PP_REPEAT_3_7(m, d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d)
+# define BOOST_PP_REPEAT_3_8(m, d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d)
+# define BOOST_PP_REPEAT_3_9(m, d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d)
+# define BOOST_PP_REPEAT_3_10(m, d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d)
+# define BOOST_PP_REPEAT_3_11(m, d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d)
+# define BOOST_PP_REPEAT_3_12(m, d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d)
+# define BOOST_PP_REPEAT_3_13(m, d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d)
+# define BOOST_PP_REPEAT_3_14(m, d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d)
+# define BOOST_PP_REPEAT_3_15(m, d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d)
+# define BOOST_PP_REPEAT_3_16(m, d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d)
+# define BOOST_PP_REPEAT_3_17(m, d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d)
+# define BOOST_PP_REPEAT_3_18(m, d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d)
+# define BOOST_PP_REPEAT_3_19(m, d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d)
+# define BOOST_PP_REPEAT_3_20(m, d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d)
+# define BOOST_PP_REPEAT_3_21(m, d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d)
+# define BOOST_PP_REPEAT_3_22(m, d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d)
+# define BOOST_PP_REPEAT_3_23(m, d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d)
+# define BOOST_PP_REPEAT_3_24(m, d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d)
+# define BOOST_PP_REPEAT_3_25(m, d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d)
+# define BOOST_PP_REPEAT_3_26(m, d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d)
+# define BOOST_PP_REPEAT_3_27(m, d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d)
+# define BOOST_PP_REPEAT_3_28(m, d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d)
+# define BOOST_PP_REPEAT_3_29(m, d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d)
+# define BOOST_PP_REPEAT_3_30(m, d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d)
+# define BOOST_PP_REPEAT_3_31(m, d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d)
+# define BOOST_PP_REPEAT_3_32(m, d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d)
+# define BOOST_PP_REPEAT_3_33(m, d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d)
+# define BOOST_PP_REPEAT_3_34(m, d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d)
+# define BOOST_PP_REPEAT_3_35(m, d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d)
+# define BOOST_PP_REPEAT_3_36(m, d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d)
+# define BOOST_PP_REPEAT_3_37(m, d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d)
+# define BOOST_PP_REPEAT_3_38(m, d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d)
+# define BOOST_PP_REPEAT_3_39(m, d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d)
+# define BOOST_PP_REPEAT_3_40(m, d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d)
+# define BOOST_PP_REPEAT_3_41(m, d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d)
+# define BOOST_PP_REPEAT_3_42(m, d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d)
+# define BOOST_PP_REPEAT_3_43(m, d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d)
+# define BOOST_PP_REPEAT_3_44(m, d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d)
+# define BOOST_PP_REPEAT_3_45(m, d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d)
+# define BOOST_PP_REPEAT_3_46(m, d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d)
+# define BOOST_PP_REPEAT_3_47(m, d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d)
+# define BOOST_PP_REPEAT_3_48(m, d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d)
+# define BOOST_PP_REPEAT_3_49(m, d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d)
+# define BOOST_PP_REPEAT_3_50(m, d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d)
+# define BOOST_PP_REPEAT_3_51(m, d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d)
+# define BOOST_PP_REPEAT_3_52(m, d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d)
+# define BOOST_PP_REPEAT_3_53(m, d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d)
+# define BOOST_PP_REPEAT_3_54(m, d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d)
+# define BOOST_PP_REPEAT_3_55(m, d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d)
+# define BOOST_PP_REPEAT_3_56(m, d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d)
+# define BOOST_PP_REPEAT_3_57(m, d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d)
+# define BOOST_PP_REPEAT_3_58(m, d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d)
+# define BOOST_PP_REPEAT_3_59(m, d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d)
+# define BOOST_PP_REPEAT_3_60(m, d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d)
+# define BOOST_PP_REPEAT_3_61(m, d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d)
+# define BOOST_PP_REPEAT_3_62(m, d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d)
+# define BOOST_PP_REPEAT_3_63(m, d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d)
+# define BOOST_PP_REPEAT_3_64(m, d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d)
+# define BOOST_PP_REPEAT_3_65(m, d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d)
+# define BOOST_PP_REPEAT_3_66(m, d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d)
+# define BOOST_PP_REPEAT_3_67(m, d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d)
+# define BOOST_PP_REPEAT_3_68(m, d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d)
+# define BOOST_PP_REPEAT_3_69(m, d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d)
+# define BOOST_PP_REPEAT_3_70(m, d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d)
+# define BOOST_PP_REPEAT_3_71(m, d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d)
+# define BOOST_PP_REPEAT_3_72(m, d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d)
+# define BOOST_PP_REPEAT_3_73(m, d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d)
+# define BOOST_PP_REPEAT_3_74(m, d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d)
+# define BOOST_PP_REPEAT_3_75(m, d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d)
+# define BOOST_PP_REPEAT_3_76(m, d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d)
+# define BOOST_PP_REPEAT_3_77(m, d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d)
+# define BOOST_PP_REPEAT_3_78(m, d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d)
+# define BOOST_PP_REPEAT_3_79(m, d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d)
+# define BOOST_PP_REPEAT_3_80(m, d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d)
+# define BOOST_PP_REPEAT_3_81(m, d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d)
+# define BOOST_PP_REPEAT_3_82(m, d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d)
+# define BOOST_PP_REPEAT_3_83(m, d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d)
+# define BOOST_PP_REPEAT_3_84(m, d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d)
+# define BOOST_PP_REPEAT_3_85(m, d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d)
+# define BOOST_PP_REPEAT_3_86(m, d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d)
+# define BOOST_PP_REPEAT_3_87(m, d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d)
+# define BOOST_PP_REPEAT_3_88(m, d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d)
+# define BOOST_PP_REPEAT_3_89(m, d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d)
+# define BOOST_PP_REPEAT_3_90(m, d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d)
+# define BOOST_PP_REPEAT_3_91(m, d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d)
+# define BOOST_PP_REPEAT_3_92(m, d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d)
+# define BOOST_PP_REPEAT_3_93(m, d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d)
+# define BOOST_PP_REPEAT_3_94(m, d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d)
+# define BOOST_PP_REPEAT_3_95(m, d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d)
+# define BOOST_PP_REPEAT_3_96(m, d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d)
+# define BOOST_PP_REPEAT_3_97(m, d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d)
+# define BOOST_PP_REPEAT_3_98(m, d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d)
+# define BOOST_PP_REPEAT_3_99(m, d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d)
+# define BOOST_PP_REPEAT_3_100(m, d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d)
+# define BOOST_PP_REPEAT_3_101(m, d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d)
+# define BOOST_PP_REPEAT_3_102(m, d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d)
+# define BOOST_PP_REPEAT_3_103(m, d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d)
+# define BOOST_PP_REPEAT_3_104(m, d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d)
+# define BOOST_PP_REPEAT_3_105(m, d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d)
+# define BOOST_PP_REPEAT_3_106(m, d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d)
+# define BOOST_PP_REPEAT_3_107(m, d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d)
+# define BOOST_PP_REPEAT_3_108(m, d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d)
+# define BOOST_PP_REPEAT_3_109(m, d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d)
+# define BOOST_PP_REPEAT_3_110(m, d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d)
+# define BOOST_PP_REPEAT_3_111(m, d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d)
+# define BOOST_PP_REPEAT_3_112(m, d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d)
+# define BOOST_PP_REPEAT_3_113(m, d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d)
+# define BOOST_PP_REPEAT_3_114(m, d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d)
+# define BOOST_PP_REPEAT_3_115(m, d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d)
+# define BOOST_PP_REPEAT_3_116(m, d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d)
+# define BOOST_PP_REPEAT_3_117(m, d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d)
+# define BOOST_PP_REPEAT_3_118(m, d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d)
+# define BOOST_PP_REPEAT_3_119(m, d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d)
+# define BOOST_PP_REPEAT_3_120(m, d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d)
+# define BOOST_PP_REPEAT_3_121(m, d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d)
+# define BOOST_PP_REPEAT_3_122(m, d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d)
+# define BOOST_PP_REPEAT_3_123(m, d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d)
+# define BOOST_PP_REPEAT_3_124(m, d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d)
+# define BOOST_PP_REPEAT_3_125(m, d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d)
+# define BOOST_PP_REPEAT_3_126(m, d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d)
+# define BOOST_PP_REPEAT_3_127(m, d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d)
+# define BOOST_PP_REPEAT_3_128(m, d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d)
+# define BOOST_PP_REPEAT_3_129(m, d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d)
+# define BOOST_PP_REPEAT_3_130(m, d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d)
+# define BOOST_PP_REPEAT_3_131(m, d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d)
+# define BOOST_PP_REPEAT_3_132(m, d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d)
+# define BOOST_PP_REPEAT_3_133(m, d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d)
+# define BOOST_PP_REPEAT_3_134(m, d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d)
+# define BOOST_PP_REPEAT_3_135(m, d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d)
+# define BOOST_PP_REPEAT_3_136(m, d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d)
+# define BOOST_PP_REPEAT_3_137(m, d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d)
+# define BOOST_PP_REPEAT_3_138(m, d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d)
+# define BOOST_PP_REPEAT_3_139(m, d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d)
+# define BOOST_PP_REPEAT_3_140(m, d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d)
+# define BOOST_PP_REPEAT_3_141(m, d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d)
+# define BOOST_PP_REPEAT_3_142(m, d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d)
+# define BOOST_PP_REPEAT_3_143(m, d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d)
+# define BOOST_PP_REPEAT_3_144(m, d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d)
+# define BOOST_PP_REPEAT_3_145(m, d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d)
+# define BOOST_PP_REPEAT_3_146(m, d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d)
+# define BOOST_PP_REPEAT_3_147(m, d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d)
+# define BOOST_PP_REPEAT_3_148(m, d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d)
+# define BOOST_PP_REPEAT_3_149(m, d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d)
+# define BOOST_PP_REPEAT_3_150(m, d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d)
+# define BOOST_PP_REPEAT_3_151(m, d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d)
+# define BOOST_PP_REPEAT_3_152(m, d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d)
+# define BOOST_PP_REPEAT_3_153(m, d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d)
+# define BOOST_PP_REPEAT_3_154(m, d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d)
+# define BOOST_PP_REPEAT_3_155(m, d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d)
+# define BOOST_PP_REPEAT_3_156(m, d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d)
+# define BOOST_PP_REPEAT_3_157(m, d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d)
+# define BOOST_PP_REPEAT_3_158(m, d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d)
+# define BOOST_PP_REPEAT_3_159(m, d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d)
+# define BOOST_PP_REPEAT_3_160(m, d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d)
+# define BOOST_PP_REPEAT_3_161(m, d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d)
+# define BOOST_PP_REPEAT_3_162(m, d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d)
+# define BOOST_PP_REPEAT_3_163(m, d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d)
+# define BOOST_PP_REPEAT_3_164(m, d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d)
+# define BOOST_PP_REPEAT_3_165(m, d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d)
+# define BOOST_PP_REPEAT_3_166(m, d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d)
+# define BOOST_PP_REPEAT_3_167(m, d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d)
+# define BOOST_PP_REPEAT_3_168(m, d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d)
+# define BOOST_PP_REPEAT_3_169(m, d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d)
+# define BOOST_PP_REPEAT_3_170(m, d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d)
+# define BOOST_PP_REPEAT_3_171(m, d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d)
+# define BOOST_PP_REPEAT_3_172(m, d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d)
+# define BOOST_PP_REPEAT_3_173(m, d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d)
+# define BOOST_PP_REPEAT_3_174(m, d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d)
+# define BOOST_PP_REPEAT_3_175(m, d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d)
+# define BOOST_PP_REPEAT_3_176(m, d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d)
+# define BOOST_PP_REPEAT_3_177(m, d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d)
+# define BOOST_PP_REPEAT_3_178(m, d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d)
+# define BOOST_PP_REPEAT_3_179(m, d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d)
+# define BOOST_PP_REPEAT_3_180(m, d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d)
+# define BOOST_PP_REPEAT_3_181(m, d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d)
+# define BOOST_PP_REPEAT_3_182(m, d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d)
+# define BOOST_PP_REPEAT_3_183(m, d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d)
+# define BOOST_PP_REPEAT_3_184(m, d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d)
+# define BOOST_PP_REPEAT_3_185(m, d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d)
+# define BOOST_PP_REPEAT_3_186(m, d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d)
+# define BOOST_PP_REPEAT_3_187(m, d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d)
+# define BOOST_PP_REPEAT_3_188(m, d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d)
+# define BOOST_PP_REPEAT_3_189(m, d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d)
+# define BOOST_PP_REPEAT_3_190(m, d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d)
+# define BOOST_PP_REPEAT_3_191(m, d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d)
+# define BOOST_PP_REPEAT_3_192(m, d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d)
+# define BOOST_PP_REPEAT_3_193(m, d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d)
+# define BOOST_PP_REPEAT_3_194(m, d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d)
+# define BOOST_PP_REPEAT_3_195(m, d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d)
+# define BOOST_PP_REPEAT_3_196(m, d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d)
+# define BOOST_PP_REPEAT_3_197(m, d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d)
+# define BOOST_PP_REPEAT_3_198(m, d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d)
+# define BOOST_PP_REPEAT_3_199(m, d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d)
+# define BOOST_PP_REPEAT_3_200(m, d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d)
+# define BOOST_PP_REPEAT_3_201(m, d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d)
+# define BOOST_PP_REPEAT_3_202(m, d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d)
+# define BOOST_PP_REPEAT_3_203(m, d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d)
+# define BOOST_PP_REPEAT_3_204(m, d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d)
+# define BOOST_PP_REPEAT_3_205(m, d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d)
+# define BOOST_PP_REPEAT_3_206(m, d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d)
+# define BOOST_PP_REPEAT_3_207(m, d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d)
+# define BOOST_PP_REPEAT_3_208(m, d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d)
+# define BOOST_PP_REPEAT_3_209(m, d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d)
+# define BOOST_PP_REPEAT_3_210(m, d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d)
+# define BOOST_PP_REPEAT_3_211(m, d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d)
+# define BOOST_PP_REPEAT_3_212(m, d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d)
+# define BOOST_PP_REPEAT_3_213(m, d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d)
+# define BOOST_PP_REPEAT_3_214(m, d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d)
+# define BOOST_PP_REPEAT_3_215(m, d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d)
+# define BOOST_PP_REPEAT_3_216(m, d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d)
+# define BOOST_PP_REPEAT_3_217(m, d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d)
+# define BOOST_PP_REPEAT_3_218(m, d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d)
+# define BOOST_PP_REPEAT_3_219(m, d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d)
+# define BOOST_PP_REPEAT_3_220(m, d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d)
+# define BOOST_PP_REPEAT_3_221(m, d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d)
+# define BOOST_PP_REPEAT_3_222(m, d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d)
+# define BOOST_PP_REPEAT_3_223(m, d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d)
+# define BOOST_PP_REPEAT_3_224(m, d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d)
+# define BOOST_PP_REPEAT_3_225(m, d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d)
+# define BOOST_PP_REPEAT_3_226(m, d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d)
+# define BOOST_PP_REPEAT_3_227(m, d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d)
+# define BOOST_PP_REPEAT_3_228(m, d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d)
+# define BOOST_PP_REPEAT_3_229(m, d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d)
+# define BOOST_PP_REPEAT_3_230(m, d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d)
+# define BOOST_PP_REPEAT_3_231(m, d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d)
+# define BOOST_PP_REPEAT_3_232(m, d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d)
+# define BOOST_PP_REPEAT_3_233(m, d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d)
+# define BOOST_PP_REPEAT_3_234(m, d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d)
+# define BOOST_PP_REPEAT_3_235(m, d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d)
+# define BOOST_PP_REPEAT_3_236(m, d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d)
+# define BOOST_PP_REPEAT_3_237(m, d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d)
+# define BOOST_PP_REPEAT_3_238(m, d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d)
+# define BOOST_PP_REPEAT_3_239(m, d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d)
+# define BOOST_PP_REPEAT_3_240(m, d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d)
+# define BOOST_PP_REPEAT_3_241(m, d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d)
+# define BOOST_PP_REPEAT_3_242(m, d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d)
+# define BOOST_PP_REPEAT_3_243(m, d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d)
+# define BOOST_PP_REPEAT_3_244(m, d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d)
+# define BOOST_PP_REPEAT_3_245(m, d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d)
+# define BOOST_PP_REPEAT_3_246(m, d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d)
+# define BOOST_PP_REPEAT_3_247(m, d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d)
+# define BOOST_PP_REPEAT_3_248(m, d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d)
+# define BOOST_PP_REPEAT_3_249(m, d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d)
+# define BOOST_PP_REPEAT_3_250(m, d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d)
+# define BOOST_PP_REPEAT_3_251(m, d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d)
+# define BOOST_PP_REPEAT_3_252(m, d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d)
+# define BOOST_PP_REPEAT_3_253(m, d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d)
+# define BOOST_PP_REPEAT_3_254(m, d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d)
+# define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d)
+# define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/repeat_from_to.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/repeat_from_to.hpp
new file mode 100644
index 0000000..efe539e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/repetition/repeat_from_to.hpp
@@ -0,0 +1,87 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
+# define BOOST_PREPROCESSOR_REPETITION_REPEAT_FROM_TO_HPP
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_REPEAT_FROM_TO */
+#
+# if 0
+# define BOOST_PP_REPEAT_FROM_TO(first, last, macro, data)
+# endif
+#
+# define BOOST_PP_REPEAT_FROM_TO BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# define BOOST_PP_REPEAT_FROM_TO_1(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_2(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_3(f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256), f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_4(f, l, m, dt) BOOST_PP_ERROR(0x0003)
+#
+# define BOOST_PP_REPEAT_FROM_TO_1ST BOOST_PP_REPEAT_FROM_TO_1
+# define BOOST_PP_REPEAT_FROM_TO_2ND BOOST_PP_REPEAT_FROM_TO_2
+# define BOOST_PP_REPEAT_FROM_TO_3RD BOOST_PP_REPEAT_FROM_TO_3
+#
+# /* BOOST_PP_REPEAT_FROM_TO_D */
+#
+# if 0
+# define BOOST_PP_REPEAT_FROM_TO_D(d, first, last, macro, data)
+# endif
+#
+# define BOOST_PP_REPEAT_FROM_TO_D BOOST_PP_CAT(BOOST_PP_REPEAT_FROM_TO_D_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
+# else
+# define BOOST_PP_REPEAT_FROM_TO_D_1(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_D_2(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_D_3(d, f, l, m, dt) BOOST_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_D_1_I(d, f, l, m, dt) BOOST_PP_REPEAT_1(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_1, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_2_I(d, f, l, m, dt) BOOST_PP_REPEAT_2(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_2, (d, f, m, dt))
+# define BOOST_PP_REPEAT_FROM_TO_D_3_I(d, f, l, m, dt) BOOST_PP_REPEAT_3(BOOST_PP_SUB_D(d, l, f), BOOST_PP_REPEAT_FROM_TO_M_3, (d, f, m, dt))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
+# define BOOST_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
+# define BOOST_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, BOOST_PP_TUPLE_REM_4 dfmd)
+# define BOOST_PP_REPEAT_FROM_TO_M_1_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, im)
+# define BOOST_PP_REPEAT_FROM_TO_M_2_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, im)
+# define BOOST_PP_REPEAT_FROM_TO_M_3_IM(z, n, im) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, im)
+# else
+# define BOOST_PP_REPEAT_FROM_TO_M_1(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
+# define BOOST_PP_REPEAT_FROM_TO_M_2(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
+# define BOOST_PP_REPEAT_FROM_TO_M_3(z, n, dfmd) BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, BOOST_PP_TUPLE_ELEM(4, 0, dfmd), BOOST_PP_TUPLE_ELEM(4, 1, dfmd), BOOST_PP_TUPLE_ELEM(4, 2, dfmd), BOOST_PP_TUPLE_ELEM(4, 3, dfmd))
+# endif
+#
+# define BOOST_PP_REPEAT_FROM_TO_M_1_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_1_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_2_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_2_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_3_I(z, n, d, f, m, dt) BOOST_PP_REPEAT_FROM_TO_M_3_II(z, BOOST_PP_ADD_D(d, n, f), m, dt)
+#
+# define BOOST_PP_REPEAT_FROM_TO_M_1_II(z, n, m, dt) m(z, n, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_2_II(z, n, m, dt) m(z, n, dt)
+# define BOOST_PP_REPEAT_FROM_TO_M_3_II(z, n, m, dt) m(z, n, dt)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/selection.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/selection.hpp
new file mode 100644
index 0000000..3b67fad
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/selection.hpp
@@ -0,0 +1,18 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SELECTION_HPP
+# define BOOST_PREPROCESSOR_SELECTION_HPP
+#
+# include <boost/preprocessor/selection/max.hpp>
+# include <boost/preprocessor/selection/min.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/selection/max.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/selection/max.hpp
new file mode 100644
index 0000000..407d702
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/selection/max.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SELECTION_MAX_HPP
+# define BOOST_PREPROCESSOR_SELECTION_MAX_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_MAX */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MAX(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(x, y), y, x)
+# else
+# define BOOST_PP_MAX(x, y) BOOST_PP_MAX_I(x, y)
+# define BOOST_PP_MAX_I(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(x, y), y, x)
+# endif
+#
+# /* BOOST_PP_MAX_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MAX_D(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, x, y), y, x)
+# else
+# define BOOST_PP_MAX_D(d, x, y) BOOST_PP_MAX_D_I(d, x, y)
+# define BOOST_PP_MAX_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, x, y), y, x)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/selection/min.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/selection/min.hpp
new file mode 100644
index 0000000..ee05588
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/selection/min.hpp
@@ -0,0 +1,39 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SELECTION_MIN_HPP
+# define BOOST_PREPROCESSOR_SELECTION_MIN_HPP
+#
+# include <boost/preprocessor/comparison/less_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+#
+# /* BOOST_PP_MIN */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MIN(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(y, x), y, x)
+# else
+# define BOOST_PP_MIN(x, y) BOOST_PP_MIN_I(x, y)
+# define BOOST_PP_MIN_I(x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL(y, x), y, x)
+# endif
+#
+# /* BOOST_PP_MIN_D */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_MIN_D(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, y, x), y, x)
+# else
+# define BOOST_PP_MIN_D(d, x, y) BOOST_PP_MIN_D_I(d, x, y)
+# define BOOST_PP_MIN_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_LESS_EQUAL_D(d, y, x), y, x)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq.hpp
new file mode 100644
index 0000000..cde208c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq.hpp
@@ -0,0 +1,44 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_HPP
+# define BOOST_PREPROCESSOR_SEQ_HPP
+#
+# include <boost/preprocessor/seq/cat.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+# include <boost/preprocessor/seq/filter.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/fold_right.hpp>
+# include <boost/preprocessor/seq/for_each.hpp>
+# include <boost/preprocessor/seq/for_each_i.hpp>
+# include <boost/preprocessor/seq/for_each_product.hpp>
+# include <boost/preprocessor/seq/insert.hpp>
+# include <boost/preprocessor/seq/pop_back.hpp>
+# include <boost/preprocessor/seq/pop_front.hpp>
+# include <boost/preprocessor/seq/push_back.hpp>
+# include <boost/preprocessor/seq/push_front.hpp>
+# include <boost/preprocessor/seq/remove.hpp>
+# include <boost/preprocessor/seq/replace.hpp>
+# include <boost/preprocessor/seq/rest_n.hpp>
+# include <boost/preprocessor/seq/reverse.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/seq/subseq.hpp>
+# include <boost/preprocessor/seq/to_array.hpp>
+# include <boost/preprocessor/seq/to_list.hpp>
+# include <boost/preprocessor/seq/to_tuple.hpp>
+# include <boost/preprocessor/seq/transform.hpp>
+# include <boost/preprocessor/seq/variadic_seq_to_seq.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/cat.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/cat.hpp
new file mode 100644
index 0000000..b6b09ff
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/cat.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_CAT_HPP
+# define BOOST_PREPROCESSOR_SEQ_CAT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+#
+# /* BOOST_PP_SEQ_CAT */
+#
+# define BOOST_PP_SEQ_CAT(seq) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
+ BOOST_PP_SEQ_CAT_I, \
+ BOOST_PP_SEQ_HEAD \
+ )(seq) \
+ /**/
+# define BOOST_PP_SEQ_CAT_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
+#
+# define BOOST_PP_SEQ_CAT_O(s, st, elem) BOOST_PP_SEQ_CAT_O_I(st, elem)
+# define BOOST_PP_SEQ_CAT_O_I(a, b) a ## b
+#
+# /* BOOST_PP_SEQ_CAT_S */
+#
+# define BOOST_PP_SEQ_CAT_S(s, seq) \
+ BOOST_PP_IF( \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
+ BOOST_PP_SEQ_CAT_S_I_A, \
+ BOOST_PP_SEQ_CAT_S_I_B \
+ )(s, seq) \
+ /**/
+# define BOOST_PP_SEQ_CAT_S_I_A(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
+# define BOOST_PP_SEQ_CAT_S_I_B(s, seq) BOOST_PP_SEQ_HEAD(seq)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/binary_transform.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/binary_transform.hpp
new file mode 100644
index 0000000..08b5f9d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/binary_transform.hpp
@@ -0,0 +1,47 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_BINARY_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_SEQ_DETAIL_BINARY_TRANSFORM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/variadic/detail/is_single_return.hpp>
+#
+# /* BOOST_PP_SEQ_BINARY_TRANSFORM */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_BINARY_TRANSFORM(seq) BOOST_PP_SEQ_BINARY_TRANSFORM_I(, seq)
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_I(p, seq) BOOST_PP_SEQ_BINARY_TRANSFORM_II(p ## seq)
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_II(seq) BOOST_PP_SEQ_BINARY_TRANSFORM_III(seq)
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_III(seq) BOOST_PP_CAT(BOOST_PP_SEQ_BINARY_TRANSFORM_A seq, 0)
+# else
+# define BOOST_PP_SEQ_BINARY_TRANSFORM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_BINARY_TRANSFORM_A seq, 0)
+# endif
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_REM(data) data
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_A(...) (BOOST_PP_SEQ_BINARY_TRANSFORM_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_B
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_B(...) (BOOST_PP_SEQ_BINARY_TRANSFORM_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_A
+# else
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_A(...) (BOOST_PP_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_B
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_B(...) (BOOST_PP_REM, __VA_ARGS__)() BOOST_PP_SEQ_BINARY_TRANSFORM_A
+# endif
+# else
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_A(e) (BOOST_PP_REM, e)() BOOST_PP_SEQ_BINARY_TRANSFORM_B
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_B(e) (BOOST_PP_REM, e)() BOOST_PP_SEQ_BINARY_TRANSFORM_A
+# endif
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_A0 (BOOST_PP_EAT, ?)
+# define BOOST_PP_SEQ_BINARY_TRANSFORM_B0 (BOOST_PP_EAT, ?)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/is_empty.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/is_empty.hpp
new file mode 100644
index 0000000..1a80a2f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/is_empty.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2015.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP
+# define BOOST_PREPROCESSOR_SEQ_DETAIL_IS_EMPTY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/logical/bool.hpp>
+# include <boost/preprocessor/logical/compl.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+/* An empty seq is one that is just BOOST_PP_SEQ_NIL */
+#
+# define BOOST_PP_SEQ_DETAIL_IS_EMPTY(seq) \
+ BOOST_PP_COMPL \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \
+ ) \
+/**/
+#
+# define BOOST_PP_SEQ_DETAIL_IS_EMPTY_SIZE(size) \
+ BOOST_PP_COMPL \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \
+ ) \
+/**/
+#
+# define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq) \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq)) \
+/**/
+#
+# define BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size) \
+ BOOST_PP_BOOL(size) \
+/**/
+#
+# define BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq) \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq (nil))) \
+/**/
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/split.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/split.hpp
new file mode 100644
index 0000000..7c33931
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/split.hpp
@@ -0,0 +1,284 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
+# define BOOST_PREPROCESSOR_SEQ_DETAIL_SPLIT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_SEQ_SPLIT */
+#
+# define BOOST_PP_SEQ_SPLIT(n, seq) BOOST_PP_SEQ_SPLIT_D(n, seq)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n seq)
+# else
+# define BOOST_PP_SEQ_SPLIT_D(n, seq) (BOOST_PP_SEQ_SPLIT_ ## n ## seq)
+# endif
+#
+# define BOOST_PP_SEQ_SPLIT_1(x) (x),
+# define BOOST_PP_SEQ_SPLIT_2(x) (x) BOOST_PP_SEQ_SPLIT_1
+# define BOOST_PP_SEQ_SPLIT_3(x) (x) BOOST_PP_SEQ_SPLIT_2
+# define BOOST_PP_SEQ_SPLIT_4(x) (x) BOOST_PP_SEQ_SPLIT_3
+# define BOOST_PP_SEQ_SPLIT_5(x) (x) BOOST_PP_SEQ_SPLIT_4
+# define BOOST_PP_SEQ_SPLIT_6(x) (x) BOOST_PP_SEQ_SPLIT_5
+# define BOOST_PP_SEQ_SPLIT_7(x) (x) BOOST_PP_SEQ_SPLIT_6
+# define BOOST_PP_SEQ_SPLIT_8(x) (x) BOOST_PP_SEQ_SPLIT_7
+# define BOOST_PP_SEQ_SPLIT_9(x) (x) BOOST_PP_SEQ_SPLIT_8
+# define BOOST_PP_SEQ_SPLIT_10(x) (x) BOOST_PP_SEQ_SPLIT_9
+# define BOOST_PP_SEQ_SPLIT_11(x) (x) BOOST_PP_SEQ_SPLIT_10
+# define BOOST_PP_SEQ_SPLIT_12(x) (x) BOOST_PP_SEQ_SPLIT_11
+# define BOOST_PP_SEQ_SPLIT_13(x) (x) BOOST_PP_SEQ_SPLIT_12
+# define BOOST_PP_SEQ_SPLIT_14(x) (x) BOOST_PP_SEQ_SPLIT_13
+# define BOOST_PP_SEQ_SPLIT_15(x) (x) BOOST_PP_SEQ_SPLIT_14
+# define BOOST_PP_SEQ_SPLIT_16(x) (x) BOOST_PP_SEQ_SPLIT_15
+# define BOOST_PP_SEQ_SPLIT_17(x) (x) BOOST_PP_SEQ_SPLIT_16
+# define BOOST_PP_SEQ_SPLIT_18(x) (x) BOOST_PP_SEQ_SPLIT_17
+# define BOOST_PP_SEQ_SPLIT_19(x) (x) BOOST_PP_SEQ_SPLIT_18
+# define BOOST_PP_SEQ_SPLIT_20(x) (x) BOOST_PP_SEQ_SPLIT_19
+# define BOOST_PP_SEQ_SPLIT_21(x) (x) BOOST_PP_SEQ_SPLIT_20
+# define BOOST_PP_SEQ_SPLIT_22(x) (x) BOOST_PP_SEQ_SPLIT_21
+# define BOOST_PP_SEQ_SPLIT_23(x) (x) BOOST_PP_SEQ_SPLIT_22
+# define BOOST_PP_SEQ_SPLIT_24(x) (x) BOOST_PP_SEQ_SPLIT_23
+# define BOOST_PP_SEQ_SPLIT_25(x) (x) BOOST_PP_SEQ_SPLIT_24
+# define BOOST_PP_SEQ_SPLIT_26(x) (x) BOOST_PP_SEQ_SPLIT_25
+# define BOOST_PP_SEQ_SPLIT_27(x) (x) BOOST_PP_SEQ_SPLIT_26
+# define BOOST_PP_SEQ_SPLIT_28(x) (x) BOOST_PP_SEQ_SPLIT_27
+# define BOOST_PP_SEQ_SPLIT_29(x) (x) BOOST_PP_SEQ_SPLIT_28
+# define BOOST_PP_SEQ_SPLIT_30(x) (x) BOOST_PP_SEQ_SPLIT_29
+# define BOOST_PP_SEQ_SPLIT_31(x) (x) BOOST_PP_SEQ_SPLIT_30
+# define BOOST_PP_SEQ_SPLIT_32(x) (x) BOOST_PP_SEQ_SPLIT_31
+# define BOOST_PP_SEQ_SPLIT_33(x) (x) BOOST_PP_SEQ_SPLIT_32
+# define BOOST_PP_SEQ_SPLIT_34(x) (x) BOOST_PP_SEQ_SPLIT_33
+# define BOOST_PP_SEQ_SPLIT_35(x) (x) BOOST_PP_SEQ_SPLIT_34
+# define BOOST_PP_SEQ_SPLIT_36(x) (x) BOOST_PP_SEQ_SPLIT_35
+# define BOOST_PP_SEQ_SPLIT_37(x) (x) BOOST_PP_SEQ_SPLIT_36
+# define BOOST_PP_SEQ_SPLIT_38(x) (x) BOOST_PP_SEQ_SPLIT_37
+# define BOOST_PP_SEQ_SPLIT_39(x) (x) BOOST_PP_SEQ_SPLIT_38
+# define BOOST_PP_SEQ_SPLIT_40(x) (x) BOOST_PP_SEQ_SPLIT_39
+# define BOOST_PP_SEQ_SPLIT_41(x) (x) BOOST_PP_SEQ_SPLIT_40
+# define BOOST_PP_SEQ_SPLIT_42(x) (x) BOOST_PP_SEQ_SPLIT_41
+# define BOOST_PP_SEQ_SPLIT_43(x) (x) BOOST_PP_SEQ_SPLIT_42
+# define BOOST_PP_SEQ_SPLIT_44(x) (x) BOOST_PP_SEQ_SPLIT_43
+# define BOOST_PP_SEQ_SPLIT_45(x) (x) BOOST_PP_SEQ_SPLIT_44
+# define BOOST_PP_SEQ_SPLIT_46(x) (x) BOOST_PP_SEQ_SPLIT_45
+# define BOOST_PP_SEQ_SPLIT_47(x) (x) BOOST_PP_SEQ_SPLIT_46
+# define BOOST_PP_SEQ_SPLIT_48(x) (x) BOOST_PP_SEQ_SPLIT_47
+# define BOOST_PP_SEQ_SPLIT_49(x) (x) BOOST_PP_SEQ_SPLIT_48
+# define BOOST_PP_SEQ_SPLIT_50(x) (x) BOOST_PP_SEQ_SPLIT_49
+# define BOOST_PP_SEQ_SPLIT_51(x) (x) BOOST_PP_SEQ_SPLIT_50
+# define BOOST_PP_SEQ_SPLIT_52(x) (x) BOOST_PP_SEQ_SPLIT_51
+# define BOOST_PP_SEQ_SPLIT_53(x) (x) BOOST_PP_SEQ_SPLIT_52
+# define BOOST_PP_SEQ_SPLIT_54(x) (x) BOOST_PP_SEQ_SPLIT_53
+# define BOOST_PP_SEQ_SPLIT_55(x) (x) BOOST_PP_SEQ_SPLIT_54
+# define BOOST_PP_SEQ_SPLIT_56(x) (x) BOOST_PP_SEQ_SPLIT_55
+# define BOOST_PP_SEQ_SPLIT_57(x) (x) BOOST_PP_SEQ_SPLIT_56
+# define BOOST_PP_SEQ_SPLIT_58(x) (x) BOOST_PP_SEQ_SPLIT_57
+# define BOOST_PP_SEQ_SPLIT_59(x) (x) BOOST_PP_SEQ_SPLIT_58
+# define BOOST_PP_SEQ_SPLIT_60(x) (x) BOOST_PP_SEQ_SPLIT_59
+# define BOOST_PP_SEQ_SPLIT_61(x) (x) BOOST_PP_SEQ_SPLIT_60
+# define BOOST_PP_SEQ_SPLIT_62(x) (x) BOOST_PP_SEQ_SPLIT_61
+# define BOOST_PP_SEQ_SPLIT_63(x) (x) BOOST_PP_SEQ_SPLIT_62
+# define BOOST_PP_SEQ_SPLIT_64(x) (x) BOOST_PP_SEQ_SPLIT_63
+# define BOOST_PP_SEQ_SPLIT_65(x) (x) BOOST_PP_SEQ_SPLIT_64
+# define BOOST_PP_SEQ_SPLIT_66(x) (x) BOOST_PP_SEQ_SPLIT_65
+# define BOOST_PP_SEQ_SPLIT_67(x) (x) BOOST_PP_SEQ_SPLIT_66
+# define BOOST_PP_SEQ_SPLIT_68(x) (x) BOOST_PP_SEQ_SPLIT_67
+# define BOOST_PP_SEQ_SPLIT_69(x) (x) BOOST_PP_SEQ_SPLIT_68
+# define BOOST_PP_SEQ_SPLIT_70(x) (x) BOOST_PP_SEQ_SPLIT_69
+# define BOOST_PP_SEQ_SPLIT_71(x) (x) BOOST_PP_SEQ_SPLIT_70
+# define BOOST_PP_SEQ_SPLIT_72(x) (x) BOOST_PP_SEQ_SPLIT_71
+# define BOOST_PP_SEQ_SPLIT_73(x) (x) BOOST_PP_SEQ_SPLIT_72
+# define BOOST_PP_SEQ_SPLIT_74(x) (x) BOOST_PP_SEQ_SPLIT_73
+# define BOOST_PP_SEQ_SPLIT_75(x) (x) BOOST_PP_SEQ_SPLIT_74
+# define BOOST_PP_SEQ_SPLIT_76(x) (x) BOOST_PP_SEQ_SPLIT_75
+# define BOOST_PP_SEQ_SPLIT_77(x) (x) BOOST_PP_SEQ_SPLIT_76
+# define BOOST_PP_SEQ_SPLIT_78(x) (x) BOOST_PP_SEQ_SPLIT_77
+# define BOOST_PP_SEQ_SPLIT_79(x) (x) BOOST_PP_SEQ_SPLIT_78
+# define BOOST_PP_SEQ_SPLIT_80(x) (x) BOOST_PP_SEQ_SPLIT_79
+# define BOOST_PP_SEQ_SPLIT_81(x) (x) BOOST_PP_SEQ_SPLIT_80
+# define BOOST_PP_SEQ_SPLIT_82(x) (x) BOOST_PP_SEQ_SPLIT_81
+# define BOOST_PP_SEQ_SPLIT_83(x) (x) BOOST_PP_SEQ_SPLIT_82
+# define BOOST_PP_SEQ_SPLIT_84(x) (x) BOOST_PP_SEQ_SPLIT_83
+# define BOOST_PP_SEQ_SPLIT_85(x) (x) BOOST_PP_SEQ_SPLIT_84
+# define BOOST_PP_SEQ_SPLIT_86(x) (x) BOOST_PP_SEQ_SPLIT_85
+# define BOOST_PP_SEQ_SPLIT_87(x) (x) BOOST_PP_SEQ_SPLIT_86
+# define BOOST_PP_SEQ_SPLIT_88(x) (x) BOOST_PP_SEQ_SPLIT_87
+# define BOOST_PP_SEQ_SPLIT_89(x) (x) BOOST_PP_SEQ_SPLIT_88
+# define BOOST_PP_SEQ_SPLIT_90(x) (x) BOOST_PP_SEQ_SPLIT_89
+# define BOOST_PP_SEQ_SPLIT_91(x) (x) BOOST_PP_SEQ_SPLIT_90
+# define BOOST_PP_SEQ_SPLIT_92(x) (x) BOOST_PP_SEQ_SPLIT_91
+# define BOOST_PP_SEQ_SPLIT_93(x) (x) BOOST_PP_SEQ_SPLIT_92
+# define BOOST_PP_SEQ_SPLIT_94(x) (x) BOOST_PP_SEQ_SPLIT_93
+# define BOOST_PP_SEQ_SPLIT_95(x) (x) BOOST_PP_SEQ_SPLIT_94
+# define BOOST_PP_SEQ_SPLIT_96(x) (x) BOOST_PP_SEQ_SPLIT_95
+# define BOOST_PP_SEQ_SPLIT_97(x) (x) BOOST_PP_SEQ_SPLIT_96
+# define BOOST_PP_SEQ_SPLIT_98(x) (x) BOOST_PP_SEQ_SPLIT_97
+# define BOOST_PP_SEQ_SPLIT_99(x) (x) BOOST_PP_SEQ_SPLIT_98
+# define BOOST_PP_SEQ_SPLIT_100(x) (x) BOOST_PP_SEQ_SPLIT_99
+# define BOOST_PP_SEQ_SPLIT_101(x) (x) BOOST_PP_SEQ_SPLIT_100
+# define BOOST_PP_SEQ_SPLIT_102(x) (x) BOOST_PP_SEQ_SPLIT_101
+# define BOOST_PP_SEQ_SPLIT_103(x) (x) BOOST_PP_SEQ_SPLIT_102
+# define BOOST_PP_SEQ_SPLIT_104(x) (x) BOOST_PP_SEQ_SPLIT_103
+# define BOOST_PP_SEQ_SPLIT_105(x) (x) BOOST_PP_SEQ_SPLIT_104
+# define BOOST_PP_SEQ_SPLIT_106(x) (x) BOOST_PP_SEQ_SPLIT_105
+# define BOOST_PP_SEQ_SPLIT_107(x) (x) BOOST_PP_SEQ_SPLIT_106
+# define BOOST_PP_SEQ_SPLIT_108(x) (x) BOOST_PP_SEQ_SPLIT_107
+# define BOOST_PP_SEQ_SPLIT_109(x) (x) BOOST_PP_SEQ_SPLIT_108
+# define BOOST_PP_SEQ_SPLIT_110(x) (x) BOOST_PP_SEQ_SPLIT_109
+# define BOOST_PP_SEQ_SPLIT_111(x) (x) BOOST_PP_SEQ_SPLIT_110
+# define BOOST_PP_SEQ_SPLIT_112(x) (x) BOOST_PP_SEQ_SPLIT_111
+# define BOOST_PP_SEQ_SPLIT_113(x) (x) BOOST_PP_SEQ_SPLIT_112
+# define BOOST_PP_SEQ_SPLIT_114(x) (x) BOOST_PP_SEQ_SPLIT_113
+# define BOOST_PP_SEQ_SPLIT_115(x) (x) BOOST_PP_SEQ_SPLIT_114
+# define BOOST_PP_SEQ_SPLIT_116(x) (x) BOOST_PP_SEQ_SPLIT_115
+# define BOOST_PP_SEQ_SPLIT_117(x) (x) BOOST_PP_SEQ_SPLIT_116
+# define BOOST_PP_SEQ_SPLIT_118(x) (x) BOOST_PP_SEQ_SPLIT_117
+# define BOOST_PP_SEQ_SPLIT_119(x) (x) BOOST_PP_SEQ_SPLIT_118
+# define BOOST_PP_SEQ_SPLIT_120(x) (x) BOOST_PP_SEQ_SPLIT_119
+# define BOOST_PP_SEQ_SPLIT_121(x) (x) BOOST_PP_SEQ_SPLIT_120
+# define BOOST_PP_SEQ_SPLIT_122(x) (x) BOOST_PP_SEQ_SPLIT_121
+# define BOOST_PP_SEQ_SPLIT_123(x) (x) BOOST_PP_SEQ_SPLIT_122
+# define BOOST_PP_SEQ_SPLIT_124(x) (x) BOOST_PP_SEQ_SPLIT_123
+# define BOOST_PP_SEQ_SPLIT_125(x) (x) BOOST_PP_SEQ_SPLIT_124
+# define BOOST_PP_SEQ_SPLIT_126(x) (x) BOOST_PP_SEQ_SPLIT_125
+# define BOOST_PP_SEQ_SPLIT_127(x) (x) BOOST_PP_SEQ_SPLIT_126
+# define BOOST_PP_SEQ_SPLIT_128(x) (x) BOOST_PP_SEQ_SPLIT_127
+# define BOOST_PP_SEQ_SPLIT_129(x) (x) BOOST_PP_SEQ_SPLIT_128
+# define BOOST_PP_SEQ_SPLIT_130(x) (x) BOOST_PP_SEQ_SPLIT_129
+# define BOOST_PP_SEQ_SPLIT_131(x) (x) BOOST_PP_SEQ_SPLIT_130
+# define BOOST_PP_SEQ_SPLIT_132(x) (x) BOOST_PP_SEQ_SPLIT_131
+# define BOOST_PP_SEQ_SPLIT_133(x) (x) BOOST_PP_SEQ_SPLIT_132
+# define BOOST_PP_SEQ_SPLIT_134(x) (x) BOOST_PP_SEQ_SPLIT_133
+# define BOOST_PP_SEQ_SPLIT_135(x) (x) BOOST_PP_SEQ_SPLIT_134
+# define BOOST_PP_SEQ_SPLIT_136(x) (x) BOOST_PP_SEQ_SPLIT_135
+# define BOOST_PP_SEQ_SPLIT_137(x) (x) BOOST_PP_SEQ_SPLIT_136
+# define BOOST_PP_SEQ_SPLIT_138(x) (x) BOOST_PP_SEQ_SPLIT_137
+# define BOOST_PP_SEQ_SPLIT_139(x) (x) BOOST_PP_SEQ_SPLIT_138
+# define BOOST_PP_SEQ_SPLIT_140(x) (x) BOOST_PP_SEQ_SPLIT_139
+# define BOOST_PP_SEQ_SPLIT_141(x) (x) BOOST_PP_SEQ_SPLIT_140
+# define BOOST_PP_SEQ_SPLIT_142(x) (x) BOOST_PP_SEQ_SPLIT_141
+# define BOOST_PP_SEQ_SPLIT_143(x) (x) BOOST_PP_SEQ_SPLIT_142
+# define BOOST_PP_SEQ_SPLIT_144(x) (x) BOOST_PP_SEQ_SPLIT_143
+# define BOOST_PP_SEQ_SPLIT_145(x) (x) BOOST_PP_SEQ_SPLIT_144
+# define BOOST_PP_SEQ_SPLIT_146(x) (x) BOOST_PP_SEQ_SPLIT_145
+# define BOOST_PP_SEQ_SPLIT_147(x) (x) BOOST_PP_SEQ_SPLIT_146
+# define BOOST_PP_SEQ_SPLIT_148(x) (x) BOOST_PP_SEQ_SPLIT_147
+# define BOOST_PP_SEQ_SPLIT_149(x) (x) BOOST_PP_SEQ_SPLIT_148
+# define BOOST_PP_SEQ_SPLIT_150(x) (x) BOOST_PP_SEQ_SPLIT_149
+# define BOOST_PP_SEQ_SPLIT_151(x) (x) BOOST_PP_SEQ_SPLIT_150
+# define BOOST_PP_SEQ_SPLIT_152(x) (x) BOOST_PP_SEQ_SPLIT_151
+# define BOOST_PP_SEQ_SPLIT_153(x) (x) BOOST_PP_SEQ_SPLIT_152
+# define BOOST_PP_SEQ_SPLIT_154(x) (x) BOOST_PP_SEQ_SPLIT_153
+# define BOOST_PP_SEQ_SPLIT_155(x) (x) BOOST_PP_SEQ_SPLIT_154
+# define BOOST_PP_SEQ_SPLIT_156(x) (x) BOOST_PP_SEQ_SPLIT_155
+# define BOOST_PP_SEQ_SPLIT_157(x) (x) BOOST_PP_SEQ_SPLIT_156
+# define BOOST_PP_SEQ_SPLIT_158(x) (x) BOOST_PP_SEQ_SPLIT_157
+# define BOOST_PP_SEQ_SPLIT_159(x) (x) BOOST_PP_SEQ_SPLIT_158
+# define BOOST_PP_SEQ_SPLIT_160(x) (x) BOOST_PP_SEQ_SPLIT_159
+# define BOOST_PP_SEQ_SPLIT_161(x) (x) BOOST_PP_SEQ_SPLIT_160
+# define BOOST_PP_SEQ_SPLIT_162(x) (x) BOOST_PP_SEQ_SPLIT_161
+# define BOOST_PP_SEQ_SPLIT_163(x) (x) BOOST_PP_SEQ_SPLIT_162
+# define BOOST_PP_SEQ_SPLIT_164(x) (x) BOOST_PP_SEQ_SPLIT_163
+# define BOOST_PP_SEQ_SPLIT_165(x) (x) BOOST_PP_SEQ_SPLIT_164
+# define BOOST_PP_SEQ_SPLIT_166(x) (x) BOOST_PP_SEQ_SPLIT_165
+# define BOOST_PP_SEQ_SPLIT_167(x) (x) BOOST_PP_SEQ_SPLIT_166
+# define BOOST_PP_SEQ_SPLIT_168(x) (x) BOOST_PP_SEQ_SPLIT_167
+# define BOOST_PP_SEQ_SPLIT_169(x) (x) BOOST_PP_SEQ_SPLIT_168
+# define BOOST_PP_SEQ_SPLIT_170(x) (x) BOOST_PP_SEQ_SPLIT_169
+# define BOOST_PP_SEQ_SPLIT_171(x) (x) BOOST_PP_SEQ_SPLIT_170
+# define BOOST_PP_SEQ_SPLIT_172(x) (x) BOOST_PP_SEQ_SPLIT_171
+# define BOOST_PP_SEQ_SPLIT_173(x) (x) BOOST_PP_SEQ_SPLIT_172
+# define BOOST_PP_SEQ_SPLIT_174(x) (x) BOOST_PP_SEQ_SPLIT_173
+# define BOOST_PP_SEQ_SPLIT_175(x) (x) BOOST_PP_SEQ_SPLIT_174
+# define BOOST_PP_SEQ_SPLIT_176(x) (x) BOOST_PP_SEQ_SPLIT_175
+# define BOOST_PP_SEQ_SPLIT_177(x) (x) BOOST_PP_SEQ_SPLIT_176
+# define BOOST_PP_SEQ_SPLIT_178(x) (x) BOOST_PP_SEQ_SPLIT_177
+# define BOOST_PP_SEQ_SPLIT_179(x) (x) BOOST_PP_SEQ_SPLIT_178
+# define BOOST_PP_SEQ_SPLIT_180(x) (x) BOOST_PP_SEQ_SPLIT_179
+# define BOOST_PP_SEQ_SPLIT_181(x) (x) BOOST_PP_SEQ_SPLIT_180
+# define BOOST_PP_SEQ_SPLIT_182(x) (x) BOOST_PP_SEQ_SPLIT_181
+# define BOOST_PP_SEQ_SPLIT_183(x) (x) BOOST_PP_SEQ_SPLIT_182
+# define BOOST_PP_SEQ_SPLIT_184(x) (x) BOOST_PP_SEQ_SPLIT_183
+# define BOOST_PP_SEQ_SPLIT_185(x) (x) BOOST_PP_SEQ_SPLIT_184
+# define BOOST_PP_SEQ_SPLIT_186(x) (x) BOOST_PP_SEQ_SPLIT_185
+# define BOOST_PP_SEQ_SPLIT_187(x) (x) BOOST_PP_SEQ_SPLIT_186
+# define BOOST_PP_SEQ_SPLIT_188(x) (x) BOOST_PP_SEQ_SPLIT_187
+# define BOOST_PP_SEQ_SPLIT_189(x) (x) BOOST_PP_SEQ_SPLIT_188
+# define BOOST_PP_SEQ_SPLIT_190(x) (x) BOOST_PP_SEQ_SPLIT_189
+# define BOOST_PP_SEQ_SPLIT_191(x) (x) BOOST_PP_SEQ_SPLIT_190
+# define BOOST_PP_SEQ_SPLIT_192(x) (x) BOOST_PP_SEQ_SPLIT_191
+# define BOOST_PP_SEQ_SPLIT_193(x) (x) BOOST_PP_SEQ_SPLIT_192
+# define BOOST_PP_SEQ_SPLIT_194(x) (x) BOOST_PP_SEQ_SPLIT_193
+# define BOOST_PP_SEQ_SPLIT_195(x) (x) BOOST_PP_SEQ_SPLIT_194
+# define BOOST_PP_SEQ_SPLIT_196(x) (x) BOOST_PP_SEQ_SPLIT_195
+# define BOOST_PP_SEQ_SPLIT_197(x) (x) BOOST_PP_SEQ_SPLIT_196
+# define BOOST_PP_SEQ_SPLIT_198(x) (x) BOOST_PP_SEQ_SPLIT_197
+# define BOOST_PP_SEQ_SPLIT_199(x) (x) BOOST_PP_SEQ_SPLIT_198
+# define BOOST_PP_SEQ_SPLIT_200(x) (x) BOOST_PP_SEQ_SPLIT_199
+# define BOOST_PP_SEQ_SPLIT_201(x) (x) BOOST_PP_SEQ_SPLIT_200
+# define BOOST_PP_SEQ_SPLIT_202(x) (x) BOOST_PP_SEQ_SPLIT_201
+# define BOOST_PP_SEQ_SPLIT_203(x) (x) BOOST_PP_SEQ_SPLIT_202
+# define BOOST_PP_SEQ_SPLIT_204(x) (x) BOOST_PP_SEQ_SPLIT_203
+# define BOOST_PP_SEQ_SPLIT_205(x) (x) BOOST_PP_SEQ_SPLIT_204
+# define BOOST_PP_SEQ_SPLIT_206(x) (x) BOOST_PP_SEQ_SPLIT_205
+# define BOOST_PP_SEQ_SPLIT_207(x) (x) BOOST_PP_SEQ_SPLIT_206
+# define BOOST_PP_SEQ_SPLIT_208(x) (x) BOOST_PP_SEQ_SPLIT_207
+# define BOOST_PP_SEQ_SPLIT_209(x) (x) BOOST_PP_SEQ_SPLIT_208
+# define BOOST_PP_SEQ_SPLIT_210(x) (x) BOOST_PP_SEQ_SPLIT_209
+# define BOOST_PP_SEQ_SPLIT_211(x) (x) BOOST_PP_SEQ_SPLIT_210
+# define BOOST_PP_SEQ_SPLIT_212(x) (x) BOOST_PP_SEQ_SPLIT_211
+# define BOOST_PP_SEQ_SPLIT_213(x) (x) BOOST_PP_SEQ_SPLIT_212
+# define BOOST_PP_SEQ_SPLIT_214(x) (x) BOOST_PP_SEQ_SPLIT_213
+# define BOOST_PP_SEQ_SPLIT_215(x) (x) BOOST_PP_SEQ_SPLIT_214
+# define BOOST_PP_SEQ_SPLIT_216(x) (x) BOOST_PP_SEQ_SPLIT_215
+# define BOOST_PP_SEQ_SPLIT_217(x) (x) BOOST_PP_SEQ_SPLIT_216
+# define BOOST_PP_SEQ_SPLIT_218(x) (x) BOOST_PP_SEQ_SPLIT_217
+# define BOOST_PP_SEQ_SPLIT_219(x) (x) BOOST_PP_SEQ_SPLIT_218
+# define BOOST_PP_SEQ_SPLIT_220(x) (x) BOOST_PP_SEQ_SPLIT_219
+# define BOOST_PP_SEQ_SPLIT_221(x) (x) BOOST_PP_SEQ_SPLIT_220
+# define BOOST_PP_SEQ_SPLIT_222(x) (x) BOOST_PP_SEQ_SPLIT_221
+# define BOOST_PP_SEQ_SPLIT_223(x) (x) BOOST_PP_SEQ_SPLIT_222
+# define BOOST_PP_SEQ_SPLIT_224(x) (x) BOOST_PP_SEQ_SPLIT_223
+# define BOOST_PP_SEQ_SPLIT_225(x) (x) BOOST_PP_SEQ_SPLIT_224
+# define BOOST_PP_SEQ_SPLIT_226(x) (x) BOOST_PP_SEQ_SPLIT_225
+# define BOOST_PP_SEQ_SPLIT_227(x) (x) BOOST_PP_SEQ_SPLIT_226
+# define BOOST_PP_SEQ_SPLIT_228(x) (x) BOOST_PP_SEQ_SPLIT_227
+# define BOOST_PP_SEQ_SPLIT_229(x) (x) BOOST_PP_SEQ_SPLIT_228
+# define BOOST_PP_SEQ_SPLIT_230(x) (x) BOOST_PP_SEQ_SPLIT_229
+# define BOOST_PP_SEQ_SPLIT_231(x) (x) BOOST_PP_SEQ_SPLIT_230
+# define BOOST_PP_SEQ_SPLIT_232(x) (x) BOOST_PP_SEQ_SPLIT_231
+# define BOOST_PP_SEQ_SPLIT_233(x) (x) BOOST_PP_SEQ_SPLIT_232
+# define BOOST_PP_SEQ_SPLIT_234(x) (x) BOOST_PP_SEQ_SPLIT_233
+# define BOOST_PP_SEQ_SPLIT_235(x) (x) BOOST_PP_SEQ_SPLIT_234
+# define BOOST_PP_SEQ_SPLIT_236(x) (x) BOOST_PP_SEQ_SPLIT_235
+# define BOOST_PP_SEQ_SPLIT_237(x) (x) BOOST_PP_SEQ_SPLIT_236
+# define BOOST_PP_SEQ_SPLIT_238(x) (x) BOOST_PP_SEQ_SPLIT_237
+# define BOOST_PP_SEQ_SPLIT_239(x) (x) BOOST_PP_SEQ_SPLIT_238
+# define BOOST_PP_SEQ_SPLIT_240(x) (x) BOOST_PP_SEQ_SPLIT_239
+# define BOOST_PP_SEQ_SPLIT_241(x) (x) BOOST_PP_SEQ_SPLIT_240
+# define BOOST_PP_SEQ_SPLIT_242(x) (x) BOOST_PP_SEQ_SPLIT_241
+# define BOOST_PP_SEQ_SPLIT_243(x) (x) BOOST_PP_SEQ_SPLIT_242
+# define BOOST_PP_SEQ_SPLIT_244(x) (x) BOOST_PP_SEQ_SPLIT_243
+# define BOOST_PP_SEQ_SPLIT_245(x) (x) BOOST_PP_SEQ_SPLIT_244
+# define BOOST_PP_SEQ_SPLIT_246(x) (x) BOOST_PP_SEQ_SPLIT_245
+# define BOOST_PP_SEQ_SPLIT_247(x) (x) BOOST_PP_SEQ_SPLIT_246
+# define BOOST_PP_SEQ_SPLIT_248(x) (x) BOOST_PP_SEQ_SPLIT_247
+# define BOOST_PP_SEQ_SPLIT_249(x) (x) BOOST_PP_SEQ_SPLIT_248
+# define BOOST_PP_SEQ_SPLIT_250(x) (x) BOOST_PP_SEQ_SPLIT_249
+# define BOOST_PP_SEQ_SPLIT_251(x) (x) BOOST_PP_SEQ_SPLIT_250
+# define BOOST_PP_SEQ_SPLIT_252(x) (x) BOOST_PP_SEQ_SPLIT_251
+# define BOOST_PP_SEQ_SPLIT_253(x) (x) BOOST_PP_SEQ_SPLIT_252
+# define BOOST_PP_SEQ_SPLIT_254(x) (x) BOOST_PP_SEQ_SPLIT_253
+# define BOOST_PP_SEQ_SPLIT_255(x) (x) BOOST_PP_SEQ_SPLIT_254
+# define BOOST_PP_SEQ_SPLIT_256(x) (x) BOOST_PP_SEQ_SPLIT_255
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/to_list_msvc.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/to_list_msvc.hpp
new file mode 100644
index 0000000..2599c00
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/detail/to_list_msvc.hpp
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2016. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_DETAIL_TO_LIST_MSVC_HPP
+# define BOOST_PREPROCESSOR_SEQ_DETAIL_TO_LIST_MSVC_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/control/while.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# define BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_STATE_RESULT(state) \
+ BOOST_PP_TUPLE_ELEM(2, 0, state) \
+/**/
+# define BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_STATE_SIZE(state) \
+ BOOST_PP_TUPLE_ELEM(2, 1, state) \
+/**/
+# define BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_PRED(d,state) \
+ BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_STATE_SIZE(state) \
+/**/
+# define BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_OP(d,state) \
+ ( \
+ BOOST_PP_CAT(BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_STATE_RESULT(state),), \
+ BOOST_PP_DEC(BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_STATE_SIZE(state)) \
+ ) \
+/**/
+#
+# /* BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC */
+#
+# define BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC(result,seqsize) \
+ BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_STATE_RESULT \
+ ( \
+ BOOST_PP_WHILE \
+ ( \
+ BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_PRED, \
+ BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC_OP, \
+ (result,seqsize) \
+ ) \
+ ) \
+/**/
+# endif // BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#
+# endif // BOOST_PREPROCESSOR_SEQ_DETAIL_TO_LIST_MSVC_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/elem.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/elem.hpp
new file mode 100644
index 0000000..9c7a4b2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/elem.hpp
@@ -0,0 +1,304 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_ELEM_HPP
+# define BOOST_PREPROCESSOR_SEQ_ELEM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+#
+# /* BOOST_PP_SEQ_ELEM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_ELEM(i, seq) BOOST_PP_SEQ_ELEM_I(i, seq)
+# else
+# define BOOST_PP_SEQ_ELEM(i, seq) BOOST_PP_SEQ_ELEM_I((i, seq))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II((BOOST_PP_SEQ_ELEM_ ## i seq))
+# define BOOST_PP_SEQ_ELEM_II(res) BOOST_PP_SEQ_ELEM_IV(BOOST_PP_SEQ_ELEM_III res)
+# define BOOST_PP_SEQ_ELEM_III(x, _) x BOOST_PP_EMPTY()
+# define BOOST_PP_SEQ_ELEM_IV(x) x
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_ELEM_I(par) BOOST_PP_SEQ_ELEM_II ## par
+# define BOOST_PP_SEQ_ELEM_II(i, seq) BOOST_PP_SEQ_ELEM_III(BOOST_PP_SEQ_ELEM_ ## i ## seq)
+# define BOOST_PP_SEQ_ELEM_III(im) BOOST_PP_SEQ_ELEM_IV(im)
+# define BOOST_PP_SEQ_ELEM_IV(x, _) x
+# else
+# if defined(__IBMC__) || defined(__IBMCPP__)
+# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_CAT(BOOST_PP_SEQ_ELEM_ ## i, seq))
+# else
+# define BOOST_PP_SEQ_ELEM_I(i, seq) BOOST_PP_SEQ_ELEM_II(BOOST_PP_SEQ_ELEM_ ## i seq)
+# endif
+# define BOOST_PP_SEQ_ELEM_II(im) BOOST_PP_SEQ_ELEM_III(im)
+# define BOOST_PP_SEQ_ELEM_III(x, _) x
+# endif
+#
+# define BOOST_PP_SEQ_ELEM_0(x) x, BOOST_PP_NIL
+# define BOOST_PP_SEQ_ELEM_1(_) BOOST_PP_SEQ_ELEM_0
+# define BOOST_PP_SEQ_ELEM_2(_) BOOST_PP_SEQ_ELEM_1
+# define BOOST_PP_SEQ_ELEM_3(_) BOOST_PP_SEQ_ELEM_2
+# define BOOST_PP_SEQ_ELEM_4(_) BOOST_PP_SEQ_ELEM_3
+# define BOOST_PP_SEQ_ELEM_5(_) BOOST_PP_SEQ_ELEM_4
+# define BOOST_PP_SEQ_ELEM_6(_) BOOST_PP_SEQ_ELEM_5
+# define BOOST_PP_SEQ_ELEM_7(_) BOOST_PP_SEQ_ELEM_6
+# define BOOST_PP_SEQ_ELEM_8(_) BOOST_PP_SEQ_ELEM_7
+# define BOOST_PP_SEQ_ELEM_9(_) BOOST_PP_SEQ_ELEM_8
+# define BOOST_PP_SEQ_ELEM_10(_) BOOST_PP_SEQ_ELEM_9
+# define BOOST_PP_SEQ_ELEM_11(_) BOOST_PP_SEQ_ELEM_10
+# define BOOST_PP_SEQ_ELEM_12(_) BOOST_PP_SEQ_ELEM_11
+# define BOOST_PP_SEQ_ELEM_13(_) BOOST_PP_SEQ_ELEM_12
+# define BOOST_PP_SEQ_ELEM_14(_) BOOST_PP_SEQ_ELEM_13
+# define BOOST_PP_SEQ_ELEM_15(_) BOOST_PP_SEQ_ELEM_14
+# define BOOST_PP_SEQ_ELEM_16(_) BOOST_PP_SEQ_ELEM_15
+# define BOOST_PP_SEQ_ELEM_17(_) BOOST_PP_SEQ_ELEM_16
+# define BOOST_PP_SEQ_ELEM_18(_) BOOST_PP_SEQ_ELEM_17
+# define BOOST_PP_SEQ_ELEM_19(_) BOOST_PP_SEQ_ELEM_18
+# define BOOST_PP_SEQ_ELEM_20(_) BOOST_PP_SEQ_ELEM_19
+# define BOOST_PP_SEQ_ELEM_21(_) BOOST_PP_SEQ_ELEM_20
+# define BOOST_PP_SEQ_ELEM_22(_) BOOST_PP_SEQ_ELEM_21
+# define BOOST_PP_SEQ_ELEM_23(_) BOOST_PP_SEQ_ELEM_22
+# define BOOST_PP_SEQ_ELEM_24(_) BOOST_PP_SEQ_ELEM_23
+# define BOOST_PP_SEQ_ELEM_25(_) BOOST_PP_SEQ_ELEM_24
+# define BOOST_PP_SEQ_ELEM_26(_) BOOST_PP_SEQ_ELEM_25
+# define BOOST_PP_SEQ_ELEM_27(_) BOOST_PP_SEQ_ELEM_26
+# define BOOST_PP_SEQ_ELEM_28(_) BOOST_PP_SEQ_ELEM_27
+# define BOOST_PP_SEQ_ELEM_29(_) BOOST_PP_SEQ_ELEM_28
+# define BOOST_PP_SEQ_ELEM_30(_) BOOST_PP_SEQ_ELEM_29
+# define BOOST_PP_SEQ_ELEM_31(_) BOOST_PP_SEQ_ELEM_30
+# define BOOST_PP_SEQ_ELEM_32(_) BOOST_PP_SEQ_ELEM_31
+# define BOOST_PP_SEQ_ELEM_33(_) BOOST_PP_SEQ_ELEM_32
+# define BOOST_PP_SEQ_ELEM_34(_) BOOST_PP_SEQ_ELEM_33
+# define BOOST_PP_SEQ_ELEM_35(_) BOOST_PP_SEQ_ELEM_34
+# define BOOST_PP_SEQ_ELEM_36(_) BOOST_PP_SEQ_ELEM_35
+# define BOOST_PP_SEQ_ELEM_37(_) BOOST_PP_SEQ_ELEM_36
+# define BOOST_PP_SEQ_ELEM_38(_) BOOST_PP_SEQ_ELEM_37
+# define BOOST_PP_SEQ_ELEM_39(_) BOOST_PP_SEQ_ELEM_38
+# define BOOST_PP_SEQ_ELEM_40(_) BOOST_PP_SEQ_ELEM_39
+# define BOOST_PP_SEQ_ELEM_41(_) BOOST_PP_SEQ_ELEM_40
+# define BOOST_PP_SEQ_ELEM_42(_) BOOST_PP_SEQ_ELEM_41
+# define BOOST_PP_SEQ_ELEM_43(_) BOOST_PP_SEQ_ELEM_42
+# define BOOST_PP_SEQ_ELEM_44(_) BOOST_PP_SEQ_ELEM_43
+# define BOOST_PP_SEQ_ELEM_45(_) BOOST_PP_SEQ_ELEM_44
+# define BOOST_PP_SEQ_ELEM_46(_) BOOST_PP_SEQ_ELEM_45
+# define BOOST_PP_SEQ_ELEM_47(_) BOOST_PP_SEQ_ELEM_46
+# define BOOST_PP_SEQ_ELEM_48(_) BOOST_PP_SEQ_ELEM_47
+# define BOOST_PP_SEQ_ELEM_49(_) BOOST_PP_SEQ_ELEM_48
+# define BOOST_PP_SEQ_ELEM_50(_) BOOST_PP_SEQ_ELEM_49
+# define BOOST_PP_SEQ_ELEM_51(_) BOOST_PP_SEQ_ELEM_50
+# define BOOST_PP_SEQ_ELEM_52(_) BOOST_PP_SEQ_ELEM_51
+# define BOOST_PP_SEQ_ELEM_53(_) BOOST_PP_SEQ_ELEM_52
+# define BOOST_PP_SEQ_ELEM_54(_) BOOST_PP_SEQ_ELEM_53
+# define BOOST_PP_SEQ_ELEM_55(_) BOOST_PP_SEQ_ELEM_54
+# define BOOST_PP_SEQ_ELEM_56(_) BOOST_PP_SEQ_ELEM_55
+# define BOOST_PP_SEQ_ELEM_57(_) BOOST_PP_SEQ_ELEM_56
+# define BOOST_PP_SEQ_ELEM_58(_) BOOST_PP_SEQ_ELEM_57
+# define BOOST_PP_SEQ_ELEM_59(_) BOOST_PP_SEQ_ELEM_58
+# define BOOST_PP_SEQ_ELEM_60(_) BOOST_PP_SEQ_ELEM_59
+# define BOOST_PP_SEQ_ELEM_61(_) BOOST_PP_SEQ_ELEM_60
+# define BOOST_PP_SEQ_ELEM_62(_) BOOST_PP_SEQ_ELEM_61
+# define BOOST_PP_SEQ_ELEM_63(_) BOOST_PP_SEQ_ELEM_62
+# define BOOST_PP_SEQ_ELEM_64(_) BOOST_PP_SEQ_ELEM_63
+# define BOOST_PP_SEQ_ELEM_65(_) BOOST_PP_SEQ_ELEM_64
+# define BOOST_PP_SEQ_ELEM_66(_) BOOST_PP_SEQ_ELEM_65
+# define BOOST_PP_SEQ_ELEM_67(_) BOOST_PP_SEQ_ELEM_66
+# define BOOST_PP_SEQ_ELEM_68(_) BOOST_PP_SEQ_ELEM_67
+# define BOOST_PP_SEQ_ELEM_69(_) BOOST_PP_SEQ_ELEM_68
+# define BOOST_PP_SEQ_ELEM_70(_) BOOST_PP_SEQ_ELEM_69
+# define BOOST_PP_SEQ_ELEM_71(_) BOOST_PP_SEQ_ELEM_70
+# define BOOST_PP_SEQ_ELEM_72(_) BOOST_PP_SEQ_ELEM_71
+# define BOOST_PP_SEQ_ELEM_73(_) BOOST_PP_SEQ_ELEM_72
+# define BOOST_PP_SEQ_ELEM_74(_) BOOST_PP_SEQ_ELEM_73
+# define BOOST_PP_SEQ_ELEM_75(_) BOOST_PP_SEQ_ELEM_74
+# define BOOST_PP_SEQ_ELEM_76(_) BOOST_PP_SEQ_ELEM_75
+# define BOOST_PP_SEQ_ELEM_77(_) BOOST_PP_SEQ_ELEM_76
+# define BOOST_PP_SEQ_ELEM_78(_) BOOST_PP_SEQ_ELEM_77
+# define BOOST_PP_SEQ_ELEM_79(_) BOOST_PP_SEQ_ELEM_78
+# define BOOST_PP_SEQ_ELEM_80(_) BOOST_PP_SEQ_ELEM_79
+# define BOOST_PP_SEQ_ELEM_81(_) BOOST_PP_SEQ_ELEM_80
+# define BOOST_PP_SEQ_ELEM_82(_) BOOST_PP_SEQ_ELEM_81
+# define BOOST_PP_SEQ_ELEM_83(_) BOOST_PP_SEQ_ELEM_82
+# define BOOST_PP_SEQ_ELEM_84(_) BOOST_PP_SEQ_ELEM_83
+# define BOOST_PP_SEQ_ELEM_85(_) BOOST_PP_SEQ_ELEM_84
+# define BOOST_PP_SEQ_ELEM_86(_) BOOST_PP_SEQ_ELEM_85
+# define BOOST_PP_SEQ_ELEM_87(_) BOOST_PP_SEQ_ELEM_86
+# define BOOST_PP_SEQ_ELEM_88(_) BOOST_PP_SEQ_ELEM_87
+# define BOOST_PP_SEQ_ELEM_89(_) BOOST_PP_SEQ_ELEM_88
+# define BOOST_PP_SEQ_ELEM_90(_) BOOST_PP_SEQ_ELEM_89
+# define BOOST_PP_SEQ_ELEM_91(_) BOOST_PP_SEQ_ELEM_90
+# define BOOST_PP_SEQ_ELEM_92(_) BOOST_PP_SEQ_ELEM_91
+# define BOOST_PP_SEQ_ELEM_93(_) BOOST_PP_SEQ_ELEM_92
+# define BOOST_PP_SEQ_ELEM_94(_) BOOST_PP_SEQ_ELEM_93
+# define BOOST_PP_SEQ_ELEM_95(_) BOOST_PP_SEQ_ELEM_94
+# define BOOST_PP_SEQ_ELEM_96(_) BOOST_PP_SEQ_ELEM_95
+# define BOOST_PP_SEQ_ELEM_97(_) BOOST_PP_SEQ_ELEM_96
+# define BOOST_PP_SEQ_ELEM_98(_) BOOST_PP_SEQ_ELEM_97
+# define BOOST_PP_SEQ_ELEM_99(_) BOOST_PP_SEQ_ELEM_98
+# define BOOST_PP_SEQ_ELEM_100(_) BOOST_PP_SEQ_ELEM_99
+# define BOOST_PP_SEQ_ELEM_101(_) BOOST_PP_SEQ_ELEM_100
+# define BOOST_PP_SEQ_ELEM_102(_) BOOST_PP_SEQ_ELEM_101
+# define BOOST_PP_SEQ_ELEM_103(_) BOOST_PP_SEQ_ELEM_102
+# define BOOST_PP_SEQ_ELEM_104(_) BOOST_PP_SEQ_ELEM_103
+# define BOOST_PP_SEQ_ELEM_105(_) BOOST_PP_SEQ_ELEM_104
+# define BOOST_PP_SEQ_ELEM_106(_) BOOST_PP_SEQ_ELEM_105
+# define BOOST_PP_SEQ_ELEM_107(_) BOOST_PP_SEQ_ELEM_106
+# define BOOST_PP_SEQ_ELEM_108(_) BOOST_PP_SEQ_ELEM_107
+# define BOOST_PP_SEQ_ELEM_109(_) BOOST_PP_SEQ_ELEM_108
+# define BOOST_PP_SEQ_ELEM_110(_) BOOST_PP_SEQ_ELEM_109
+# define BOOST_PP_SEQ_ELEM_111(_) BOOST_PP_SEQ_ELEM_110
+# define BOOST_PP_SEQ_ELEM_112(_) BOOST_PP_SEQ_ELEM_111
+# define BOOST_PP_SEQ_ELEM_113(_) BOOST_PP_SEQ_ELEM_112
+# define BOOST_PP_SEQ_ELEM_114(_) BOOST_PP_SEQ_ELEM_113
+# define BOOST_PP_SEQ_ELEM_115(_) BOOST_PP_SEQ_ELEM_114
+# define BOOST_PP_SEQ_ELEM_116(_) BOOST_PP_SEQ_ELEM_115
+# define BOOST_PP_SEQ_ELEM_117(_) BOOST_PP_SEQ_ELEM_116
+# define BOOST_PP_SEQ_ELEM_118(_) BOOST_PP_SEQ_ELEM_117
+# define BOOST_PP_SEQ_ELEM_119(_) BOOST_PP_SEQ_ELEM_118
+# define BOOST_PP_SEQ_ELEM_120(_) BOOST_PP_SEQ_ELEM_119
+# define BOOST_PP_SEQ_ELEM_121(_) BOOST_PP_SEQ_ELEM_120
+# define BOOST_PP_SEQ_ELEM_122(_) BOOST_PP_SEQ_ELEM_121
+# define BOOST_PP_SEQ_ELEM_123(_) BOOST_PP_SEQ_ELEM_122
+# define BOOST_PP_SEQ_ELEM_124(_) BOOST_PP_SEQ_ELEM_123
+# define BOOST_PP_SEQ_ELEM_125(_) BOOST_PP_SEQ_ELEM_124
+# define BOOST_PP_SEQ_ELEM_126(_) BOOST_PP_SEQ_ELEM_125
+# define BOOST_PP_SEQ_ELEM_127(_) BOOST_PP_SEQ_ELEM_126
+# define BOOST_PP_SEQ_ELEM_128(_) BOOST_PP_SEQ_ELEM_127
+# define BOOST_PP_SEQ_ELEM_129(_) BOOST_PP_SEQ_ELEM_128
+# define BOOST_PP_SEQ_ELEM_130(_) BOOST_PP_SEQ_ELEM_129
+# define BOOST_PP_SEQ_ELEM_131(_) BOOST_PP_SEQ_ELEM_130
+# define BOOST_PP_SEQ_ELEM_132(_) BOOST_PP_SEQ_ELEM_131
+# define BOOST_PP_SEQ_ELEM_133(_) BOOST_PP_SEQ_ELEM_132
+# define BOOST_PP_SEQ_ELEM_134(_) BOOST_PP_SEQ_ELEM_133
+# define BOOST_PP_SEQ_ELEM_135(_) BOOST_PP_SEQ_ELEM_134
+# define BOOST_PP_SEQ_ELEM_136(_) BOOST_PP_SEQ_ELEM_135
+# define BOOST_PP_SEQ_ELEM_137(_) BOOST_PP_SEQ_ELEM_136
+# define BOOST_PP_SEQ_ELEM_138(_) BOOST_PP_SEQ_ELEM_137
+# define BOOST_PP_SEQ_ELEM_139(_) BOOST_PP_SEQ_ELEM_138
+# define BOOST_PP_SEQ_ELEM_140(_) BOOST_PP_SEQ_ELEM_139
+# define BOOST_PP_SEQ_ELEM_141(_) BOOST_PP_SEQ_ELEM_140
+# define BOOST_PP_SEQ_ELEM_142(_) BOOST_PP_SEQ_ELEM_141
+# define BOOST_PP_SEQ_ELEM_143(_) BOOST_PP_SEQ_ELEM_142
+# define BOOST_PP_SEQ_ELEM_144(_) BOOST_PP_SEQ_ELEM_143
+# define BOOST_PP_SEQ_ELEM_145(_) BOOST_PP_SEQ_ELEM_144
+# define BOOST_PP_SEQ_ELEM_146(_) BOOST_PP_SEQ_ELEM_145
+# define BOOST_PP_SEQ_ELEM_147(_) BOOST_PP_SEQ_ELEM_146
+# define BOOST_PP_SEQ_ELEM_148(_) BOOST_PP_SEQ_ELEM_147
+# define BOOST_PP_SEQ_ELEM_149(_) BOOST_PP_SEQ_ELEM_148
+# define BOOST_PP_SEQ_ELEM_150(_) BOOST_PP_SEQ_ELEM_149
+# define BOOST_PP_SEQ_ELEM_151(_) BOOST_PP_SEQ_ELEM_150
+# define BOOST_PP_SEQ_ELEM_152(_) BOOST_PP_SEQ_ELEM_151
+# define BOOST_PP_SEQ_ELEM_153(_) BOOST_PP_SEQ_ELEM_152
+# define BOOST_PP_SEQ_ELEM_154(_) BOOST_PP_SEQ_ELEM_153
+# define BOOST_PP_SEQ_ELEM_155(_) BOOST_PP_SEQ_ELEM_154
+# define BOOST_PP_SEQ_ELEM_156(_) BOOST_PP_SEQ_ELEM_155
+# define BOOST_PP_SEQ_ELEM_157(_) BOOST_PP_SEQ_ELEM_156
+# define BOOST_PP_SEQ_ELEM_158(_) BOOST_PP_SEQ_ELEM_157
+# define BOOST_PP_SEQ_ELEM_159(_) BOOST_PP_SEQ_ELEM_158
+# define BOOST_PP_SEQ_ELEM_160(_) BOOST_PP_SEQ_ELEM_159
+# define BOOST_PP_SEQ_ELEM_161(_) BOOST_PP_SEQ_ELEM_160
+# define BOOST_PP_SEQ_ELEM_162(_) BOOST_PP_SEQ_ELEM_161
+# define BOOST_PP_SEQ_ELEM_163(_) BOOST_PP_SEQ_ELEM_162
+# define BOOST_PP_SEQ_ELEM_164(_) BOOST_PP_SEQ_ELEM_163
+# define BOOST_PP_SEQ_ELEM_165(_) BOOST_PP_SEQ_ELEM_164
+# define BOOST_PP_SEQ_ELEM_166(_) BOOST_PP_SEQ_ELEM_165
+# define BOOST_PP_SEQ_ELEM_167(_) BOOST_PP_SEQ_ELEM_166
+# define BOOST_PP_SEQ_ELEM_168(_) BOOST_PP_SEQ_ELEM_167
+# define BOOST_PP_SEQ_ELEM_169(_) BOOST_PP_SEQ_ELEM_168
+# define BOOST_PP_SEQ_ELEM_170(_) BOOST_PP_SEQ_ELEM_169
+# define BOOST_PP_SEQ_ELEM_171(_) BOOST_PP_SEQ_ELEM_170
+# define BOOST_PP_SEQ_ELEM_172(_) BOOST_PP_SEQ_ELEM_171
+# define BOOST_PP_SEQ_ELEM_173(_) BOOST_PP_SEQ_ELEM_172
+# define BOOST_PP_SEQ_ELEM_174(_) BOOST_PP_SEQ_ELEM_173
+# define BOOST_PP_SEQ_ELEM_175(_) BOOST_PP_SEQ_ELEM_174
+# define BOOST_PP_SEQ_ELEM_176(_) BOOST_PP_SEQ_ELEM_175
+# define BOOST_PP_SEQ_ELEM_177(_) BOOST_PP_SEQ_ELEM_176
+# define BOOST_PP_SEQ_ELEM_178(_) BOOST_PP_SEQ_ELEM_177
+# define BOOST_PP_SEQ_ELEM_179(_) BOOST_PP_SEQ_ELEM_178
+# define BOOST_PP_SEQ_ELEM_180(_) BOOST_PP_SEQ_ELEM_179
+# define BOOST_PP_SEQ_ELEM_181(_) BOOST_PP_SEQ_ELEM_180
+# define BOOST_PP_SEQ_ELEM_182(_) BOOST_PP_SEQ_ELEM_181
+# define BOOST_PP_SEQ_ELEM_183(_) BOOST_PP_SEQ_ELEM_182
+# define BOOST_PP_SEQ_ELEM_184(_) BOOST_PP_SEQ_ELEM_183
+# define BOOST_PP_SEQ_ELEM_185(_) BOOST_PP_SEQ_ELEM_184
+# define BOOST_PP_SEQ_ELEM_186(_) BOOST_PP_SEQ_ELEM_185
+# define BOOST_PP_SEQ_ELEM_187(_) BOOST_PP_SEQ_ELEM_186
+# define BOOST_PP_SEQ_ELEM_188(_) BOOST_PP_SEQ_ELEM_187
+# define BOOST_PP_SEQ_ELEM_189(_) BOOST_PP_SEQ_ELEM_188
+# define BOOST_PP_SEQ_ELEM_190(_) BOOST_PP_SEQ_ELEM_189
+# define BOOST_PP_SEQ_ELEM_191(_) BOOST_PP_SEQ_ELEM_190
+# define BOOST_PP_SEQ_ELEM_192(_) BOOST_PP_SEQ_ELEM_191
+# define BOOST_PP_SEQ_ELEM_193(_) BOOST_PP_SEQ_ELEM_192
+# define BOOST_PP_SEQ_ELEM_194(_) BOOST_PP_SEQ_ELEM_193
+# define BOOST_PP_SEQ_ELEM_195(_) BOOST_PP_SEQ_ELEM_194
+# define BOOST_PP_SEQ_ELEM_196(_) BOOST_PP_SEQ_ELEM_195
+# define BOOST_PP_SEQ_ELEM_197(_) BOOST_PP_SEQ_ELEM_196
+# define BOOST_PP_SEQ_ELEM_198(_) BOOST_PP_SEQ_ELEM_197
+# define BOOST_PP_SEQ_ELEM_199(_) BOOST_PP_SEQ_ELEM_198
+# define BOOST_PP_SEQ_ELEM_200(_) BOOST_PP_SEQ_ELEM_199
+# define BOOST_PP_SEQ_ELEM_201(_) BOOST_PP_SEQ_ELEM_200
+# define BOOST_PP_SEQ_ELEM_202(_) BOOST_PP_SEQ_ELEM_201
+# define BOOST_PP_SEQ_ELEM_203(_) BOOST_PP_SEQ_ELEM_202
+# define BOOST_PP_SEQ_ELEM_204(_) BOOST_PP_SEQ_ELEM_203
+# define BOOST_PP_SEQ_ELEM_205(_) BOOST_PP_SEQ_ELEM_204
+# define BOOST_PP_SEQ_ELEM_206(_) BOOST_PP_SEQ_ELEM_205
+# define BOOST_PP_SEQ_ELEM_207(_) BOOST_PP_SEQ_ELEM_206
+# define BOOST_PP_SEQ_ELEM_208(_) BOOST_PP_SEQ_ELEM_207
+# define BOOST_PP_SEQ_ELEM_209(_) BOOST_PP_SEQ_ELEM_208
+# define BOOST_PP_SEQ_ELEM_210(_) BOOST_PP_SEQ_ELEM_209
+# define BOOST_PP_SEQ_ELEM_211(_) BOOST_PP_SEQ_ELEM_210
+# define BOOST_PP_SEQ_ELEM_212(_) BOOST_PP_SEQ_ELEM_211
+# define BOOST_PP_SEQ_ELEM_213(_) BOOST_PP_SEQ_ELEM_212
+# define BOOST_PP_SEQ_ELEM_214(_) BOOST_PP_SEQ_ELEM_213
+# define BOOST_PP_SEQ_ELEM_215(_) BOOST_PP_SEQ_ELEM_214
+# define BOOST_PP_SEQ_ELEM_216(_) BOOST_PP_SEQ_ELEM_215
+# define BOOST_PP_SEQ_ELEM_217(_) BOOST_PP_SEQ_ELEM_216
+# define BOOST_PP_SEQ_ELEM_218(_) BOOST_PP_SEQ_ELEM_217
+# define BOOST_PP_SEQ_ELEM_219(_) BOOST_PP_SEQ_ELEM_218
+# define BOOST_PP_SEQ_ELEM_220(_) BOOST_PP_SEQ_ELEM_219
+# define BOOST_PP_SEQ_ELEM_221(_) BOOST_PP_SEQ_ELEM_220
+# define BOOST_PP_SEQ_ELEM_222(_) BOOST_PP_SEQ_ELEM_221
+# define BOOST_PP_SEQ_ELEM_223(_) BOOST_PP_SEQ_ELEM_222
+# define BOOST_PP_SEQ_ELEM_224(_) BOOST_PP_SEQ_ELEM_223
+# define BOOST_PP_SEQ_ELEM_225(_) BOOST_PP_SEQ_ELEM_224
+# define BOOST_PP_SEQ_ELEM_226(_) BOOST_PP_SEQ_ELEM_225
+# define BOOST_PP_SEQ_ELEM_227(_) BOOST_PP_SEQ_ELEM_226
+# define BOOST_PP_SEQ_ELEM_228(_) BOOST_PP_SEQ_ELEM_227
+# define BOOST_PP_SEQ_ELEM_229(_) BOOST_PP_SEQ_ELEM_228
+# define BOOST_PP_SEQ_ELEM_230(_) BOOST_PP_SEQ_ELEM_229
+# define BOOST_PP_SEQ_ELEM_231(_) BOOST_PP_SEQ_ELEM_230
+# define BOOST_PP_SEQ_ELEM_232(_) BOOST_PP_SEQ_ELEM_231
+# define BOOST_PP_SEQ_ELEM_233(_) BOOST_PP_SEQ_ELEM_232
+# define BOOST_PP_SEQ_ELEM_234(_) BOOST_PP_SEQ_ELEM_233
+# define BOOST_PP_SEQ_ELEM_235(_) BOOST_PP_SEQ_ELEM_234
+# define BOOST_PP_SEQ_ELEM_236(_) BOOST_PP_SEQ_ELEM_235
+# define BOOST_PP_SEQ_ELEM_237(_) BOOST_PP_SEQ_ELEM_236
+# define BOOST_PP_SEQ_ELEM_238(_) BOOST_PP_SEQ_ELEM_237
+# define BOOST_PP_SEQ_ELEM_239(_) BOOST_PP_SEQ_ELEM_238
+# define BOOST_PP_SEQ_ELEM_240(_) BOOST_PP_SEQ_ELEM_239
+# define BOOST_PP_SEQ_ELEM_241(_) BOOST_PP_SEQ_ELEM_240
+# define BOOST_PP_SEQ_ELEM_242(_) BOOST_PP_SEQ_ELEM_241
+# define BOOST_PP_SEQ_ELEM_243(_) BOOST_PP_SEQ_ELEM_242
+# define BOOST_PP_SEQ_ELEM_244(_) BOOST_PP_SEQ_ELEM_243
+# define BOOST_PP_SEQ_ELEM_245(_) BOOST_PP_SEQ_ELEM_244
+# define BOOST_PP_SEQ_ELEM_246(_) BOOST_PP_SEQ_ELEM_245
+# define BOOST_PP_SEQ_ELEM_247(_) BOOST_PP_SEQ_ELEM_246
+# define BOOST_PP_SEQ_ELEM_248(_) BOOST_PP_SEQ_ELEM_247
+# define BOOST_PP_SEQ_ELEM_249(_) BOOST_PP_SEQ_ELEM_248
+# define BOOST_PP_SEQ_ELEM_250(_) BOOST_PP_SEQ_ELEM_249
+# define BOOST_PP_SEQ_ELEM_251(_) BOOST_PP_SEQ_ELEM_250
+# define BOOST_PP_SEQ_ELEM_252(_) BOOST_PP_SEQ_ELEM_251
+# define BOOST_PP_SEQ_ELEM_253(_) BOOST_PP_SEQ_ELEM_252
+# define BOOST_PP_SEQ_ELEM_254(_) BOOST_PP_SEQ_ELEM_253
+# define BOOST_PP_SEQ_ELEM_255(_) BOOST_PP_SEQ_ELEM_254
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/enum.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/enum.hpp
new file mode 100644
index 0000000..b63b242
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/enum.hpp
@@ -0,0 +1,288 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_ENUM_HPP
+# define BOOST_PREPROCESSOR_SEQ_ENUM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_ENUM */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(seq)
+# define BOOST_PP_SEQ_ENUM_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq)
+# define BOOST_PP_SEQ_ENUM_I(size, seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq
+# else
+# define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
+# endif
+#
+# define BOOST_PP_SEQ_ENUM_1(x) x
+# define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1
+# define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2
+# define BOOST_PP_SEQ_ENUM_4(x) x, BOOST_PP_SEQ_ENUM_3
+# define BOOST_PP_SEQ_ENUM_5(x) x, BOOST_PP_SEQ_ENUM_4
+# define BOOST_PP_SEQ_ENUM_6(x) x, BOOST_PP_SEQ_ENUM_5
+# define BOOST_PP_SEQ_ENUM_7(x) x, BOOST_PP_SEQ_ENUM_6
+# define BOOST_PP_SEQ_ENUM_8(x) x, BOOST_PP_SEQ_ENUM_7
+# define BOOST_PP_SEQ_ENUM_9(x) x, BOOST_PP_SEQ_ENUM_8
+# define BOOST_PP_SEQ_ENUM_10(x) x, BOOST_PP_SEQ_ENUM_9
+# define BOOST_PP_SEQ_ENUM_11(x) x, BOOST_PP_SEQ_ENUM_10
+# define BOOST_PP_SEQ_ENUM_12(x) x, BOOST_PP_SEQ_ENUM_11
+# define BOOST_PP_SEQ_ENUM_13(x) x, BOOST_PP_SEQ_ENUM_12
+# define BOOST_PP_SEQ_ENUM_14(x) x, BOOST_PP_SEQ_ENUM_13
+# define BOOST_PP_SEQ_ENUM_15(x) x, BOOST_PP_SEQ_ENUM_14
+# define BOOST_PP_SEQ_ENUM_16(x) x, BOOST_PP_SEQ_ENUM_15
+# define BOOST_PP_SEQ_ENUM_17(x) x, BOOST_PP_SEQ_ENUM_16
+# define BOOST_PP_SEQ_ENUM_18(x) x, BOOST_PP_SEQ_ENUM_17
+# define BOOST_PP_SEQ_ENUM_19(x) x, BOOST_PP_SEQ_ENUM_18
+# define BOOST_PP_SEQ_ENUM_20(x) x, BOOST_PP_SEQ_ENUM_19
+# define BOOST_PP_SEQ_ENUM_21(x) x, BOOST_PP_SEQ_ENUM_20
+# define BOOST_PP_SEQ_ENUM_22(x) x, BOOST_PP_SEQ_ENUM_21
+# define BOOST_PP_SEQ_ENUM_23(x) x, BOOST_PP_SEQ_ENUM_22
+# define BOOST_PP_SEQ_ENUM_24(x) x, BOOST_PP_SEQ_ENUM_23
+# define BOOST_PP_SEQ_ENUM_25(x) x, BOOST_PP_SEQ_ENUM_24
+# define BOOST_PP_SEQ_ENUM_26(x) x, BOOST_PP_SEQ_ENUM_25
+# define BOOST_PP_SEQ_ENUM_27(x) x, BOOST_PP_SEQ_ENUM_26
+# define BOOST_PP_SEQ_ENUM_28(x) x, BOOST_PP_SEQ_ENUM_27
+# define BOOST_PP_SEQ_ENUM_29(x) x, BOOST_PP_SEQ_ENUM_28
+# define BOOST_PP_SEQ_ENUM_30(x) x, BOOST_PP_SEQ_ENUM_29
+# define BOOST_PP_SEQ_ENUM_31(x) x, BOOST_PP_SEQ_ENUM_30
+# define BOOST_PP_SEQ_ENUM_32(x) x, BOOST_PP_SEQ_ENUM_31
+# define BOOST_PP_SEQ_ENUM_33(x) x, BOOST_PP_SEQ_ENUM_32
+# define BOOST_PP_SEQ_ENUM_34(x) x, BOOST_PP_SEQ_ENUM_33
+# define BOOST_PP_SEQ_ENUM_35(x) x, BOOST_PP_SEQ_ENUM_34
+# define BOOST_PP_SEQ_ENUM_36(x) x, BOOST_PP_SEQ_ENUM_35
+# define BOOST_PP_SEQ_ENUM_37(x) x, BOOST_PP_SEQ_ENUM_36
+# define BOOST_PP_SEQ_ENUM_38(x) x, BOOST_PP_SEQ_ENUM_37
+# define BOOST_PP_SEQ_ENUM_39(x) x, BOOST_PP_SEQ_ENUM_38
+# define BOOST_PP_SEQ_ENUM_40(x) x, BOOST_PP_SEQ_ENUM_39
+# define BOOST_PP_SEQ_ENUM_41(x) x, BOOST_PP_SEQ_ENUM_40
+# define BOOST_PP_SEQ_ENUM_42(x) x, BOOST_PP_SEQ_ENUM_41
+# define BOOST_PP_SEQ_ENUM_43(x) x, BOOST_PP_SEQ_ENUM_42
+# define BOOST_PP_SEQ_ENUM_44(x) x, BOOST_PP_SEQ_ENUM_43
+# define BOOST_PP_SEQ_ENUM_45(x) x, BOOST_PP_SEQ_ENUM_44
+# define BOOST_PP_SEQ_ENUM_46(x) x, BOOST_PP_SEQ_ENUM_45
+# define BOOST_PP_SEQ_ENUM_47(x) x, BOOST_PP_SEQ_ENUM_46
+# define BOOST_PP_SEQ_ENUM_48(x) x, BOOST_PP_SEQ_ENUM_47
+# define BOOST_PP_SEQ_ENUM_49(x) x, BOOST_PP_SEQ_ENUM_48
+# define BOOST_PP_SEQ_ENUM_50(x) x, BOOST_PP_SEQ_ENUM_49
+# define BOOST_PP_SEQ_ENUM_51(x) x, BOOST_PP_SEQ_ENUM_50
+# define BOOST_PP_SEQ_ENUM_52(x) x, BOOST_PP_SEQ_ENUM_51
+# define BOOST_PP_SEQ_ENUM_53(x) x, BOOST_PP_SEQ_ENUM_52
+# define BOOST_PP_SEQ_ENUM_54(x) x, BOOST_PP_SEQ_ENUM_53
+# define BOOST_PP_SEQ_ENUM_55(x) x, BOOST_PP_SEQ_ENUM_54
+# define BOOST_PP_SEQ_ENUM_56(x) x, BOOST_PP_SEQ_ENUM_55
+# define BOOST_PP_SEQ_ENUM_57(x) x, BOOST_PP_SEQ_ENUM_56
+# define BOOST_PP_SEQ_ENUM_58(x) x, BOOST_PP_SEQ_ENUM_57
+# define BOOST_PP_SEQ_ENUM_59(x) x, BOOST_PP_SEQ_ENUM_58
+# define BOOST_PP_SEQ_ENUM_60(x) x, BOOST_PP_SEQ_ENUM_59
+# define BOOST_PP_SEQ_ENUM_61(x) x, BOOST_PP_SEQ_ENUM_60
+# define BOOST_PP_SEQ_ENUM_62(x) x, BOOST_PP_SEQ_ENUM_61
+# define BOOST_PP_SEQ_ENUM_63(x) x, BOOST_PP_SEQ_ENUM_62
+# define BOOST_PP_SEQ_ENUM_64(x) x, BOOST_PP_SEQ_ENUM_63
+# define BOOST_PP_SEQ_ENUM_65(x) x, BOOST_PP_SEQ_ENUM_64
+# define BOOST_PP_SEQ_ENUM_66(x) x, BOOST_PP_SEQ_ENUM_65
+# define BOOST_PP_SEQ_ENUM_67(x) x, BOOST_PP_SEQ_ENUM_66
+# define BOOST_PP_SEQ_ENUM_68(x) x, BOOST_PP_SEQ_ENUM_67
+# define BOOST_PP_SEQ_ENUM_69(x) x, BOOST_PP_SEQ_ENUM_68
+# define BOOST_PP_SEQ_ENUM_70(x) x, BOOST_PP_SEQ_ENUM_69
+# define BOOST_PP_SEQ_ENUM_71(x) x, BOOST_PP_SEQ_ENUM_70
+# define BOOST_PP_SEQ_ENUM_72(x) x, BOOST_PP_SEQ_ENUM_71
+# define BOOST_PP_SEQ_ENUM_73(x) x, BOOST_PP_SEQ_ENUM_72
+# define BOOST_PP_SEQ_ENUM_74(x) x, BOOST_PP_SEQ_ENUM_73
+# define BOOST_PP_SEQ_ENUM_75(x) x, BOOST_PP_SEQ_ENUM_74
+# define BOOST_PP_SEQ_ENUM_76(x) x, BOOST_PP_SEQ_ENUM_75
+# define BOOST_PP_SEQ_ENUM_77(x) x, BOOST_PP_SEQ_ENUM_76
+# define BOOST_PP_SEQ_ENUM_78(x) x, BOOST_PP_SEQ_ENUM_77
+# define BOOST_PP_SEQ_ENUM_79(x) x, BOOST_PP_SEQ_ENUM_78
+# define BOOST_PP_SEQ_ENUM_80(x) x, BOOST_PP_SEQ_ENUM_79
+# define BOOST_PP_SEQ_ENUM_81(x) x, BOOST_PP_SEQ_ENUM_80
+# define BOOST_PP_SEQ_ENUM_82(x) x, BOOST_PP_SEQ_ENUM_81
+# define BOOST_PP_SEQ_ENUM_83(x) x, BOOST_PP_SEQ_ENUM_82
+# define BOOST_PP_SEQ_ENUM_84(x) x, BOOST_PP_SEQ_ENUM_83
+# define BOOST_PP_SEQ_ENUM_85(x) x, BOOST_PP_SEQ_ENUM_84
+# define BOOST_PP_SEQ_ENUM_86(x) x, BOOST_PP_SEQ_ENUM_85
+# define BOOST_PP_SEQ_ENUM_87(x) x, BOOST_PP_SEQ_ENUM_86
+# define BOOST_PP_SEQ_ENUM_88(x) x, BOOST_PP_SEQ_ENUM_87
+# define BOOST_PP_SEQ_ENUM_89(x) x, BOOST_PP_SEQ_ENUM_88
+# define BOOST_PP_SEQ_ENUM_90(x) x, BOOST_PP_SEQ_ENUM_89
+# define BOOST_PP_SEQ_ENUM_91(x) x, BOOST_PP_SEQ_ENUM_90
+# define BOOST_PP_SEQ_ENUM_92(x) x, BOOST_PP_SEQ_ENUM_91
+# define BOOST_PP_SEQ_ENUM_93(x) x, BOOST_PP_SEQ_ENUM_92
+# define BOOST_PP_SEQ_ENUM_94(x) x, BOOST_PP_SEQ_ENUM_93
+# define BOOST_PP_SEQ_ENUM_95(x) x, BOOST_PP_SEQ_ENUM_94
+# define BOOST_PP_SEQ_ENUM_96(x) x, BOOST_PP_SEQ_ENUM_95
+# define BOOST_PP_SEQ_ENUM_97(x) x, BOOST_PP_SEQ_ENUM_96
+# define BOOST_PP_SEQ_ENUM_98(x) x, BOOST_PP_SEQ_ENUM_97
+# define BOOST_PP_SEQ_ENUM_99(x) x, BOOST_PP_SEQ_ENUM_98
+# define BOOST_PP_SEQ_ENUM_100(x) x, BOOST_PP_SEQ_ENUM_99
+# define BOOST_PP_SEQ_ENUM_101(x) x, BOOST_PP_SEQ_ENUM_100
+# define BOOST_PP_SEQ_ENUM_102(x) x, BOOST_PP_SEQ_ENUM_101
+# define BOOST_PP_SEQ_ENUM_103(x) x, BOOST_PP_SEQ_ENUM_102
+# define BOOST_PP_SEQ_ENUM_104(x) x, BOOST_PP_SEQ_ENUM_103
+# define BOOST_PP_SEQ_ENUM_105(x) x, BOOST_PP_SEQ_ENUM_104
+# define BOOST_PP_SEQ_ENUM_106(x) x, BOOST_PP_SEQ_ENUM_105
+# define BOOST_PP_SEQ_ENUM_107(x) x, BOOST_PP_SEQ_ENUM_106
+# define BOOST_PP_SEQ_ENUM_108(x) x, BOOST_PP_SEQ_ENUM_107
+# define BOOST_PP_SEQ_ENUM_109(x) x, BOOST_PP_SEQ_ENUM_108
+# define BOOST_PP_SEQ_ENUM_110(x) x, BOOST_PP_SEQ_ENUM_109
+# define BOOST_PP_SEQ_ENUM_111(x) x, BOOST_PP_SEQ_ENUM_110
+# define BOOST_PP_SEQ_ENUM_112(x) x, BOOST_PP_SEQ_ENUM_111
+# define BOOST_PP_SEQ_ENUM_113(x) x, BOOST_PP_SEQ_ENUM_112
+# define BOOST_PP_SEQ_ENUM_114(x) x, BOOST_PP_SEQ_ENUM_113
+# define BOOST_PP_SEQ_ENUM_115(x) x, BOOST_PP_SEQ_ENUM_114
+# define BOOST_PP_SEQ_ENUM_116(x) x, BOOST_PP_SEQ_ENUM_115
+# define BOOST_PP_SEQ_ENUM_117(x) x, BOOST_PP_SEQ_ENUM_116
+# define BOOST_PP_SEQ_ENUM_118(x) x, BOOST_PP_SEQ_ENUM_117
+# define BOOST_PP_SEQ_ENUM_119(x) x, BOOST_PP_SEQ_ENUM_118
+# define BOOST_PP_SEQ_ENUM_120(x) x, BOOST_PP_SEQ_ENUM_119
+# define BOOST_PP_SEQ_ENUM_121(x) x, BOOST_PP_SEQ_ENUM_120
+# define BOOST_PP_SEQ_ENUM_122(x) x, BOOST_PP_SEQ_ENUM_121
+# define BOOST_PP_SEQ_ENUM_123(x) x, BOOST_PP_SEQ_ENUM_122
+# define BOOST_PP_SEQ_ENUM_124(x) x, BOOST_PP_SEQ_ENUM_123
+# define BOOST_PP_SEQ_ENUM_125(x) x, BOOST_PP_SEQ_ENUM_124
+# define BOOST_PP_SEQ_ENUM_126(x) x, BOOST_PP_SEQ_ENUM_125
+# define BOOST_PP_SEQ_ENUM_127(x) x, BOOST_PP_SEQ_ENUM_126
+# define BOOST_PP_SEQ_ENUM_128(x) x, BOOST_PP_SEQ_ENUM_127
+# define BOOST_PP_SEQ_ENUM_129(x) x, BOOST_PP_SEQ_ENUM_128
+# define BOOST_PP_SEQ_ENUM_130(x) x, BOOST_PP_SEQ_ENUM_129
+# define BOOST_PP_SEQ_ENUM_131(x) x, BOOST_PP_SEQ_ENUM_130
+# define BOOST_PP_SEQ_ENUM_132(x) x, BOOST_PP_SEQ_ENUM_131
+# define BOOST_PP_SEQ_ENUM_133(x) x, BOOST_PP_SEQ_ENUM_132
+# define BOOST_PP_SEQ_ENUM_134(x) x, BOOST_PP_SEQ_ENUM_133
+# define BOOST_PP_SEQ_ENUM_135(x) x, BOOST_PP_SEQ_ENUM_134
+# define BOOST_PP_SEQ_ENUM_136(x) x, BOOST_PP_SEQ_ENUM_135
+# define BOOST_PP_SEQ_ENUM_137(x) x, BOOST_PP_SEQ_ENUM_136
+# define BOOST_PP_SEQ_ENUM_138(x) x, BOOST_PP_SEQ_ENUM_137
+# define BOOST_PP_SEQ_ENUM_139(x) x, BOOST_PP_SEQ_ENUM_138
+# define BOOST_PP_SEQ_ENUM_140(x) x, BOOST_PP_SEQ_ENUM_139
+# define BOOST_PP_SEQ_ENUM_141(x) x, BOOST_PP_SEQ_ENUM_140
+# define BOOST_PP_SEQ_ENUM_142(x) x, BOOST_PP_SEQ_ENUM_141
+# define BOOST_PP_SEQ_ENUM_143(x) x, BOOST_PP_SEQ_ENUM_142
+# define BOOST_PP_SEQ_ENUM_144(x) x, BOOST_PP_SEQ_ENUM_143
+# define BOOST_PP_SEQ_ENUM_145(x) x, BOOST_PP_SEQ_ENUM_144
+# define BOOST_PP_SEQ_ENUM_146(x) x, BOOST_PP_SEQ_ENUM_145
+# define BOOST_PP_SEQ_ENUM_147(x) x, BOOST_PP_SEQ_ENUM_146
+# define BOOST_PP_SEQ_ENUM_148(x) x, BOOST_PP_SEQ_ENUM_147
+# define BOOST_PP_SEQ_ENUM_149(x) x, BOOST_PP_SEQ_ENUM_148
+# define BOOST_PP_SEQ_ENUM_150(x) x, BOOST_PP_SEQ_ENUM_149
+# define BOOST_PP_SEQ_ENUM_151(x) x, BOOST_PP_SEQ_ENUM_150
+# define BOOST_PP_SEQ_ENUM_152(x) x, BOOST_PP_SEQ_ENUM_151
+# define BOOST_PP_SEQ_ENUM_153(x) x, BOOST_PP_SEQ_ENUM_152
+# define BOOST_PP_SEQ_ENUM_154(x) x, BOOST_PP_SEQ_ENUM_153
+# define BOOST_PP_SEQ_ENUM_155(x) x, BOOST_PP_SEQ_ENUM_154
+# define BOOST_PP_SEQ_ENUM_156(x) x, BOOST_PP_SEQ_ENUM_155
+# define BOOST_PP_SEQ_ENUM_157(x) x, BOOST_PP_SEQ_ENUM_156
+# define BOOST_PP_SEQ_ENUM_158(x) x, BOOST_PP_SEQ_ENUM_157
+# define BOOST_PP_SEQ_ENUM_159(x) x, BOOST_PP_SEQ_ENUM_158
+# define BOOST_PP_SEQ_ENUM_160(x) x, BOOST_PP_SEQ_ENUM_159
+# define BOOST_PP_SEQ_ENUM_161(x) x, BOOST_PP_SEQ_ENUM_160
+# define BOOST_PP_SEQ_ENUM_162(x) x, BOOST_PP_SEQ_ENUM_161
+# define BOOST_PP_SEQ_ENUM_163(x) x, BOOST_PP_SEQ_ENUM_162
+# define BOOST_PP_SEQ_ENUM_164(x) x, BOOST_PP_SEQ_ENUM_163
+# define BOOST_PP_SEQ_ENUM_165(x) x, BOOST_PP_SEQ_ENUM_164
+# define BOOST_PP_SEQ_ENUM_166(x) x, BOOST_PP_SEQ_ENUM_165
+# define BOOST_PP_SEQ_ENUM_167(x) x, BOOST_PP_SEQ_ENUM_166
+# define BOOST_PP_SEQ_ENUM_168(x) x, BOOST_PP_SEQ_ENUM_167
+# define BOOST_PP_SEQ_ENUM_169(x) x, BOOST_PP_SEQ_ENUM_168
+# define BOOST_PP_SEQ_ENUM_170(x) x, BOOST_PP_SEQ_ENUM_169
+# define BOOST_PP_SEQ_ENUM_171(x) x, BOOST_PP_SEQ_ENUM_170
+# define BOOST_PP_SEQ_ENUM_172(x) x, BOOST_PP_SEQ_ENUM_171
+# define BOOST_PP_SEQ_ENUM_173(x) x, BOOST_PP_SEQ_ENUM_172
+# define BOOST_PP_SEQ_ENUM_174(x) x, BOOST_PP_SEQ_ENUM_173
+# define BOOST_PP_SEQ_ENUM_175(x) x, BOOST_PP_SEQ_ENUM_174
+# define BOOST_PP_SEQ_ENUM_176(x) x, BOOST_PP_SEQ_ENUM_175
+# define BOOST_PP_SEQ_ENUM_177(x) x, BOOST_PP_SEQ_ENUM_176
+# define BOOST_PP_SEQ_ENUM_178(x) x, BOOST_PP_SEQ_ENUM_177
+# define BOOST_PP_SEQ_ENUM_179(x) x, BOOST_PP_SEQ_ENUM_178
+# define BOOST_PP_SEQ_ENUM_180(x) x, BOOST_PP_SEQ_ENUM_179
+# define BOOST_PP_SEQ_ENUM_181(x) x, BOOST_PP_SEQ_ENUM_180
+# define BOOST_PP_SEQ_ENUM_182(x) x, BOOST_PP_SEQ_ENUM_181
+# define BOOST_PP_SEQ_ENUM_183(x) x, BOOST_PP_SEQ_ENUM_182
+# define BOOST_PP_SEQ_ENUM_184(x) x, BOOST_PP_SEQ_ENUM_183
+# define BOOST_PP_SEQ_ENUM_185(x) x, BOOST_PP_SEQ_ENUM_184
+# define BOOST_PP_SEQ_ENUM_186(x) x, BOOST_PP_SEQ_ENUM_185
+# define BOOST_PP_SEQ_ENUM_187(x) x, BOOST_PP_SEQ_ENUM_186
+# define BOOST_PP_SEQ_ENUM_188(x) x, BOOST_PP_SEQ_ENUM_187
+# define BOOST_PP_SEQ_ENUM_189(x) x, BOOST_PP_SEQ_ENUM_188
+# define BOOST_PP_SEQ_ENUM_190(x) x, BOOST_PP_SEQ_ENUM_189
+# define BOOST_PP_SEQ_ENUM_191(x) x, BOOST_PP_SEQ_ENUM_190
+# define BOOST_PP_SEQ_ENUM_192(x) x, BOOST_PP_SEQ_ENUM_191
+# define BOOST_PP_SEQ_ENUM_193(x) x, BOOST_PP_SEQ_ENUM_192
+# define BOOST_PP_SEQ_ENUM_194(x) x, BOOST_PP_SEQ_ENUM_193
+# define BOOST_PP_SEQ_ENUM_195(x) x, BOOST_PP_SEQ_ENUM_194
+# define BOOST_PP_SEQ_ENUM_196(x) x, BOOST_PP_SEQ_ENUM_195
+# define BOOST_PP_SEQ_ENUM_197(x) x, BOOST_PP_SEQ_ENUM_196
+# define BOOST_PP_SEQ_ENUM_198(x) x, BOOST_PP_SEQ_ENUM_197
+# define BOOST_PP_SEQ_ENUM_199(x) x, BOOST_PP_SEQ_ENUM_198
+# define BOOST_PP_SEQ_ENUM_200(x) x, BOOST_PP_SEQ_ENUM_199
+# define BOOST_PP_SEQ_ENUM_201(x) x, BOOST_PP_SEQ_ENUM_200
+# define BOOST_PP_SEQ_ENUM_202(x) x, BOOST_PP_SEQ_ENUM_201
+# define BOOST_PP_SEQ_ENUM_203(x) x, BOOST_PP_SEQ_ENUM_202
+# define BOOST_PP_SEQ_ENUM_204(x) x, BOOST_PP_SEQ_ENUM_203
+# define BOOST_PP_SEQ_ENUM_205(x) x, BOOST_PP_SEQ_ENUM_204
+# define BOOST_PP_SEQ_ENUM_206(x) x, BOOST_PP_SEQ_ENUM_205
+# define BOOST_PP_SEQ_ENUM_207(x) x, BOOST_PP_SEQ_ENUM_206
+# define BOOST_PP_SEQ_ENUM_208(x) x, BOOST_PP_SEQ_ENUM_207
+# define BOOST_PP_SEQ_ENUM_209(x) x, BOOST_PP_SEQ_ENUM_208
+# define BOOST_PP_SEQ_ENUM_210(x) x, BOOST_PP_SEQ_ENUM_209
+# define BOOST_PP_SEQ_ENUM_211(x) x, BOOST_PP_SEQ_ENUM_210
+# define BOOST_PP_SEQ_ENUM_212(x) x, BOOST_PP_SEQ_ENUM_211
+# define BOOST_PP_SEQ_ENUM_213(x) x, BOOST_PP_SEQ_ENUM_212
+# define BOOST_PP_SEQ_ENUM_214(x) x, BOOST_PP_SEQ_ENUM_213
+# define BOOST_PP_SEQ_ENUM_215(x) x, BOOST_PP_SEQ_ENUM_214
+# define BOOST_PP_SEQ_ENUM_216(x) x, BOOST_PP_SEQ_ENUM_215
+# define BOOST_PP_SEQ_ENUM_217(x) x, BOOST_PP_SEQ_ENUM_216
+# define BOOST_PP_SEQ_ENUM_218(x) x, BOOST_PP_SEQ_ENUM_217
+# define BOOST_PP_SEQ_ENUM_219(x) x, BOOST_PP_SEQ_ENUM_218
+# define BOOST_PP_SEQ_ENUM_220(x) x, BOOST_PP_SEQ_ENUM_219
+# define BOOST_PP_SEQ_ENUM_221(x) x, BOOST_PP_SEQ_ENUM_220
+# define BOOST_PP_SEQ_ENUM_222(x) x, BOOST_PP_SEQ_ENUM_221
+# define BOOST_PP_SEQ_ENUM_223(x) x, BOOST_PP_SEQ_ENUM_222
+# define BOOST_PP_SEQ_ENUM_224(x) x, BOOST_PP_SEQ_ENUM_223
+# define BOOST_PP_SEQ_ENUM_225(x) x, BOOST_PP_SEQ_ENUM_224
+# define BOOST_PP_SEQ_ENUM_226(x) x, BOOST_PP_SEQ_ENUM_225
+# define BOOST_PP_SEQ_ENUM_227(x) x, BOOST_PP_SEQ_ENUM_226
+# define BOOST_PP_SEQ_ENUM_228(x) x, BOOST_PP_SEQ_ENUM_227
+# define BOOST_PP_SEQ_ENUM_229(x) x, BOOST_PP_SEQ_ENUM_228
+# define BOOST_PP_SEQ_ENUM_230(x) x, BOOST_PP_SEQ_ENUM_229
+# define BOOST_PP_SEQ_ENUM_231(x) x, BOOST_PP_SEQ_ENUM_230
+# define BOOST_PP_SEQ_ENUM_232(x) x, BOOST_PP_SEQ_ENUM_231
+# define BOOST_PP_SEQ_ENUM_233(x) x, BOOST_PP_SEQ_ENUM_232
+# define BOOST_PP_SEQ_ENUM_234(x) x, BOOST_PP_SEQ_ENUM_233
+# define BOOST_PP_SEQ_ENUM_235(x) x, BOOST_PP_SEQ_ENUM_234
+# define BOOST_PP_SEQ_ENUM_236(x) x, BOOST_PP_SEQ_ENUM_235
+# define BOOST_PP_SEQ_ENUM_237(x) x, BOOST_PP_SEQ_ENUM_236
+# define BOOST_PP_SEQ_ENUM_238(x) x, BOOST_PP_SEQ_ENUM_237
+# define BOOST_PP_SEQ_ENUM_239(x) x, BOOST_PP_SEQ_ENUM_238
+# define BOOST_PP_SEQ_ENUM_240(x) x, BOOST_PP_SEQ_ENUM_239
+# define BOOST_PP_SEQ_ENUM_241(x) x, BOOST_PP_SEQ_ENUM_240
+# define BOOST_PP_SEQ_ENUM_242(x) x, BOOST_PP_SEQ_ENUM_241
+# define BOOST_PP_SEQ_ENUM_243(x) x, BOOST_PP_SEQ_ENUM_242
+# define BOOST_PP_SEQ_ENUM_244(x) x, BOOST_PP_SEQ_ENUM_243
+# define BOOST_PP_SEQ_ENUM_245(x) x, BOOST_PP_SEQ_ENUM_244
+# define BOOST_PP_SEQ_ENUM_246(x) x, BOOST_PP_SEQ_ENUM_245
+# define BOOST_PP_SEQ_ENUM_247(x) x, BOOST_PP_SEQ_ENUM_246
+# define BOOST_PP_SEQ_ENUM_248(x) x, BOOST_PP_SEQ_ENUM_247
+# define BOOST_PP_SEQ_ENUM_249(x) x, BOOST_PP_SEQ_ENUM_248
+# define BOOST_PP_SEQ_ENUM_250(x) x, BOOST_PP_SEQ_ENUM_249
+# define BOOST_PP_SEQ_ENUM_251(x) x, BOOST_PP_SEQ_ENUM_250
+# define BOOST_PP_SEQ_ENUM_252(x) x, BOOST_PP_SEQ_ENUM_251
+# define BOOST_PP_SEQ_ENUM_253(x) x, BOOST_PP_SEQ_ENUM_252
+# define BOOST_PP_SEQ_ENUM_254(x) x, BOOST_PP_SEQ_ENUM_253
+# define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254
+# define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/filter.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/filter.hpp
new file mode 100644
index 0000000..4596bfe
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/filter.hpp
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FILTER_HPP
+# define BOOST_PREPROCESSOR_SEQ_FILTER_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/expr_if.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_FILTER */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FILTER(pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_FILTER(pred, data, seq) BOOST_PP_SEQ_FILTER_I(pred, data, seq)
+# define BOOST_PP_SEQ_FILTER_I(pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FILTER_O(s, st, elem) BOOST_PP_SEQ_FILTER_O_IM(s, BOOST_PP_TUPLE_REM_3 st, elem)
+# define BOOST_PP_SEQ_FILTER_O_IM(s, im, elem) BOOST_PP_SEQ_FILTER_O_I(s, im, elem)
+# else
+# define BOOST_PP_SEQ_FILTER_O(s, st, elem) BOOST_PP_SEQ_FILTER_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, st), BOOST_PP_TUPLE_ELEM(3, 1, st), BOOST_PP_TUPLE_ELEM(3, 2, st), elem)
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res BOOST_PP_EXPR_IF(pred(s, data, elem), (elem)))
+# else
+# define BOOST_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res BOOST_PP_EXPR_IF(pred##(s, data, elem), (elem)))
+# endif
+#
+# /* BOOST_PP_SEQ_FILTER_S */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FILTER_S(s, pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_FILTER_S(s, pred, data, seq) BOOST_PP_SEQ_FILTER_S_I(s, pred, data, seq)
+# define BOOST_PP_SEQ_FILTER_S_I(s, pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/first_n.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/first_n.hpp
new file mode 100644
index 0000000..c3c0716
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/first_n.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
+# define BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/seq/detail/split.hpp>
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SEQ_FIRST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
+# else
+# define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_SEQ_FIRST_N_I(n, seq)
+# define BOOST_PP_SEQ_FIRST_N_I(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/fold_left.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/fold_left.hpp
new file mode 100644
index 0000000..ab051b6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/fold_left.hpp
@@ -0,0 +1,1070 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/debug/error.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_FOLD_LEFT */
+#
+# if 0
+# define BOOST_PP_SEQ_FOLD_LEFT(op, state, seq) ...
+# endif
+#
+# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
+# define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_SEQ_FOLD_LEFT_I_ ## n(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1))
+# define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
+# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_ERROR(0x0005)
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0
+# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st
+#
+# define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
+# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# else
+# define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/fold_right.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/fold_right.hpp
new file mode 100644
index 0000000..c2c365b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/fold_right.hpp
@@ -0,0 +1,288 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/detail/auto_rec.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/reverse.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+#
+# /* BOOST_PP_SEQ_FOLD_RIGHT */
+#
+# if 0
+# define BOOST_PP_SEQ_FOLD_RIGHT(op, state, seq) ...
+# endif
+#
+# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
+#
+# define BOOST_PP_SEQ_FOLD_RIGHT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
+#
+# define BOOST_PP_SEQ_FOLD_RIGHT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, BOOST_PP_SEQ_REVERSE_S(2, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, BOOST_PP_SEQ_REVERSE_S(3, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, BOOST_PP_SEQ_REVERSE_S(4, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, BOOST_PP_SEQ_REVERSE_S(5, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, BOOST_PP_SEQ_REVERSE_S(6, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, BOOST_PP_SEQ_REVERSE_S(7, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, BOOST_PP_SEQ_REVERSE_S(8, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, BOOST_PP_SEQ_REVERSE_S(9, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, BOOST_PP_SEQ_REVERSE_S(10, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, BOOST_PP_SEQ_REVERSE_S(11, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, BOOST_PP_SEQ_REVERSE_S(12, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, BOOST_PP_SEQ_REVERSE_S(13, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, BOOST_PP_SEQ_REVERSE_S(14, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, BOOST_PP_SEQ_REVERSE_S(15, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, BOOST_PP_SEQ_REVERSE_S(16, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, BOOST_PP_SEQ_REVERSE_S(17, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, BOOST_PP_SEQ_REVERSE_S(18, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, BOOST_PP_SEQ_REVERSE_S(19, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, BOOST_PP_SEQ_REVERSE_S(20, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, BOOST_PP_SEQ_REVERSE_S(21, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, BOOST_PP_SEQ_REVERSE_S(22, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, BOOST_PP_SEQ_REVERSE_S(23, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, BOOST_PP_SEQ_REVERSE_S(24, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, BOOST_PP_SEQ_REVERSE_S(25, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, BOOST_PP_SEQ_REVERSE_S(26, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, BOOST_PP_SEQ_REVERSE_S(27, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, BOOST_PP_SEQ_REVERSE_S(28, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, BOOST_PP_SEQ_REVERSE_S(29, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, BOOST_PP_SEQ_REVERSE_S(30, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, BOOST_PP_SEQ_REVERSE_S(31, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, BOOST_PP_SEQ_REVERSE_S(32, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, BOOST_PP_SEQ_REVERSE_S(33, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, BOOST_PP_SEQ_REVERSE_S(34, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, BOOST_PP_SEQ_REVERSE_S(35, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, BOOST_PP_SEQ_REVERSE_S(36, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, BOOST_PP_SEQ_REVERSE_S(37, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, BOOST_PP_SEQ_REVERSE_S(38, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, BOOST_PP_SEQ_REVERSE_S(39, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, BOOST_PP_SEQ_REVERSE_S(40, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, BOOST_PP_SEQ_REVERSE_S(41, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, BOOST_PP_SEQ_REVERSE_S(42, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, BOOST_PP_SEQ_REVERSE_S(43, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, BOOST_PP_SEQ_REVERSE_S(44, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, BOOST_PP_SEQ_REVERSE_S(45, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, BOOST_PP_SEQ_REVERSE_S(46, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, BOOST_PP_SEQ_REVERSE_S(47, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, BOOST_PP_SEQ_REVERSE_S(48, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, BOOST_PP_SEQ_REVERSE_S(49, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, BOOST_PP_SEQ_REVERSE_S(50, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, BOOST_PP_SEQ_REVERSE_S(51, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, BOOST_PP_SEQ_REVERSE_S(52, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, BOOST_PP_SEQ_REVERSE_S(53, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, BOOST_PP_SEQ_REVERSE_S(54, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, BOOST_PP_SEQ_REVERSE_S(55, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, BOOST_PP_SEQ_REVERSE_S(56, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, BOOST_PP_SEQ_REVERSE_S(57, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, BOOST_PP_SEQ_REVERSE_S(58, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, BOOST_PP_SEQ_REVERSE_S(59, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, BOOST_PP_SEQ_REVERSE_S(60, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, BOOST_PP_SEQ_REVERSE_S(61, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, BOOST_PP_SEQ_REVERSE_S(62, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, BOOST_PP_SEQ_REVERSE_S(63, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, BOOST_PP_SEQ_REVERSE_S(64, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, BOOST_PP_SEQ_REVERSE_S(65, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, BOOST_PP_SEQ_REVERSE_S(66, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, BOOST_PP_SEQ_REVERSE_S(67, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, BOOST_PP_SEQ_REVERSE_S(68, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, BOOST_PP_SEQ_REVERSE_S(69, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, BOOST_PP_SEQ_REVERSE_S(70, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, BOOST_PP_SEQ_REVERSE_S(71, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, BOOST_PP_SEQ_REVERSE_S(72, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, BOOST_PP_SEQ_REVERSE_S(73, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, BOOST_PP_SEQ_REVERSE_S(74, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, BOOST_PP_SEQ_REVERSE_S(75, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, BOOST_PP_SEQ_REVERSE_S(76, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, BOOST_PP_SEQ_REVERSE_S(77, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, BOOST_PP_SEQ_REVERSE_S(78, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, BOOST_PP_SEQ_REVERSE_S(79, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, BOOST_PP_SEQ_REVERSE_S(80, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, BOOST_PP_SEQ_REVERSE_S(81, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, BOOST_PP_SEQ_REVERSE_S(82, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, BOOST_PP_SEQ_REVERSE_S(83, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, BOOST_PP_SEQ_REVERSE_S(84, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, BOOST_PP_SEQ_REVERSE_S(85, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, BOOST_PP_SEQ_REVERSE_S(86, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, BOOST_PP_SEQ_REVERSE_S(87, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, BOOST_PP_SEQ_REVERSE_S(88, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, BOOST_PP_SEQ_REVERSE_S(89, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, BOOST_PP_SEQ_REVERSE_S(90, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, BOOST_PP_SEQ_REVERSE_S(91, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, BOOST_PP_SEQ_REVERSE_S(92, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, BOOST_PP_SEQ_REVERSE_S(93, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, BOOST_PP_SEQ_REVERSE_S(94, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, BOOST_PP_SEQ_REVERSE_S(95, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, BOOST_PP_SEQ_REVERSE_S(96, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, BOOST_PP_SEQ_REVERSE_S(97, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, BOOST_PP_SEQ_REVERSE_S(98, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, BOOST_PP_SEQ_REVERSE_S(99, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, BOOST_PP_SEQ_REVERSE_S(100, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, BOOST_PP_SEQ_REVERSE_S(101, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, BOOST_PP_SEQ_REVERSE_S(102, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, BOOST_PP_SEQ_REVERSE_S(103, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, BOOST_PP_SEQ_REVERSE_S(104, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, BOOST_PP_SEQ_REVERSE_S(105, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, BOOST_PP_SEQ_REVERSE_S(106, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, BOOST_PP_SEQ_REVERSE_S(107, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, BOOST_PP_SEQ_REVERSE_S(108, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, BOOST_PP_SEQ_REVERSE_S(109, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, BOOST_PP_SEQ_REVERSE_S(110, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, BOOST_PP_SEQ_REVERSE_S(111, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, BOOST_PP_SEQ_REVERSE_S(112, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, BOOST_PP_SEQ_REVERSE_S(113, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, BOOST_PP_SEQ_REVERSE_S(114, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, BOOST_PP_SEQ_REVERSE_S(115, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, BOOST_PP_SEQ_REVERSE_S(116, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, BOOST_PP_SEQ_REVERSE_S(117, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, BOOST_PP_SEQ_REVERSE_S(118, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, BOOST_PP_SEQ_REVERSE_S(119, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, BOOST_PP_SEQ_REVERSE_S(120, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, BOOST_PP_SEQ_REVERSE_S(121, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, BOOST_PP_SEQ_REVERSE_S(122, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, BOOST_PP_SEQ_REVERSE_S(123, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, BOOST_PP_SEQ_REVERSE_S(124, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, BOOST_PP_SEQ_REVERSE_S(125, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, BOOST_PP_SEQ_REVERSE_S(126, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, BOOST_PP_SEQ_REVERSE_S(127, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, BOOST_PP_SEQ_REVERSE_S(128, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, BOOST_PP_SEQ_REVERSE_S(129, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, BOOST_PP_SEQ_REVERSE_S(130, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, BOOST_PP_SEQ_REVERSE_S(131, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, BOOST_PP_SEQ_REVERSE_S(132, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, BOOST_PP_SEQ_REVERSE_S(133, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, BOOST_PP_SEQ_REVERSE_S(134, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, BOOST_PP_SEQ_REVERSE_S(135, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, BOOST_PP_SEQ_REVERSE_S(136, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, BOOST_PP_SEQ_REVERSE_S(137, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, BOOST_PP_SEQ_REVERSE_S(138, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, BOOST_PP_SEQ_REVERSE_S(139, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, BOOST_PP_SEQ_REVERSE_S(140, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, BOOST_PP_SEQ_REVERSE_S(141, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, BOOST_PP_SEQ_REVERSE_S(142, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, BOOST_PP_SEQ_REVERSE_S(143, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, BOOST_PP_SEQ_REVERSE_S(144, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, BOOST_PP_SEQ_REVERSE_S(145, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, BOOST_PP_SEQ_REVERSE_S(146, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, BOOST_PP_SEQ_REVERSE_S(147, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, BOOST_PP_SEQ_REVERSE_S(148, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, BOOST_PP_SEQ_REVERSE_S(149, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, BOOST_PP_SEQ_REVERSE_S(150, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, BOOST_PP_SEQ_REVERSE_S(151, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, BOOST_PP_SEQ_REVERSE_S(152, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, BOOST_PP_SEQ_REVERSE_S(153, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, BOOST_PP_SEQ_REVERSE_S(154, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, BOOST_PP_SEQ_REVERSE_S(155, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, BOOST_PP_SEQ_REVERSE_S(156, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, BOOST_PP_SEQ_REVERSE_S(157, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, BOOST_PP_SEQ_REVERSE_S(158, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, BOOST_PP_SEQ_REVERSE_S(159, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, BOOST_PP_SEQ_REVERSE_S(160, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, BOOST_PP_SEQ_REVERSE_S(161, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, BOOST_PP_SEQ_REVERSE_S(162, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, BOOST_PP_SEQ_REVERSE_S(163, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, BOOST_PP_SEQ_REVERSE_S(164, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, BOOST_PP_SEQ_REVERSE_S(165, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, BOOST_PP_SEQ_REVERSE_S(166, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, BOOST_PP_SEQ_REVERSE_S(167, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, BOOST_PP_SEQ_REVERSE_S(168, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, BOOST_PP_SEQ_REVERSE_S(169, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, BOOST_PP_SEQ_REVERSE_S(170, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, BOOST_PP_SEQ_REVERSE_S(171, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, BOOST_PP_SEQ_REVERSE_S(172, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, BOOST_PP_SEQ_REVERSE_S(173, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, BOOST_PP_SEQ_REVERSE_S(174, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, BOOST_PP_SEQ_REVERSE_S(175, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, BOOST_PP_SEQ_REVERSE_S(176, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, BOOST_PP_SEQ_REVERSE_S(177, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, BOOST_PP_SEQ_REVERSE_S(178, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, BOOST_PP_SEQ_REVERSE_S(179, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, BOOST_PP_SEQ_REVERSE_S(180, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, BOOST_PP_SEQ_REVERSE_S(181, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, BOOST_PP_SEQ_REVERSE_S(182, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, BOOST_PP_SEQ_REVERSE_S(183, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, BOOST_PP_SEQ_REVERSE_S(184, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, BOOST_PP_SEQ_REVERSE_S(185, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, BOOST_PP_SEQ_REVERSE_S(186, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, BOOST_PP_SEQ_REVERSE_S(187, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, BOOST_PP_SEQ_REVERSE_S(188, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, BOOST_PP_SEQ_REVERSE_S(189, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, BOOST_PP_SEQ_REVERSE_S(190, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, BOOST_PP_SEQ_REVERSE_S(191, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, BOOST_PP_SEQ_REVERSE_S(192, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, BOOST_PP_SEQ_REVERSE_S(193, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, BOOST_PP_SEQ_REVERSE_S(194, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, BOOST_PP_SEQ_REVERSE_S(195, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, BOOST_PP_SEQ_REVERSE_S(196, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, BOOST_PP_SEQ_REVERSE_S(197, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, BOOST_PP_SEQ_REVERSE_S(198, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, BOOST_PP_SEQ_REVERSE_S(199, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, BOOST_PP_SEQ_REVERSE_S(200, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, BOOST_PP_SEQ_REVERSE_S(201, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, BOOST_PP_SEQ_REVERSE_S(202, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, BOOST_PP_SEQ_REVERSE_S(203, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, BOOST_PP_SEQ_REVERSE_S(204, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, BOOST_PP_SEQ_REVERSE_S(205, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, BOOST_PP_SEQ_REVERSE_S(206, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, BOOST_PP_SEQ_REVERSE_S(207, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, BOOST_PP_SEQ_REVERSE_S(208, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, BOOST_PP_SEQ_REVERSE_S(209, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, BOOST_PP_SEQ_REVERSE_S(210, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, BOOST_PP_SEQ_REVERSE_S(211, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, BOOST_PP_SEQ_REVERSE_S(212, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, BOOST_PP_SEQ_REVERSE_S(213, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, BOOST_PP_SEQ_REVERSE_S(214, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, BOOST_PP_SEQ_REVERSE_S(215, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, BOOST_PP_SEQ_REVERSE_S(216, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, BOOST_PP_SEQ_REVERSE_S(217, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, BOOST_PP_SEQ_REVERSE_S(218, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, BOOST_PP_SEQ_REVERSE_S(219, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, BOOST_PP_SEQ_REVERSE_S(220, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, BOOST_PP_SEQ_REVERSE_S(221, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, BOOST_PP_SEQ_REVERSE_S(222, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, BOOST_PP_SEQ_REVERSE_S(223, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, BOOST_PP_SEQ_REVERSE_S(224, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, BOOST_PP_SEQ_REVERSE_S(225, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, BOOST_PP_SEQ_REVERSE_S(226, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, BOOST_PP_SEQ_REVERSE_S(227, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, BOOST_PP_SEQ_REVERSE_S(228, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, BOOST_PP_SEQ_REVERSE_S(229, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, BOOST_PP_SEQ_REVERSE_S(230, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, BOOST_PP_SEQ_REVERSE_S(231, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, BOOST_PP_SEQ_REVERSE_S(232, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, BOOST_PP_SEQ_REVERSE_S(233, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, BOOST_PP_SEQ_REVERSE_S(234, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, BOOST_PP_SEQ_REVERSE_S(235, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, BOOST_PP_SEQ_REVERSE_S(236, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, BOOST_PP_SEQ_REVERSE_S(237, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, BOOST_PP_SEQ_REVERSE_S(238, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, BOOST_PP_SEQ_REVERSE_S(239, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, BOOST_PP_SEQ_REVERSE_S(240, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, BOOST_PP_SEQ_REVERSE_S(241, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, BOOST_PP_SEQ_REVERSE_S(242, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, BOOST_PP_SEQ_REVERSE_S(243, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, BOOST_PP_SEQ_REVERSE_S(244, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, BOOST_PP_SEQ_REVERSE_S(245, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, BOOST_PP_SEQ_REVERSE_S(246, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, BOOST_PP_SEQ_REVERSE_S(247, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, BOOST_PP_SEQ_REVERSE_S(248, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, BOOST_PP_SEQ_REVERSE_S(249, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, BOOST_PP_SEQ_REVERSE_S(250, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, BOOST_PP_SEQ_REVERSE_S(251, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, BOOST_PP_SEQ_REVERSE_S(252, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, BOOST_PP_SEQ_REVERSE_S(253, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, BOOST_PP_SEQ_REVERSE_S(254, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, BOOST_PP_SEQ_REVERSE_S(255, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, BOOST_PP_SEQ_REVERSE_S(256, ss), BOOST_PP_SEQ_SIZE(ss))
+# define BOOST_PP_SEQ_FOLD_RIGHT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, BOOST_PP_SEQ_REVERSE_S(257, ss), BOOST_PP_SEQ_SIZE(ss))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each.hpp
new file mode 100644
index 0000000..3f9c0d7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each.hpp
@@ -0,0 +1,107 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/seq/detail/is_empty.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_FOR_EACH */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq)
+# else
+# define BOOST_PP_SEQ_FOR_EACH(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_D(macro, data, seq)
+# define BOOST_PP_SEQ_FOR_EACH_D(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq)
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC(macro, data, seq) BOOST_PP_FOR((macro, data, seq, BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
+# define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY(macro, data, seq)
+#
+# define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK(macro, data, seq) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC, \
+ BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY \
+ ) \
+ (macro, data, seq) \
+/**/
+#
+# define BOOST_PP_SEQ_FOR_EACH_P(r, x) BOOST_PP_TUPLE_ELEM(4, 3, x)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_O(r, x) BOOST_PP_SEQ_FOR_EACH_O_I x
+# else
+# define BOOST_PP_SEQ_FOR_EACH_O(r, x) BOOST_PP_SEQ_FOR_EACH_O_I(BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_O_I(macro, data, seq, sz) \
+ BOOST_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, BOOST_PP_DEC(sz)) \
+/**/
+# define BOOST_PP_SEQ_FOR_EACH_O_I_DEC(macro, data, seq, sz) \
+ ( \
+ macro, \
+ data, \
+ BOOST_PP_IF \
+ ( \
+ sz, \
+ BOOST_PP_SEQ_FOR_EACH_O_I_TAIL, \
+ BOOST_PP_SEQ_FOR_EACH_O_I_NIL \
+ ) \
+ (seq), \
+ sz \
+ ) \
+/**/
+# define BOOST_PP_SEQ_FOR_EACH_O_I_TAIL(seq) BOOST_PP_SEQ_TAIL(seq)
+# define BOOST_PP_SEQ_FOR_EACH_O_I_NIL(seq) BOOST_PP_NIL
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_M(r, x) BOOST_PP_SEQ_FOR_EACH_M_IM(r, BOOST_PP_TUPLE_REM_4 x)
+# define BOOST_PP_SEQ_FOR_EACH_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_M_I(r, im)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_M(r, x) BOOST_PP_SEQ_FOR_EACH_M_I(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_M_I(r, macro, data, seq, sz) macro(r, data, BOOST_PP_SEQ_HEAD(seq))
+#
+# /* BOOST_PP_SEQ_FOR_EACH_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq)
+# define BOOST_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq)
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq, BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
+# define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R(r, macro, data, seq)
+#
+# define BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_R(r, macro, data, seq) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EXEC_R, \
+ BOOST_PP_SEQ_FOR_EACH_DETAIL_CHECK_EMPTY_R \
+ ) \
+ (r, macro, data, seq) \
+/**/
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each_i.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each_i.hpp
new file mode 100644
index 0000000..81028d7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each_i.hpp
@@ -0,0 +1,109 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/seq/detail/is_empty.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_FOR_EACH_I */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq)
+# define BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq)
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC(macro, data, seq) BOOST_PP_FOR((macro, data, seq, 0, BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
+# define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY(macro, data, seq)
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK(macro, data, seq) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EXEC, \
+ BOOST_PP_SEQ_FOR_EACH_I_DETAIL_CHECK_EMPTY \
+ ) \
+ (macro, data, seq) \
+/**/
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_P(r, x) BOOST_PP_TUPLE_ELEM(5, 4, x)
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I x
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I(BOOST_PP_TUPLE_ELEM(5, 0, x), BOOST_PP_TUPLE_ELEM(5, 1, x), BOOST_PP_TUPLE_ELEM(5, 2, x), BOOST_PP_TUPLE_ELEM(5, 3, x), BOOST_PP_TUPLE_ELEM(5, 4, x))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i, sz) \
+ BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, BOOST_PP_DEC(sz)) \
+/**/
+# define BOOST_PP_SEQ_FOR_EACH_I_O_I_DEC(macro, data, seq, i, sz) \
+ ( \
+ macro, \
+ data, \
+ BOOST_PP_IF \
+ ( \
+ sz, \
+ BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL, \
+ BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL \
+ ) \
+ (seq), \
+ BOOST_PP_INC(i), \
+ sz \
+ ) \
+/**/
+# define BOOST_PP_SEQ_FOR_EACH_I_O_I_TAIL(seq) BOOST_PP_SEQ_TAIL(seq)
+# define BOOST_PP_SEQ_FOR_EACH_I_O_I_NIL(seq) BOOST_PP_NIL
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, BOOST_PP_TUPLE_REM_5 x)
+# define BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, im)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_ELEM(5, 0, x), BOOST_PP_TUPLE_ELEM(5, 1, x), BOOST_PP_TUPLE_ELEM(5, 2, x), BOOST_PP_TUPLE_ELEM(5, 3, x), BOOST_PP_TUPLE_ELEM(5, 4, x))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_M_I(r, macro, data, seq, i, sz) macro(r, data, i, BOOST_PP_SEQ_HEAD(seq))
+#
+# /* BOOST_PP_SEQ_FOR_EACH_I_R */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq)
+# define BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq)
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq, 0, BOOST_PP_SEQ_SIZE(seq)), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
+# define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY(r, macro, data, seq)
+#
+# define BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK(r, macro, data, seq) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY(seq), \
+ BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EXEC, \
+ BOOST_PP_SEQ_FOR_EACH_I_R_DETAIL_CHECK_EMPTY \
+ ) \
+ (r, macro, data, seq) \
+/**/
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each_product.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each_product.hpp
new file mode 100644
index 0000000..baf22df
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/for_each_product.hpp
@@ -0,0 +1,126 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
+# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/repetition/for.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_FOR_EACH_PRODUCT */
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT(macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, sets)
+#
+# /* BOOST_PP_SEQ_FOR_EACH_PRODUCT_R */
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_R(r, macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, sets)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) impl((BOOST_PP_SEQ_HEAD(sets)(nil), BOOST_PP_SEQ_TAIL(sets)(nil), (nil), macro), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets) impl((BOOST_PP_SEQ_HEAD(sets)(nil), BOOST_PP_SEQ_TAIL(sets)(nil), (nil), macro), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0)
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_P_I data
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P_I(cset, rset, res, macro) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(cset))
+# else
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 0, data)))
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_O_I data
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O_I(cset, rset, res, macro) (BOOST_PP_SEQ_TAIL(cset), rset, res, macro)
+# else
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) (BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(4, 0, data)), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, i) BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 1, data))), BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_ ## i, BOOST_PP_SEQ_FOR_EACH_PRODUCT_I)
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, BOOST_PP_TUPLE_ELEM(4, 0, data), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
+# else
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, BOOST_PP_TUPLE_REM_4 data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, im) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, im)
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, cset, rset, res, macro) macro(r, BOOST_PP_SEQ_TAIL(res (BOOST_PP_SEQ_HEAD(cset))))
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I data
+# else
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I(BOOST_PP_TUPLE_ELEM(4, 0, data), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
+# endif
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I(cset, rset, res, macro) (BOOST_PP_SEQ_HEAD(rset)(nil), BOOST_PP_SEQ_TAIL(rset), res (BOOST_PP_SEQ_HEAD(cset)), macro)
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 0)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_1(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 1)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_2(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 2)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_3(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 3)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_4(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 4)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_5(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 5)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_6(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 6)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_7(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 7)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_8(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 8)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_9(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 9)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_10(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 10)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_11(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 11)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_12(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 12)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_13(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 13)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_14(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 14)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_15(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 15)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_16(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 16)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_17(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 17)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_18(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 18)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_19(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 19)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_20(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 20)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_21(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 21)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_22(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 22)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_23(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 23)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_24(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 24)(r, data)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_25(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 25)(r, data)
+#
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_0(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_1)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_1(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_2)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_2(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_3)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_3(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_4)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_4(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_5)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_5(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_6)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_6(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_7)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_7(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_8)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_8(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_9)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_9(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_10)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_10(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_11)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_11(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_12)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_12(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_13)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_13(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_14)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_14(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_15)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_15(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_16)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_16(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_17)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_17(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_18)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_18(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_19)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_19(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_20)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_20(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_21)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_21(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_22)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_22(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_23)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_23(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_24)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_24(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_25)
+# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_25(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_26)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/insert.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/insert.hpp
new file mode 100644
index 0000000..59ce2f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/insert.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_INSERT_HPP
+# define BOOST_PREPROCESSOR_SEQ_INSERT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/rest_n.hpp>
+#
+# /* BOOST_PP_SEQ_INSERT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq)
+# else
+# define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_INSERT_I(seq, i, elem)
+# define BOOST_PP_SEQ_INSERT_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/pop_back.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/pop_back.hpp
new file mode 100644
index 0000000..54200d6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/pop_back.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP
+# define BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_POP_BACK */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)
+# else
+# define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_POP_BACK_I(seq)
+# define BOOST_PP_SEQ_POP_BACK_I(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/pop_front.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/pop_front.hpp
new file mode 100644
index 0000000..7d94eea
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/pop_front.hpp
@@ -0,0 +1,27 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP
+# define BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+#
+# /* BOOST_PP_SEQ_POP_FRONT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_TAIL(seq)
+# else
+# define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_POP_FRONT_I(seq)
+# define BOOST_PP_SEQ_POP_FRONT_I(seq) BOOST_PP_SEQ_TAIL(seq)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/push_back.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/push_back.hpp
new file mode 100644
index 0000000..1938d0b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/push_back.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP
+# define BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP
+#
+# /* BOOST_PP_SEQ_PUSH_BACK */
+#
+# define BOOST_PP_SEQ_PUSH_BACK(seq, elem) seq(elem)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/push_front.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/push_front.hpp
new file mode 100644
index 0000000..2ce73ad
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/push_front.hpp
@@ -0,0 +1,19 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
+# define BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
+#
+# /* BOOST_PP_SEQ_PUSH_FRONT */
+#
+# define BOOST_PP_SEQ_PUSH_FRONT(seq, elem) (elem)seq
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/remove.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/remove.hpp
new file mode 100644
index 0000000..d2f77b0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/remove.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_REMOVE_HPP
+# define BOOST_PREPROCESSOR_SEQ_REMOVE_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/rest_n.hpp>
+#
+# /* BOOST_PP_SEQ_REMOVE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
+# else
+# define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_REMOVE_I(seq, i)
+# define BOOST_PP_SEQ_REMOVE_I(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/replace.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/replace.hpp
new file mode 100644
index 0000000..0cf6b77
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/replace.hpp
@@ -0,0 +1,45 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_REPLACE_HPP
+# define BOOST_PREPROCESSOR_SEQ_REPLACE_HPP
+#
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/rest_n.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_REPLACE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i)
+# else
+# define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_REPLACE_I(seq, i, elem)
+# define BOOST_PP_SEQ_REPLACE_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i)
+# endif
+#
+# define BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY(seq, i)
+# define BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID(seq, i) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
+# define BOOST_PP_SEQ_REPLACE_DETAIL_REST(seq, i) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_EQUAL(i,BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq))), \
+ BOOST_PP_SEQ_REPLACE_DETAIL_REST_EMPTY, \
+ BOOST_PP_SEQ_REPLACE_DETAIL_REST_VALID \
+ ) \
+ (seq, i) \
+/**/
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/rest_n.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/rest_n.hpp
new file mode 100644
index 0000000..4aefba4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/rest_n.hpp
@@ -0,0 +1,46 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_REST_N_HPP
+# define BOOST_PREPROCESSOR_SEQ_REST_N_HPP
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/control/expr_iif.hpp>
+# include <boost/preprocessor/facilities/identity.hpp>
+# include <boost/preprocessor/logical/bitand.hpp>
+# include <boost/preprocessor/seq/detail/is_empty.hpp>
+# include <boost/preprocessor/seq/detail/split.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+#
+# /* BOOST_PP_SEQ_REST_N */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq))
+# else
+# define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_SEQ_REST_N_I(n, seq)
+# define BOOST_PP_SEQ_REST_N_I(n, seq) BOOST_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, BOOST_PP_SEQ_DETAIL_EMPTY_SIZE(seq))
+# endif
+#
+# define BOOST_PP_SEQ_REST_N_DETAIL_EXEC(n, seq, size) \
+ BOOST_PP_EXPR_IIF \
+ ( \
+ BOOST_PP_BITAND \
+ ( \
+ BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY_SIZE(size), \
+ BOOST_PP_NOT_EQUAL(n,size) \
+ ), \
+ BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), BOOST_PP_IDENTITY( (nil) seq )))() \
+ ) \
+/**/
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/reverse.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/reverse.hpp
new file mode 100644
index 0000000..338d777
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/reverse.hpp
@@ -0,0 +1,39 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_REVERSE_HPP
+# define BOOST_PREPROCESSOR_SEQ_REVERSE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+#
+# /* BOOST_PP_SEQ_REVERSE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_REVERSE(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)()
+# else
+# define BOOST_PP_SEQ_REVERSE(seq) BOOST_PP_SEQ_REVERSE_I(seq)
+# define BOOST_PP_SEQ_REVERSE_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)()
+# endif
+#
+# define BOOST_PP_SEQ_REVERSE_O(s, state, elem) (elem) state
+#
+# /* BOOST_PP_SEQ_REVERSE_S */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_REVERSE_S(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)()
+# else
+# define BOOST_PP_SEQ_REVERSE_S(s, seq) BOOST_PP_SEQ_REVERSE_S_I(s, seq)
+# define BOOST_PP_SEQ_REVERSE_S_I(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_REVERSE_O, BOOST_PP_EMPTY, seq)()
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/seq.hpp
new file mode 100644
index 0000000..f5ca84c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/seq.hpp
@@ -0,0 +1,44 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_SEQ_HPP
+# define BOOST_PREPROCESSOR_SEQ_SEQ_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+#
+# /* BOOST_PP_SEQ_HEAD */
+#
+# define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq)
+#
+# /* BOOST_PP_SEQ_TAIL */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_1((seq))
+# define BOOST_PP_SEQ_TAIL_1(par) BOOST_PP_SEQ_TAIL_2 ## par
+# define BOOST_PP_SEQ_TAIL_2(seq) BOOST_PP_SEQ_TAIL_I ## seq
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_ID(BOOST_PP_SEQ_TAIL_I seq)
+# define BOOST_PP_SEQ_TAIL_ID(id) id
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_D(seq)
+# define BOOST_PP_SEQ_TAIL_D(seq) BOOST_PP_SEQ_TAIL_I seq
+# else
+# define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq
+# endif
+#
+# define BOOST_PP_SEQ_TAIL_I(x)
+#
+# /* BOOST_PP_SEQ_NIL */
+#
+# define BOOST_PP_SEQ_NIL(x) (x)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/size.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/size.hpp
new file mode 100644
index 0000000..b5c8d9d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/size.hpp
@@ -0,0 +1,548 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_SIZE_HPP
+# define BOOST_PREPROCESSOR_SEQ_SIZE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I((seq))
+# define BOOST_PP_SEQ_SIZE_I(par) BOOST_PP_SEQ_SIZE_II ## par
+# define BOOST_PP_SEQ_SIZE_II(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 ## seq)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG() || BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_SEQ_SIZE_I(seq)
+# define BOOST_PP_SEQ_SIZE_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
+# elif defined(__IBMC__) || defined(__IBMCPP__)
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_0, seq))
+# else
+# define BOOST_PP_SEQ_SIZE(seq) BOOST_PP_CAT(BOOST_PP_SEQ_SIZE_, BOOST_PP_SEQ_SIZE_0 seq)
+# endif
+#
+# define BOOST_PP_SEQ_SIZE_0(_) BOOST_PP_SEQ_SIZE_1
+# define BOOST_PP_SEQ_SIZE_1(_) BOOST_PP_SEQ_SIZE_2
+# define BOOST_PP_SEQ_SIZE_2(_) BOOST_PP_SEQ_SIZE_3
+# define BOOST_PP_SEQ_SIZE_3(_) BOOST_PP_SEQ_SIZE_4
+# define BOOST_PP_SEQ_SIZE_4(_) BOOST_PP_SEQ_SIZE_5
+# define BOOST_PP_SEQ_SIZE_5(_) BOOST_PP_SEQ_SIZE_6
+# define BOOST_PP_SEQ_SIZE_6(_) BOOST_PP_SEQ_SIZE_7
+# define BOOST_PP_SEQ_SIZE_7(_) BOOST_PP_SEQ_SIZE_8
+# define BOOST_PP_SEQ_SIZE_8(_) BOOST_PP_SEQ_SIZE_9
+# define BOOST_PP_SEQ_SIZE_9(_) BOOST_PP_SEQ_SIZE_10
+# define BOOST_PP_SEQ_SIZE_10(_) BOOST_PP_SEQ_SIZE_11
+# define BOOST_PP_SEQ_SIZE_11(_) BOOST_PP_SEQ_SIZE_12
+# define BOOST_PP_SEQ_SIZE_12(_) BOOST_PP_SEQ_SIZE_13
+# define BOOST_PP_SEQ_SIZE_13(_) BOOST_PP_SEQ_SIZE_14
+# define BOOST_PP_SEQ_SIZE_14(_) BOOST_PP_SEQ_SIZE_15
+# define BOOST_PP_SEQ_SIZE_15(_) BOOST_PP_SEQ_SIZE_16
+# define BOOST_PP_SEQ_SIZE_16(_) BOOST_PP_SEQ_SIZE_17
+# define BOOST_PP_SEQ_SIZE_17(_) BOOST_PP_SEQ_SIZE_18
+# define BOOST_PP_SEQ_SIZE_18(_) BOOST_PP_SEQ_SIZE_19
+# define BOOST_PP_SEQ_SIZE_19(_) BOOST_PP_SEQ_SIZE_20
+# define BOOST_PP_SEQ_SIZE_20(_) BOOST_PP_SEQ_SIZE_21
+# define BOOST_PP_SEQ_SIZE_21(_) BOOST_PP_SEQ_SIZE_22
+# define BOOST_PP_SEQ_SIZE_22(_) BOOST_PP_SEQ_SIZE_23
+# define BOOST_PP_SEQ_SIZE_23(_) BOOST_PP_SEQ_SIZE_24
+# define BOOST_PP_SEQ_SIZE_24(_) BOOST_PP_SEQ_SIZE_25
+# define BOOST_PP_SEQ_SIZE_25(_) BOOST_PP_SEQ_SIZE_26
+# define BOOST_PP_SEQ_SIZE_26(_) BOOST_PP_SEQ_SIZE_27
+# define BOOST_PP_SEQ_SIZE_27(_) BOOST_PP_SEQ_SIZE_28
+# define BOOST_PP_SEQ_SIZE_28(_) BOOST_PP_SEQ_SIZE_29
+# define BOOST_PP_SEQ_SIZE_29(_) BOOST_PP_SEQ_SIZE_30
+# define BOOST_PP_SEQ_SIZE_30(_) BOOST_PP_SEQ_SIZE_31
+# define BOOST_PP_SEQ_SIZE_31(_) BOOST_PP_SEQ_SIZE_32
+# define BOOST_PP_SEQ_SIZE_32(_) BOOST_PP_SEQ_SIZE_33
+# define BOOST_PP_SEQ_SIZE_33(_) BOOST_PP_SEQ_SIZE_34
+# define BOOST_PP_SEQ_SIZE_34(_) BOOST_PP_SEQ_SIZE_35
+# define BOOST_PP_SEQ_SIZE_35(_) BOOST_PP_SEQ_SIZE_36
+# define BOOST_PP_SEQ_SIZE_36(_) BOOST_PP_SEQ_SIZE_37
+# define BOOST_PP_SEQ_SIZE_37(_) BOOST_PP_SEQ_SIZE_38
+# define BOOST_PP_SEQ_SIZE_38(_) BOOST_PP_SEQ_SIZE_39
+# define BOOST_PP_SEQ_SIZE_39(_) BOOST_PP_SEQ_SIZE_40
+# define BOOST_PP_SEQ_SIZE_40(_) BOOST_PP_SEQ_SIZE_41
+# define BOOST_PP_SEQ_SIZE_41(_) BOOST_PP_SEQ_SIZE_42
+# define BOOST_PP_SEQ_SIZE_42(_) BOOST_PP_SEQ_SIZE_43
+# define BOOST_PP_SEQ_SIZE_43(_) BOOST_PP_SEQ_SIZE_44
+# define BOOST_PP_SEQ_SIZE_44(_) BOOST_PP_SEQ_SIZE_45
+# define BOOST_PP_SEQ_SIZE_45(_) BOOST_PP_SEQ_SIZE_46
+# define BOOST_PP_SEQ_SIZE_46(_) BOOST_PP_SEQ_SIZE_47
+# define BOOST_PP_SEQ_SIZE_47(_) BOOST_PP_SEQ_SIZE_48
+# define BOOST_PP_SEQ_SIZE_48(_) BOOST_PP_SEQ_SIZE_49
+# define BOOST_PP_SEQ_SIZE_49(_) BOOST_PP_SEQ_SIZE_50
+# define BOOST_PP_SEQ_SIZE_50(_) BOOST_PP_SEQ_SIZE_51
+# define BOOST_PP_SEQ_SIZE_51(_) BOOST_PP_SEQ_SIZE_52
+# define BOOST_PP_SEQ_SIZE_52(_) BOOST_PP_SEQ_SIZE_53
+# define BOOST_PP_SEQ_SIZE_53(_) BOOST_PP_SEQ_SIZE_54
+# define BOOST_PP_SEQ_SIZE_54(_) BOOST_PP_SEQ_SIZE_55
+# define BOOST_PP_SEQ_SIZE_55(_) BOOST_PP_SEQ_SIZE_56
+# define BOOST_PP_SEQ_SIZE_56(_) BOOST_PP_SEQ_SIZE_57
+# define BOOST_PP_SEQ_SIZE_57(_) BOOST_PP_SEQ_SIZE_58
+# define BOOST_PP_SEQ_SIZE_58(_) BOOST_PP_SEQ_SIZE_59
+# define BOOST_PP_SEQ_SIZE_59(_) BOOST_PP_SEQ_SIZE_60
+# define BOOST_PP_SEQ_SIZE_60(_) BOOST_PP_SEQ_SIZE_61
+# define BOOST_PP_SEQ_SIZE_61(_) BOOST_PP_SEQ_SIZE_62
+# define BOOST_PP_SEQ_SIZE_62(_) BOOST_PP_SEQ_SIZE_63
+# define BOOST_PP_SEQ_SIZE_63(_) BOOST_PP_SEQ_SIZE_64
+# define BOOST_PP_SEQ_SIZE_64(_) BOOST_PP_SEQ_SIZE_65
+# define BOOST_PP_SEQ_SIZE_65(_) BOOST_PP_SEQ_SIZE_66
+# define BOOST_PP_SEQ_SIZE_66(_) BOOST_PP_SEQ_SIZE_67
+# define BOOST_PP_SEQ_SIZE_67(_) BOOST_PP_SEQ_SIZE_68
+# define BOOST_PP_SEQ_SIZE_68(_) BOOST_PP_SEQ_SIZE_69
+# define BOOST_PP_SEQ_SIZE_69(_) BOOST_PP_SEQ_SIZE_70
+# define BOOST_PP_SEQ_SIZE_70(_) BOOST_PP_SEQ_SIZE_71
+# define BOOST_PP_SEQ_SIZE_71(_) BOOST_PP_SEQ_SIZE_72
+# define BOOST_PP_SEQ_SIZE_72(_) BOOST_PP_SEQ_SIZE_73
+# define BOOST_PP_SEQ_SIZE_73(_) BOOST_PP_SEQ_SIZE_74
+# define BOOST_PP_SEQ_SIZE_74(_) BOOST_PP_SEQ_SIZE_75
+# define BOOST_PP_SEQ_SIZE_75(_) BOOST_PP_SEQ_SIZE_76
+# define BOOST_PP_SEQ_SIZE_76(_) BOOST_PP_SEQ_SIZE_77
+# define BOOST_PP_SEQ_SIZE_77(_) BOOST_PP_SEQ_SIZE_78
+# define BOOST_PP_SEQ_SIZE_78(_) BOOST_PP_SEQ_SIZE_79
+# define BOOST_PP_SEQ_SIZE_79(_) BOOST_PP_SEQ_SIZE_80
+# define BOOST_PP_SEQ_SIZE_80(_) BOOST_PP_SEQ_SIZE_81
+# define BOOST_PP_SEQ_SIZE_81(_) BOOST_PP_SEQ_SIZE_82
+# define BOOST_PP_SEQ_SIZE_82(_) BOOST_PP_SEQ_SIZE_83
+# define BOOST_PP_SEQ_SIZE_83(_) BOOST_PP_SEQ_SIZE_84
+# define BOOST_PP_SEQ_SIZE_84(_) BOOST_PP_SEQ_SIZE_85
+# define BOOST_PP_SEQ_SIZE_85(_) BOOST_PP_SEQ_SIZE_86
+# define BOOST_PP_SEQ_SIZE_86(_) BOOST_PP_SEQ_SIZE_87
+# define BOOST_PP_SEQ_SIZE_87(_) BOOST_PP_SEQ_SIZE_88
+# define BOOST_PP_SEQ_SIZE_88(_) BOOST_PP_SEQ_SIZE_89
+# define BOOST_PP_SEQ_SIZE_89(_) BOOST_PP_SEQ_SIZE_90
+# define BOOST_PP_SEQ_SIZE_90(_) BOOST_PP_SEQ_SIZE_91
+# define BOOST_PP_SEQ_SIZE_91(_) BOOST_PP_SEQ_SIZE_92
+# define BOOST_PP_SEQ_SIZE_92(_) BOOST_PP_SEQ_SIZE_93
+# define BOOST_PP_SEQ_SIZE_93(_) BOOST_PP_SEQ_SIZE_94
+# define BOOST_PP_SEQ_SIZE_94(_) BOOST_PP_SEQ_SIZE_95
+# define BOOST_PP_SEQ_SIZE_95(_) BOOST_PP_SEQ_SIZE_96
+# define BOOST_PP_SEQ_SIZE_96(_) BOOST_PP_SEQ_SIZE_97
+# define BOOST_PP_SEQ_SIZE_97(_) BOOST_PP_SEQ_SIZE_98
+# define BOOST_PP_SEQ_SIZE_98(_) BOOST_PP_SEQ_SIZE_99
+# define BOOST_PP_SEQ_SIZE_99(_) BOOST_PP_SEQ_SIZE_100
+# define BOOST_PP_SEQ_SIZE_100(_) BOOST_PP_SEQ_SIZE_101
+# define BOOST_PP_SEQ_SIZE_101(_) BOOST_PP_SEQ_SIZE_102
+# define BOOST_PP_SEQ_SIZE_102(_) BOOST_PP_SEQ_SIZE_103
+# define BOOST_PP_SEQ_SIZE_103(_) BOOST_PP_SEQ_SIZE_104
+# define BOOST_PP_SEQ_SIZE_104(_) BOOST_PP_SEQ_SIZE_105
+# define BOOST_PP_SEQ_SIZE_105(_) BOOST_PP_SEQ_SIZE_106
+# define BOOST_PP_SEQ_SIZE_106(_) BOOST_PP_SEQ_SIZE_107
+# define BOOST_PP_SEQ_SIZE_107(_) BOOST_PP_SEQ_SIZE_108
+# define BOOST_PP_SEQ_SIZE_108(_) BOOST_PP_SEQ_SIZE_109
+# define BOOST_PP_SEQ_SIZE_109(_) BOOST_PP_SEQ_SIZE_110
+# define BOOST_PP_SEQ_SIZE_110(_) BOOST_PP_SEQ_SIZE_111
+# define BOOST_PP_SEQ_SIZE_111(_) BOOST_PP_SEQ_SIZE_112
+# define BOOST_PP_SEQ_SIZE_112(_) BOOST_PP_SEQ_SIZE_113
+# define BOOST_PP_SEQ_SIZE_113(_) BOOST_PP_SEQ_SIZE_114
+# define BOOST_PP_SEQ_SIZE_114(_) BOOST_PP_SEQ_SIZE_115
+# define BOOST_PP_SEQ_SIZE_115(_) BOOST_PP_SEQ_SIZE_116
+# define BOOST_PP_SEQ_SIZE_116(_) BOOST_PP_SEQ_SIZE_117
+# define BOOST_PP_SEQ_SIZE_117(_) BOOST_PP_SEQ_SIZE_118
+# define BOOST_PP_SEQ_SIZE_118(_) BOOST_PP_SEQ_SIZE_119
+# define BOOST_PP_SEQ_SIZE_119(_) BOOST_PP_SEQ_SIZE_120
+# define BOOST_PP_SEQ_SIZE_120(_) BOOST_PP_SEQ_SIZE_121
+# define BOOST_PP_SEQ_SIZE_121(_) BOOST_PP_SEQ_SIZE_122
+# define BOOST_PP_SEQ_SIZE_122(_) BOOST_PP_SEQ_SIZE_123
+# define BOOST_PP_SEQ_SIZE_123(_) BOOST_PP_SEQ_SIZE_124
+# define BOOST_PP_SEQ_SIZE_124(_) BOOST_PP_SEQ_SIZE_125
+# define BOOST_PP_SEQ_SIZE_125(_) BOOST_PP_SEQ_SIZE_126
+# define BOOST_PP_SEQ_SIZE_126(_) BOOST_PP_SEQ_SIZE_127
+# define BOOST_PP_SEQ_SIZE_127(_) BOOST_PP_SEQ_SIZE_128
+# define BOOST_PP_SEQ_SIZE_128(_) BOOST_PP_SEQ_SIZE_129
+# define BOOST_PP_SEQ_SIZE_129(_) BOOST_PP_SEQ_SIZE_130
+# define BOOST_PP_SEQ_SIZE_130(_) BOOST_PP_SEQ_SIZE_131
+# define BOOST_PP_SEQ_SIZE_131(_) BOOST_PP_SEQ_SIZE_132
+# define BOOST_PP_SEQ_SIZE_132(_) BOOST_PP_SEQ_SIZE_133
+# define BOOST_PP_SEQ_SIZE_133(_) BOOST_PP_SEQ_SIZE_134
+# define BOOST_PP_SEQ_SIZE_134(_) BOOST_PP_SEQ_SIZE_135
+# define BOOST_PP_SEQ_SIZE_135(_) BOOST_PP_SEQ_SIZE_136
+# define BOOST_PP_SEQ_SIZE_136(_) BOOST_PP_SEQ_SIZE_137
+# define BOOST_PP_SEQ_SIZE_137(_) BOOST_PP_SEQ_SIZE_138
+# define BOOST_PP_SEQ_SIZE_138(_) BOOST_PP_SEQ_SIZE_139
+# define BOOST_PP_SEQ_SIZE_139(_) BOOST_PP_SEQ_SIZE_140
+# define BOOST_PP_SEQ_SIZE_140(_) BOOST_PP_SEQ_SIZE_141
+# define BOOST_PP_SEQ_SIZE_141(_) BOOST_PP_SEQ_SIZE_142
+# define BOOST_PP_SEQ_SIZE_142(_) BOOST_PP_SEQ_SIZE_143
+# define BOOST_PP_SEQ_SIZE_143(_) BOOST_PP_SEQ_SIZE_144
+# define BOOST_PP_SEQ_SIZE_144(_) BOOST_PP_SEQ_SIZE_145
+# define BOOST_PP_SEQ_SIZE_145(_) BOOST_PP_SEQ_SIZE_146
+# define BOOST_PP_SEQ_SIZE_146(_) BOOST_PP_SEQ_SIZE_147
+# define BOOST_PP_SEQ_SIZE_147(_) BOOST_PP_SEQ_SIZE_148
+# define BOOST_PP_SEQ_SIZE_148(_) BOOST_PP_SEQ_SIZE_149
+# define BOOST_PP_SEQ_SIZE_149(_) BOOST_PP_SEQ_SIZE_150
+# define BOOST_PP_SEQ_SIZE_150(_) BOOST_PP_SEQ_SIZE_151
+# define BOOST_PP_SEQ_SIZE_151(_) BOOST_PP_SEQ_SIZE_152
+# define BOOST_PP_SEQ_SIZE_152(_) BOOST_PP_SEQ_SIZE_153
+# define BOOST_PP_SEQ_SIZE_153(_) BOOST_PP_SEQ_SIZE_154
+# define BOOST_PP_SEQ_SIZE_154(_) BOOST_PP_SEQ_SIZE_155
+# define BOOST_PP_SEQ_SIZE_155(_) BOOST_PP_SEQ_SIZE_156
+# define BOOST_PP_SEQ_SIZE_156(_) BOOST_PP_SEQ_SIZE_157
+# define BOOST_PP_SEQ_SIZE_157(_) BOOST_PP_SEQ_SIZE_158
+# define BOOST_PP_SEQ_SIZE_158(_) BOOST_PP_SEQ_SIZE_159
+# define BOOST_PP_SEQ_SIZE_159(_) BOOST_PP_SEQ_SIZE_160
+# define BOOST_PP_SEQ_SIZE_160(_) BOOST_PP_SEQ_SIZE_161
+# define BOOST_PP_SEQ_SIZE_161(_) BOOST_PP_SEQ_SIZE_162
+# define BOOST_PP_SEQ_SIZE_162(_) BOOST_PP_SEQ_SIZE_163
+# define BOOST_PP_SEQ_SIZE_163(_) BOOST_PP_SEQ_SIZE_164
+# define BOOST_PP_SEQ_SIZE_164(_) BOOST_PP_SEQ_SIZE_165
+# define BOOST_PP_SEQ_SIZE_165(_) BOOST_PP_SEQ_SIZE_166
+# define BOOST_PP_SEQ_SIZE_166(_) BOOST_PP_SEQ_SIZE_167
+# define BOOST_PP_SEQ_SIZE_167(_) BOOST_PP_SEQ_SIZE_168
+# define BOOST_PP_SEQ_SIZE_168(_) BOOST_PP_SEQ_SIZE_169
+# define BOOST_PP_SEQ_SIZE_169(_) BOOST_PP_SEQ_SIZE_170
+# define BOOST_PP_SEQ_SIZE_170(_) BOOST_PP_SEQ_SIZE_171
+# define BOOST_PP_SEQ_SIZE_171(_) BOOST_PP_SEQ_SIZE_172
+# define BOOST_PP_SEQ_SIZE_172(_) BOOST_PP_SEQ_SIZE_173
+# define BOOST_PP_SEQ_SIZE_173(_) BOOST_PP_SEQ_SIZE_174
+# define BOOST_PP_SEQ_SIZE_174(_) BOOST_PP_SEQ_SIZE_175
+# define BOOST_PP_SEQ_SIZE_175(_) BOOST_PP_SEQ_SIZE_176
+# define BOOST_PP_SEQ_SIZE_176(_) BOOST_PP_SEQ_SIZE_177
+# define BOOST_PP_SEQ_SIZE_177(_) BOOST_PP_SEQ_SIZE_178
+# define BOOST_PP_SEQ_SIZE_178(_) BOOST_PP_SEQ_SIZE_179
+# define BOOST_PP_SEQ_SIZE_179(_) BOOST_PP_SEQ_SIZE_180
+# define BOOST_PP_SEQ_SIZE_180(_) BOOST_PP_SEQ_SIZE_181
+# define BOOST_PP_SEQ_SIZE_181(_) BOOST_PP_SEQ_SIZE_182
+# define BOOST_PP_SEQ_SIZE_182(_) BOOST_PP_SEQ_SIZE_183
+# define BOOST_PP_SEQ_SIZE_183(_) BOOST_PP_SEQ_SIZE_184
+# define BOOST_PP_SEQ_SIZE_184(_) BOOST_PP_SEQ_SIZE_185
+# define BOOST_PP_SEQ_SIZE_185(_) BOOST_PP_SEQ_SIZE_186
+# define BOOST_PP_SEQ_SIZE_186(_) BOOST_PP_SEQ_SIZE_187
+# define BOOST_PP_SEQ_SIZE_187(_) BOOST_PP_SEQ_SIZE_188
+# define BOOST_PP_SEQ_SIZE_188(_) BOOST_PP_SEQ_SIZE_189
+# define BOOST_PP_SEQ_SIZE_189(_) BOOST_PP_SEQ_SIZE_190
+# define BOOST_PP_SEQ_SIZE_190(_) BOOST_PP_SEQ_SIZE_191
+# define BOOST_PP_SEQ_SIZE_191(_) BOOST_PP_SEQ_SIZE_192
+# define BOOST_PP_SEQ_SIZE_192(_) BOOST_PP_SEQ_SIZE_193
+# define BOOST_PP_SEQ_SIZE_193(_) BOOST_PP_SEQ_SIZE_194
+# define BOOST_PP_SEQ_SIZE_194(_) BOOST_PP_SEQ_SIZE_195
+# define BOOST_PP_SEQ_SIZE_195(_) BOOST_PP_SEQ_SIZE_196
+# define BOOST_PP_SEQ_SIZE_196(_) BOOST_PP_SEQ_SIZE_197
+# define BOOST_PP_SEQ_SIZE_197(_) BOOST_PP_SEQ_SIZE_198
+# define BOOST_PP_SEQ_SIZE_198(_) BOOST_PP_SEQ_SIZE_199
+# define BOOST_PP_SEQ_SIZE_199(_) BOOST_PP_SEQ_SIZE_200
+# define BOOST_PP_SEQ_SIZE_200(_) BOOST_PP_SEQ_SIZE_201
+# define BOOST_PP_SEQ_SIZE_201(_) BOOST_PP_SEQ_SIZE_202
+# define BOOST_PP_SEQ_SIZE_202(_) BOOST_PP_SEQ_SIZE_203
+# define BOOST_PP_SEQ_SIZE_203(_) BOOST_PP_SEQ_SIZE_204
+# define BOOST_PP_SEQ_SIZE_204(_) BOOST_PP_SEQ_SIZE_205
+# define BOOST_PP_SEQ_SIZE_205(_) BOOST_PP_SEQ_SIZE_206
+# define BOOST_PP_SEQ_SIZE_206(_) BOOST_PP_SEQ_SIZE_207
+# define BOOST_PP_SEQ_SIZE_207(_) BOOST_PP_SEQ_SIZE_208
+# define BOOST_PP_SEQ_SIZE_208(_) BOOST_PP_SEQ_SIZE_209
+# define BOOST_PP_SEQ_SIZE_209(_) BOOST_PP_SEQ_SIZE_210
+# define BOOST_PP_SEQ_SIZE_210(_) BOOST_PP_SEQ_SIZE_211
+# define BOOST_PP_SEQ_SIZE_211(_) BOOST_PP_SEQ_SIZE_212
+# define BOOST_PP_SEQ_SIZE_212(_) BOOST_PP_SEQ_SIZE_213
+# define BOOST_PP_SEQ_SIZE_213(_) BOOST_PP_SEQ_SIZE_214
+# define BOOST_PP_SEQ_SIZE_214(_) BOOST_PP_SEQ_SIZE_215
+# define BOOST_PP_SEQ_SIZE_215(_) BOOST_PP_SEQ_SIZE_216
+# define BOOST_PP_SEQ_SIZE_216(_) BOOST_PP_SEQ_SIZE_217
+# define BOOST_PP_SEQ_SIZE_217(_) BOOST_PP_SEQ_SIZE_218
+# define BOOST_PP_SEQ_SIZE_218(_) BOOST_PP_SEQ_SIZE_219
+# define BOOST_PP_SEQ_SIZE_219(_) BOOST_PP_SEQ_SIZE_220
+# define BOOST_PP_SEQ_SIZE_220(_) BOOST_PP_SEQ_SIZE_221
+# define BOOST_PP_SEQ_SIZE_221(_) BOOST_PP_SEQ_SIZE_222
+# define BOOST_PP_SEQ_SIZE_222(_) BOOST_PP_SEQ_SIZE_223
+# define BOOST_PP_SEQ_SIZE_223(_) BOOST_PP_SEQ_SIZE_224
+# define BOOST_PP_SEQ_SIZE_224(_) BOOST_PP_SEQ_SIZE_225
+# define BOOST_PP_SEQ_SIZE_225(_) BOOST_PP_SEQ_SIZE_226
+# define BOOST_PP_SEQ_SIZE_226(_) BOOST_PP_SEQ_SIZE_227
+# define BOOST_PP_SEQ_SIZE_227(_) BOOST_PP_SEQ_SIZE_228
+# define BOOST_PP_SEQ_SIZE_228(_) BOOST_PP_SEQ_SIZE_229
+# define BOOST_PP_SEQ_SIZE_229(_) BOOST_PP_SEQ_SIZE_230
+# define BOOST_PP_SEQ_SIZE_230(_) BOOST_PP_SEQ_SIZE_231
+# define BOOST_PP_SEQ_SIZE_231(_) BOOST_PP_SEQ_SIZE_232
+# define BOOST_PP_SEQ_SIZE_232(_) BOOST_PP_SEQ_SIZE_233
+# define BOOST_PP_SEQ_SIZE_233(_) BOOST_PP_SEQ_SIZE_234
+# define BOOST_PP_SEQ_SIZE_234(_) BOOST_PP_SEQ_SIZE_235
+# define BOOST_PP_SEQ_SIZE_235(_) BOOST_PP_SEQ_SIZE_236
+# define BOOST_PP_SEQ_SIZE_236(_) BOOST_PP_SEQ_SIZE_237
+# define BOOST_PP_SEQ_SIZE_237(_) BOOST_PP_SEQ_SIZE_238
+# define BOOST_PP_SEQ_SIZE_238(_) BOOST_PP_SEQ_SIZE_239
+# define BOOST_PP_SEQ_SIZE_239(_) BOOST_PP_SEQ_SIZE_240
+# define BOOST_PP_SEQ_SIZE_240(_) BOOST_PP_SEQ_SIZE_241
+# define BOOST_PP_SEQ_SIZE_241(_) BOOST_PP_SEQ_SIZE_242
+# define BOOST_PP_SEQ_SIZE_242(_) BOOST_PP_SEQ_SIZE_243
+# define BOOST_PP_SEQ_SIZE_243(_) BOOST_PP_SEQ_SIZE_244
+# define BOOST_PP_SEQ_SIZE_244(_) BOOST_PP_SEQ_SIZE_245
+# define BOOST_PP_SEQ_SIZE_245(_) BOOST_PP_SEQ_SIZE_246
+# define BOOST_PP_SEQ_SIZE_246(_) BOOST_PP_SEQ_SIZE_247
+# define BOOST_PP_SEQ_SIZE_247(_) BOOST_PP_SEQ_SIZE_248
+# define BOOST_PP_SEQ_SIZE_248(_) BOOST_PP_SEQ_SIZE_249
+# define BOOST_PP_SEQ_SIZE_249(_) BOOST_PP_SEQ_SIZE_250
+# define BOOST_PP_SEQ_SIZE_250(_) BOOST_PP_SEQ_SIZE_251
+# define BOOST_PP_SEQ_SIZE_251(_) BOOST_PP_SEQ_SIZE_252
+# define BOOST_PP_SEQ_SIZE_252(_) BOOST_PP_SEQ_SIZE_253
+# define BOOST_PP_SEQ_SIZE_253(_) BOOST_PP_SEQ_SIZE_254
+# define BOOST_PP_SEQ_SIZE_254(_) BOOST_PP_SEQ_SIZE_255
+# define BOOST_PP_SEQ_SIZE_255(_) BOOST_PP_SEQ_SIZE_256
+# define BOOST_PP_SEQ_SIZE_256(_) BOOST_PP_SEQ_SIZE_257
+#
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_0 0
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_1 1
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_2 2
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_3 3
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_4 4
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_5 5
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_6 6
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_7 7
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_8 8
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_9 9
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_10 10
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_11 11
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_12 12
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_13 13
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_14 14
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_15 15
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_16 16
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_17 17
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_18 18
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_19 19
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_20 20
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_21 21
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_22 22
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_23 23
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_24 24
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_25 25
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_26 26
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_27 27
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_28 28
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_29 29
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_30 30
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_31 31
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_32 32
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_33 33
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_34 34
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_35 35
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_36 36
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_37 37
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_38 38
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_39 39
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_40 40
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_41 41
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_42 42
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_43 43
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_44 44
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_45 45
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_46 46
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_47 47
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_48 48
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_49 49
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_50 50
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_51 51
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_52 52
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_53 53
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_54 54
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_55 55
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_56 56
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_57 57
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_58 58
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_59 59
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_60 60
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_61 61
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_62 62
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_63 63
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_64 64
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_65 65
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_66 66
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_67 67
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_68 68
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_69 69
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_70 70
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_71 71
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_72 72
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_73 73
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_74 74
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_75 75
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_76 76
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_77 77
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_78 78
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_79 79
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_80 80
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_81 81
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_82 82
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_83 83
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_84 84
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_85 85
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_86 86
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_87 87
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_88 88
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_89 89
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_90 90
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_91 91
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_92 92
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_93 93
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_94 94
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_95 95
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_96 96
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_97 97
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_98 98
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_99 99
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_100 100
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_101 101
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_102 102
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_103 103
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_104 104
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_105 105
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_106 106
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_107 107
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_108 108
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_109 109
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_110 110
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_111 111
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_112 112
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_113 113
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_114 114
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_115 115
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_116 116
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_117 117
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_118 118
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_119 119
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_120 120
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_121 121
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_122 122
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_123 123
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_124 124
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_125 125
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_126 126
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_127 127
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_128 128
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_129 129
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_130 130
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_131 131
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_132 132
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_133 133
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_134 134
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_135 135
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_136 136
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_137 137
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_138 138
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_139 139
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_140 140
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_141 141
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_142 142
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_143 143
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_144 144
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_145 145
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_146 146
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_147 147
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_148 148
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_149 149
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_150 150
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_151 151
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_152 152
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_153 153
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_154 154
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_155 155
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_156 156
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_157 157
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_158 158
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_159 159
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_160 160
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_161 161
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_162 162
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_163 163
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_164 164
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_165 165
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_166 166
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_167 167
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_168 168
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_169 169
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_170 170
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_171 171
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_172 172
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_173 173
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_174 174
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_175 175
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_176 176
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_177 177
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_178 178
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_179 179
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_180 180
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_181 181
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_182 182
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_183 183
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_184 184
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_185 185
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_186 186
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_187 187
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_188 188
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_189 189
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_190 190
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_191 191
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_192 192
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_193 193
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_194 194
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_195 195
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_196 196
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_197 197
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_198 198
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_199 199
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_200 200
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_201 201
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_202 202
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_203 203
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_204 204
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_205 205
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_206 206
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_207 207
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_208 208
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_209 209
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_210 210
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_211 211
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_212 212
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_213 213
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_214 214
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_215 215
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_216 216
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_217 217
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_218 218
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_219 219
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_220 220
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_221 221
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_222 222
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_223 223
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_224 224
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_225 225
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_226 226
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_227 227
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_228 228
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_229 229
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_230 230
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_231 231
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_232 232
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_233 233
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_234 234
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_235 235
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_236 236
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_237 237
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_238 238
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_239 239
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_240 240
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_241 241
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_242 242
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_243 243
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_244 244
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_245 245
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_246 246
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_247 247
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_248 248
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_249 249
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_250 250
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_251 251
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_252 252
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_253 253
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_254 254
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_255 255
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_256 256
+# define BOOST_PP_SEQ_SIZE_BOOST_PP_SEQ_SIZE_257 257
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/subseq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/subseq.hpp
new file mode 100644
index 0000000..fb242f1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/subseq.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP
+# define BOOST_PREPROCESSOR_SEQ_SUBSEQ_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/first_n.hpp>
+# include <boost/preprocessor/seq/rest_n.hpp>
+#
+# /* BOOST_PP_SEQ_SUBSEQ */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq))
+# else
+# define BOOST_PP_SEQ_SUBSEQ(seq, i, len) BOOST_PP_SEQ_SUBSEQ_I(seq, i, len)
+# define BOOST_PP_SEQ_SUBSEQ_I(seq, i, len) BOOST_PP_SEQ_FIRST_N(len, BOOST_PP_SEQ_REST_N(i, seq))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_array.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_array.hpp
new file mode 100644
index 0000000..d8a8040
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_array.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_TO_ARRAY_HPP
+# define BOOST_PREPROCESSOR_SEQ_TO_ARRAY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+#
+# /* BOOST_PP_SEQ_TO_ARRAY */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TO_ARRAY(seq) (BOOST_PP_SEQ_SIZE(seq), (BOOST_PP_SEQ_ENUM(seq)))
+# else
+# define BOOST_PP_SEQ_TO_ARRAY(seq) BOOST_PP_SEQ_TO_ARRAY_I(seq)
+# define BOOST_PP_SEQ_TO_ARRAY_I(seq) (BOOST_PP_SEQ_SIZE(seq), (BOOST_PP_SEQ_ENUM(seq)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_list.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_list.hpp
new file mode 100644
index 0000000..ed8948d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_list.hpp
@@ -0,0 +1,41 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_TO_LIST_HPP
+# define BOOST_PREPROCESSOR_SEQ_TO_LIST_HPP
+#
+# include <boost/preprocessor/punctuation/comma.hpp>
+# include <boost/preprocessor/punctuation/paren.hpp>
+# include <boost/preprocessor/seq/detail/binary_transform.hpp>
+#
+# /* BOOST_PP_SEQ_TO_LIST */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/seq/detail/to_list_msvc.hpp>
+# define BOOST_PP_SEQ_TO_LIST(seq) \
+ BOOST_PP_SEQ_DETAIL_TO_LIST_MSVC \
+ ( \
+ BOOST_PP_SEQ_TO_LIST_I(BOOST_PP_SEQ_BINARY_TRANSFORM(seq)), \
+ BOOST_PP_SEQ_SIZE(seq) \
+ ) \
+/**/
+# else
+# define BOOST_PP_SEQ_TO_LIST(seq) BOOST_PP_SEQ_TO_LIST_I(BOOST_PP_SEQ_BINARY_TRANSFORM(seq))
+# endif
+# define BOOST_PP_SEQ_TO_LIST_I(bseq) BOOST_PP_SEQ_TO_LIST_A bseq BOOST_PP_NIL BOOST_PP_SEQ_TO_LIST_B bseq
+# define BOOST_PP_SEQ_TO_LIST_A(m, e) m(BOOST_PP_LPAREN() e BOOST_PP_COMMA() BOOST_PP_SEQ_TO_LIST_A_ID)
+# define BOOST_PP_SEQ_TO_LIST_A_ID() BOOST_PP_SEQ_TO_LIST_A
+# define BOOST_PP_SEQ_TO_LIST_B(m, e) m(BOOST_PP_RPAREN() BOOST_PP_SEQ_TO_LIST_B_ID)
+# define BOOST_PP_SEQ_TO_LIST_B_ID() BOOST_PP_SEQ_TO_LIST_B
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_tuple.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_tuple.hpp
new file mode 100644
index 0000000..ab38eb9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/to_tuple.hpp
@@ -0,0 +1,27 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP
+# define BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/enum.hpp>
+#
+# /* BOOST_PP_SEQ_TO_TUPLE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TO_TUPLE(seq) (BOOST_PP_SEQ_ENUM(seq))
+# else
+# define BOOST_PP_SEQ_TO_TUPLE(seq) BOOST_PP_SEQ_TO_TUPLE_I(seq)
+# define BOOST_PP_SEQ_TO_TUPLE_I(seq) (BOOST_PP_SEQ_ENUM(seq))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/transform.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/transform.hpp
new file mode 100644
index 0000000..79d8108
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/transform.hpp
@@ -0,0 +1,48 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
+# define BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/seq/fold_left.hpp>
+# include <boost/preprocessor/seq/seq.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_SEQ_TRANSFORM */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TRANSFORM_I(op, data, seq)
+# define BOOST_PP_SEQ_TRANSFORM_I(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
+# define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_IM(s, BOOST_PP_TUPLE_REM_3 state, elem)
+# define BOOST_PP_SEQ_TRANSFORM_O_IM(s, im, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, im, elem)
+# else
+# define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, state), BOOST_PP_TUPLE_ELEM(3, 1, state), BOOST_PP_TUPLE_ELEM(3, 2, state), elem)
+# endif
+#
+# define BOOST_PP_SEQ_TRANSFORM_O_I(s, op, data, res, elem) (op, data, res (op(s, data, elem)))
+#
+# /* BOOST_PP_SEQ_TRANSFORM_S */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# else
+# define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq)
+# define BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp
new file mode 100644
index 0000000..f94a2bf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2012. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SEQ_VARIADIC_SEQ_TO_SEQ_HPP
+# define BOOST_PREPROCESSOR_SEQ_VARIADIC_SEQ_TO_SEQ_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_SEQ_TO_SEQ */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADIC_SEQ_TO_SEQ(vseq) BOOST_PP_CAT(BOOST_PP_VARIADIC_SEQ_TO_SEQ_A vseq, 0)
+# define BOOST_PP_VARIADIC_SEQ_TO_SEQ_A(...) ((__VA_ARGS__)) BOOST_PP_VARIADIC_SEQ_TO_SEQ_B
+# define BOOST_PP_VARIADIC_SEQ_TO_SEQ_B(...) ((__VA_ARGS__)) BOOST_PP_VARIADIC_SEQ_TO_SEQ_A
+# define BOOST_PP_VARIADIC_SEQ_TO_SEQ_A0
+# define BOOST_PP_VARIADIC_SEQ_TO_SEQ_B0
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot.hpp
new file mode 100644
index 0000000..fb3c9b0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SLOT_HPP
+# define BOOST_PREPROCESSOR_SLOT_HPP
+#
+# include <boost/preprocessor/slot/slot.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/counter.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/counter.hpp
new file mode 100644
index 0000000..d257a64
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/counter.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SLOT_COUNTER_HPP
+# define BOOST_PREPROCESSOR_SLOT_COUNTER_HPP
+#
+# include <boost/preprocessor/slot/detail/def.hpp>
+#
+# /* BOOST_PP_COUNTER */
+#
+# define BOOST_PP_COUNTER 0
+#
+# /* BOOST_PP_UPDATE_COUNTER */
+#
+# define BOOST_PP_UPDATE_COUNTER() <boost/preprocessor/slot/detail/counter.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp
new file mode 100644
index 0000000..a1c0df1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/counter.hpp
@@ -0,0 +1,269 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2005. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# define BOOST_PP_VALUE BOOST_PP_COUNTER + 1
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_COUNTER
+#
+# undef BOOST_PP_COUNTER_DIGIT_1
+# undef BOOST_PP_COUNTER_DIGIT_2
+# undef BOOST_PP_COUNTER_DIGIT_3
+# undef BOOST_PP_COUNTER_DIGIT_4
+# undef BOOST_PP_COUNTER_DIGIT_5
+# undef BOOST_PP_COUNTER_DIGIT_6
+# undef BOOST_PP_COUNTER_DIGIT_7
+# undef BOOST_PP_COUNTER_DIGIT_8
+# undef BOOST_PP_COUNTER_DIGIT_9
+# undef BOOST_PP_COUNTER_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_COUNTER_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_COUNTER_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_COUNTER_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_COUNTER_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_COUNTER_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_COUNTER_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_COUNTER_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_COUNTER_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_COUNTER_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_COUNTER_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_COUNTER_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_COUNTER_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_COUNTER_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_COUNTER_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_COUNTER_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_COUNTER_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_COUNTER_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_COUNTER_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_COUNTER_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_COUNTER_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_COUNTER_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_COUNTER_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_COUNTER_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_COUNTER_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_COUNTER_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_COUNTER_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_COUNTER_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_COUNTER_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_COUNTER_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_COUNTER_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_COUNTER_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_COUNTER_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_COUNTER_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_COUNTER_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_COUNTER_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_COUNTER_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_COUNTER_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_COUNTER_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_COUNTER_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_COUNTER_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_COUNTER_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_COUNTER_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_COUNTER_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_COUNTER_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_COUNTER_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_COUNTER_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_COUNTER_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_COUNTER_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_COUNTER_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_COUNTER_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_COUNTER_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_COUNTER_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_COUNTER_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_COUNTER_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_COUNTER_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_COUNTER_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_COUNTER_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_COUNTER_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_COUNTER_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_COUNTER_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_COUNTER_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_COUNTER_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_COUNTER_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_COUNTER_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_COUNTER_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_COUNTER_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_COUNTER_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_COUNTER_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_COUNTER_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_COUNTER_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_COUNTER_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_COUNTER_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_COUNTER_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_COUNTER_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_COUNTER_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_COUNTER_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_COUNTER_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_COUNTER_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_COUNTER_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_COUNTER_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_COUNTER_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_COUNTER_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_COUNTER_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_COUNTER_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_COUNTER_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_COUNTER_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_COUNTER_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_COUNTER_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_COUNTER_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_COUNTER_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_COUNTER_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_COUNTER_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_COUNTER_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_COUNTER_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_COUNTER_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_COUNTER_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_COUNTER_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_COUNTER_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_COUNTER_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_COUNTER_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_COUNTER_DIGIT_10
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_10(BOOST_PP_COUNTER_DIGIT_10, BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_9
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_9(BOOST_PP_COUNTER_DIGIT_9, BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_8
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_8(BOOST_PP_COUNTER_DIGIT_8, BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_7
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_7(BOOST_PP_COUNTER_DIGIT_7, BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_6
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_6(BOOST_PP_COUNTER_DIGIT_6, BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_5
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_5(BOOST_PP_COUNTER_DIGIT_5, BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_4
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_4(BOOST_PP_COUNTER_DIGIT_4, BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_3
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_3(BOOST_PP_COUNTER_DIGIT_3, BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# elif BOOST_PP_COUNTER_DIGIT_2
+# define BOOST_PP_COUNTER BOOST_PP_SLOT_CC_2(BOOST_PP_COUNTER_DIGIT_2, BOOST_PP_COUNTER_DIGIT_1)
+# else
+# define BOOST_PP_COUNTER BOOST_PP_COUNTER_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/def.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/def.hpp
new file mode 100644
index 0000000..885099e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/def.hpp
@@ -0,0 +1,49 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
+# define BOOST_PREPROCESSOR_SLOT_DETAIL_DEF_HPP
+#
+# /* BOOST_PP_SLOT_OFFSET_x */
+#
+# define BOOST_PP_SLOT_OFFSET_10(x) (x) % 1000000000UL
+# define BOOST_PP_SLOT_OFFSET_9(x) BOOST_PP_SLOT_OFFSET_10(x) % 100000000UL
+# define BOOST_PP_SLOT_OFFSET_8(x) BOOST_PP_SLOT_OFFSET_9(x) % 10000000UL
+# define BOOST_PP_SLOT_OFFSET_7(x) BOOST_PP_SLOT_OFFSET_8(x) % 1000000UL
+# define BOOST_PP_SLOT_OFFSET_6(x) BOOST_PP_SLOT_OFFSET_7(x) % 100000UL
+# define BOOST_PP_SLOT_OFFSET_5(x) BOOST_PP_SLOT_OFFSET_6(x) % 10000UL
+# define BOOST_PP_SLOT_OFFSET_4(x) BOOST_PP_SLOT_OFFSET_5(x) % 1000UL
+# define BOOST_PP_SLOT_OFFSET_3(x) BOOST_PP_SLOT_OFFSET_4(x) % 100UL
+# define BOOST_PP_SLOT_OFFSET_2(x) BOOST_PP_SLOT_OFFSET_3(x) % 10UL
+#
+# /* BOOST_PP_SLOT_CC_x */
+#
+# define BOOST_PP_SLOT_CC_2(a, b) BOOST_PP_SLOT_CC_2_D(a, b)
+# define BOOST_PP_SLOT_CC_3(a, b, c) BOOST_PP_SLOT_CC_3_D(a, b, c)
+# define BOOST_PP_SLOT_CC_4(a, b, c, d) BOOST_PP_SLOT_CC_4_D(a, b, c, d)
+# define BOOST_PP_SLOT_CC_5(a, b, c, d, e) BOOST_PP_SLOT_CC_5_D(a, b, c, d, e)
+# define BOOST_PP_SLOT_CC_6(a, b, c, d, e, f) BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f)
+# define BOOST_PP_SLOT_CC_7(a, b, c, d, e, f, g) BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g)
+# define BOOST_PP_SLOT_CC_8(a, b, c, d, e, f, g, h) BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h)
+# define BOOST_PP_SLOT_CC_9(a, b, c, d, e, f, g, h, i) BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i)
+# define BOOST_PP_SLOT_CC_10(a, b, c, d, e, f, g, h, i, j) BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j)
+#
+# define BOOST_PP_SLOT_CC_2_D(a, b) a ## b
+# define BOOST_PP_SLOT_CC_3_D(a, b, c) a ## b ## c
+# define BOOST_PP_SLOT_CC_4_D(a, b, c, d) a ## b ## c ## d
+# define BOOST_PP_SLOT_CC_5_D(a, b, c, d, e) a ## b ## c ## d ## e
+# define BOOST_PP_SLOT_CC_6_D(a, b, c, d, e, f) a ## b ## c ## d ## e ## f
+# define BOOST_PP_SLOT_CC_7_D(a, b, c, d, e, f, g) a ## b ## c ## d ## e ## f ## g
+# define BOOST_PP_SLOT_CC_8_D(a, b, c, d, e, f, g, h) a ## b ## c ## d ## e ## f ## g ## h
+# define BOOST_PP_SLOT_CC_9_D(a, b, c, d, e, f, g, h, i) a ## b ## c ## d ## e ## f ## g ## h ## i
+# define BOOST_PP_SLOT_CC_10_D(a, b, c, d, e, f, g, h, i, j) a ## b ## c ## d ## e ## f ## g ## h ## i ## j
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/shared.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/shared.hpp
new file mode 100644
index 0000000..c97ac54
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/shared.hpp
@@ -0,0 +1,247 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PP_VALUE
+# error BOOST_PP_ERROR: BOOST_PP_VALUE is not defined
+# endif
+#
+# undef BOOST_PP_SLOT_TEMP_1
+# undef BOOST_PP_SLOT_TEMP_2
+# undef BOOST_PP_SLOT_TEMP_3
+# undef BOOST_PP_SLOT_TEMP_4
+# undef BOOST_PP_SLOT_TEMP_5
+# undef BOOST_PP_SLOT_TEMP_6
+# undef BOOST_PP_SLOT_TEMP_7
+# undef BOOST_PP_SLOT_TEMP_8
+# undef BOOST_PP_SLOT_TEMP_9
+# undef BOOST_PP_SLOT_TEMP_10
+#
+# if (BOOST_PP_VALUE) / 1000000000UL == 0
+# define BOOST_PP_SLOT_TEMP_10 0
+# elif (BOOST_PP_VALUE) / 1000000000UL == 1
+# define BOOST_PP_SLOT_TEMP_10 1
+# elif (BOOST_PP_VALUE) / 1000000000UL == 2
+# define BOOST_PP_SLOT_TEMP_10 2
+# elif (BOOST_PP_VALUE) / 1000000000UL == 3
+# define BOOST_PP_SLOT_TEMP_10 3
+# elif (BOOST_PP_VALUE) / 1000000000UL == 4
+# define BOOST_PP_SLOT_TEMP_10 4
+# elif (BOOST_PP_VALUE) / 1000000000UL == 5
+# define BOOST_PP_SLOT_TEMP_10 5
+# elif (BOOST_PP_VALUE) / 1000000000UL == 6
+# define BOOST_PP_SLOT_TEMP_10 6
+# elif (BOOST_PP_VALUE) / 1000000000UL == 7
+# define BOOST_PP_SLOT_TEMP_10 7
+# elif (BOOST_PP_VALUE) / 1000000000UL == 8
+# define BOOST_PP_SLOT_TEMP_10 8
+# elif (BOOST_PP_VALUE) / 1000000000UL == 9
+# define BOOST_PP_SLOT_TEMP_10 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 0
+# define BOOST_PP_SLOT_TEMP_9 0
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 1
+# define BOOST_PP_SLOT_TEMP_9 1
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 2
+# define BOOST_PP_SLOT_TEMP_9 2
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 3
+# define BOOST_PP_SLOT_TEMP_9 3
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 4
+# define BOOST_PP_SLOT_TEMP_9 4
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 5
+# define BOOST_PP_SLOT_TEMP_9 5
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 6
+# define BOOST_PP_SLOT_TEMP_9 6
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 7
+# define BOOST_PP_SLOT_TEMP_9 7
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 8
+# define BOOST_PP_SLOT_TEMP_9 8
+# elif BOOST_PP_SLOT_OFFSET_10(BOOST_PP_VALUE) / 100000000UL == 9
+# define BOOST_PP_SLOT_TEMP_9 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 0
+# define BOOST_PP_SLOT_TEMP_8 0
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 1
+# define BOOST_PP_SLOT_TEMP_8 1
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 2
+# define BOOST_PP_SLOT_TEMP_8 2
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 3
+# define BOOST_PP_SLOT_TEMP_8 3
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 4
+# define BOOST_PP_SLOT_TEMP_8 4
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 5
+# define BOOST_PP_SLOT_TEMP_8 5
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 6
+# define BOOST_PP_SLOT_TEMP_8 6
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 7
+# define BOOST_PP_SLOT_TEMP_8 7
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 8
+# define BOOST_PP_SLOT_TEMP_8 8
+# elif BOOST_PP_SLOT_OFFSET_9(BOOST_PP_VALUE) / 10000000UL == 9
+# define BOOST_PP_SLOT_TEMP_8 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 0
+# define BOOST_PP_SLOT_TEMP_7 0
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 1
+# define BOOST_PP_SLOT_TEMP_7 1
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 2
+# define BOOST_PP_SLOT_TEMP_7 2
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 3
+# define BOOST_PP_SLOT_TEMP_7 3
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 4
+# define BOOST_PP_SLOT_TEMP_7 4
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 5
+# define BOOST_PP_SLOT_TEMP_7 5
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 6
+# define BOOST_PP_SLOT_TEMP_7 6
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 7
+# define BOOST_PP_SLOT_TEMP_7 7
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 8
+# define BOOST_PP_SLOT_TEMP_7 8
+# elif BOOST_PP_SLOT_OFFSET_8(BOOST_PP_VALUE) / 1000000UL == 9
+# define BOOST_PP_SLOT_TEMP_7 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 0
+# define BOOST_PP_SLOT_TEMP_6 0
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 1
+# define BOOST_PP_SLOT_TEMP_6 1
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 2
+# define BOOST_PP_SLOT_TEMP_6 2
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 3
+# define BOOST_PP_SLOT_TEMP_6 3
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 4
+# define BOOST_PP_SLOT_TEMP_6 4
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 5
+# define BOOST_PP_SLOT_TEMP_6 5
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 6
+# define BOOST_PP_SLOT_TEMP_6 6
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 7
+# define BOOST_PP_SLOT_TEMP_6 7
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 8
+# define BOOST_PP_SLOT_TEMP_6 8
+# elif BOOST_PP_SLOT_OFFSET_7(BOOST_PP_VALUE) / 100000UL == 9
+# define BOOST_PP_SLOT_TEMP_6 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 0
+# define BOOST_PP_SLOT_TEMP_5 0
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 1
+# define BOOST_PP_SLOT_TEMP_5 1
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 2
+# define BOOST_PP_SLOT_TEMP_5 2
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 3
+# define BOOST_PP_SLOT_TEMP_5 3
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 4
+# define BOOST_PP_SLOT_TEMP_5 4
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 5
+# define BOOST_PP_SLOT_TEMP_5 5
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 6
+# define BOOST_PP_SLOT_TEMP_5 6
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 7
+# define BOOST_PP_SLOT_TEMP_5 7
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 8
+# define BOOST_PP_SLOT_TEMP_5 8
+# elif BOOST_PP_SLOT_OFFSET_6(BOOST_PP_VALUE) / 10000UL == 9
+# define BOOST_PP_SLOT_TEMP_5 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 0
+# define BOOST_PP_SLOT_TEMP_4 0
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 1
+# define BOOST_PP_SLOT_TEMP_4 1
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 2
+# define BOOST_PP_SLOT_TEMP_4 2
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 3
+# define BOOST_PP_SLOT_TEMP_4 3
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 4
+# define BOOST_PP_SLOT_TEMP_4 4
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 5
+# define BOOST_PP_SLOT_TEMP_4 5
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 6
+# define BOOST_PP_SLOT_TEMP_4 6
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 7
+# define BOOST_PP_SLOT_TEMP_4 7
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 8
+# define BOOST_PP_SLOT_TEMP_4 8
+# elif BOOST_PP_SLOT_OFFSET_5(BOOST_PP_VALUE) / 1000UL == 9
+# define BOOST_PP_SLOT_TEMP_4 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 0
+# define BOOST_PP_SLOT_TEMP_3 0
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 1
+# define BOOST_PP_SLOT_TEMP_3 1
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 2
+# define BOOST_PP_SLOT_TEMP_3 2
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 3
+# define BOOST_PP_SLOT_TEMP_3 3
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 4
+# define BOOST_PP_SLOT_TEMP_3 4
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 5
+# define BOOST_PP_SLOT_TEMP_3 5
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 6
+# define BOOST_PP_SLOT_TEMP_3 6
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 7
+# define BOOST_PP_SLOT_TEMP_3 7
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 8
+# define BOOST_PP_SLOT_TEMP_3 8
+# elif BOOST_PP_SLOT_OFFSET_4(BOOST_PP_VALUE) / 100UL == 9
+# define BOOST_PP_SLOT_TEMP_3 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 0
+# define BOOST_PP_SLOT_TEMP_2 0
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 1
+# define BOOST_PP_SLOT_TEMP_2 1
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 2
+# define BOOST_PP_SLOT_TEMP_2 2
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 3
+# define BOOST_PP_SLOT_TEMP_2 3
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 4
+# define BOOST_PP_SLOT_TEMP_2 4
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 5
+# define BOOST_PP_SLOT_TEMP_2 5
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 6
+# define BOOST_PP_SLOT_TEMP_2 6
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 7
+# define BOOST_PP_SLOT_TEMP_2 7
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 8
+# define BOOST_PP_SLOT_TEMP_2 8
+# elif BOOST_PP_SLOT_OFFSET_3(BOOST_PP_VALUE) / 10UL == 9
+# define BOOST_PP_SLOT_TEMP_2 9
+# endif
+#
+# if BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 0
+# define BOOST_PP_SLOT_TEMP_1 0
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 1
+# define BOOST_PP_SLOT_TEMP_1 1
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 2
+# define BOOST_PP_SLOT_TEMP_1 2
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 3
+# define BOOST_PP_SLOT_TEMP_1 3
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 4
+# define BOOST_PP_SLOT_TEMP_1 4
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 5
+# define BOOST_PP_SLOT_TEMP_1 5
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 6
+# define BOOST_PP_SLOT_TEMP_1 6
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 7
+# define BOOST_PP_SLOT_TEMP_1 7
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 8
+# define BOOST_PP_SLOT_TEMP_1 8
+# elif BOOST_PP_SLOT_OFFSET_2(BOOST_PP_VALUE) == 9
+# define BOOST_PP_SLOT_TEMP_1 9
+# endif
+#
+# undef BOOST_PP_VALUE
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot1.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot1.hpp
new file mode 100644
index 0000000..b22748e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot1.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_1
+#
+# undef BOOST_PP_SLOT_1_DIGIT_1
+# undef BOOST_PP_SLOT_1_DIGIT_2
+# undef BOOST_PP_SLOT_1_DIGIT_3
+# undef BOOST_PP_SLOT_1_DIGIT_4
+# undef BOOST_PP_SLOT_1_DIGIT_5
+# undef BOOST_PP_SLOT_1_DIGIT_6
+# undef BOOST_PP_SLOT_1_DIGIT_7
+# undef BOOST_PP_SLOT_1_DIGIT_8
+# undef BOOST_PP_SLOT_1_DIGIT_9
+# undef BOOST_PP_SLOT_1_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_1_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_1_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_1_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_1_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_1_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_1_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_1_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_1_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_1_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_1_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_1_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_1_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_1_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_1_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_1_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_1_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_1_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_1_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_1_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_1_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_1_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_1_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_1_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_1_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_1_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_1_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_1_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_1_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_1_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_1_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_1_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_1_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_1_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_1_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_1_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_1_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_1_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_1_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_1_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_1_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_1_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_1_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_1_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_1_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_1_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_1_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_1_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_1_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_1_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_1_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_1_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_1_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_1_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_1_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_1_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_1_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_1_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_1_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_1_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_1_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_1_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_1_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_1_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_1_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_1_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_1_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_1_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_1_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_1_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_1_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_1_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_1_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_1_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_1_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_1_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_1_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_1_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_1_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_1_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_1_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_1_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_1_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_1_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_1_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_1_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_1_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_1_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_1_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_1_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_1_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_1_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_1_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_1_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_1_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_1_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_1_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_1_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_1_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_1_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_1_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_1_DIGIT_10
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_1_DIGIT_10, BOOST_PP_SLOT_1_DIGIT_9, BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_9
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_1_DIGIT_9, BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_8
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_1_DIGIT_8, BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_7
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_1_DIGIT_7, BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_6
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_1_DIGIT_6, BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_5
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_1_DIGIT_5, BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_4
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_1_DIGIT_4, BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_3
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_1_DIGIT_3, BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# elif BOOST_PP_SLOT_1_DIGIT_2
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_1_DIGIT_2, BOOST_PP_SLOT_1_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_1() BOOST_PP_SLOT_1_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot2.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot2.hpp
new file mode 100644
index 0000000..5d5258c
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot2.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_2
+#
+# undef BOOST_PP_SLOT_2_DIGIT_1
+# undef BOOST_PP_SLOT_2_DIGIT_2
+# undef BOOST_PP_SLOT_2_DIGIT_3
+# undef BOOST_PP_SLOT_2_DIGIT_4
+# undef BOOST_PP_SLOT_2_DIGIT_5
+# undef BOOST_PP_SLOT_2_DIGIT_6
+# undef BOOST_PP_SLOT_2_DIGIT_7
+# undef BOOST_PP_SLOT_2_DIGIT_8
+# undef BOOST_PP_SLOT_2_DIGIT_9
+# undef BOOST_PP_SLOT_2_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_2_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_2_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_2_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_2_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_2_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_2_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_2_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_2_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_2_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_2_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_2_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_2_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_2_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_2_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_2_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_2_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_2_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_2_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_2_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_2_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_2_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_2_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_2_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_2_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_2_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_2_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_2_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_2_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_2_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_2_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_2_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_2_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_2_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_2_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_2_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_2_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_2_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_2_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_2_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_2_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_2_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_2_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_2_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_2_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_2_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_2_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_2_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_2_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_2_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_2_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_2_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_2_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_2_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_2_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_2_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_2_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_2_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_2_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_2_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_2_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_2_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_2_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_2_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_2_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_2_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_2_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_2_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_2_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_2_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_2_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_2_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_2_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_2_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_2_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_2_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_2_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_2_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_2_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_2_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_2_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_2_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_2_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_2_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_2_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_2_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_2_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_2_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_2_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_2_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_2_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_2_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_2_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_2_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_2_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_2_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_2_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_2_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_2_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_2_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_2_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_2_DIGIT_10
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_2_DIGIT_10, BOOST_PP_SLOT_2_DIGIT_9, BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_9
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_2_DIGIT_9, BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_8
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_2_DIGIT_8, BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_7
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_2_DIGIT_7, BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_6
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_2_DIGIT_6, BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_5
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_2_DIGIT_5, BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_4
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_2_DIGIT_4, BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_3
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_2_DIGIT_3, BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# elif BOOST_PP_SLOT_2_DIGIT_2
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_2_DIGIT_2, BOOST_PP_SLOT_2_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_2() BOOST_PP_SLOT_2_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot3.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot3.hpp
new file mode 100644
index 0000000..005cf21
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot3.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_3
+#
+# undef BOOST_PP_SLOT_3_DIGIT_1
+# undef BOOST_PP_SLOT_3_DIGIT_2
+# undef BOOST_PP_SLOT_3_DIGIT_3
+# undef BOOST_PP_SLOT_3_DIGIT_4
+# undef BOOST_PP_SLOT_3_DIGIT_5
+# undef BOOST_PP_SLOT_3_DIGIT_6
+# undef BOOST_PP_SLOT_3_DIGIT_7
+# undef BOOST_PP_SLOT_3_DIGIT_8
+# undef BOOST_PP_SLOT_3_DIGIT_9
+# undef BOOST_PP_SLOT_3_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_3_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_3_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_3_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_3_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_3_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_3_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_3_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_3_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_3_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_3_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_3_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_3_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_3_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_3_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_3_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_3_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_3_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_3_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_3_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_3_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_3_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_3_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_3_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_3_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_3_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_3_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_3_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_3_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_3_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_3_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_3_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_3_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_3_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_3_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_3_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_3_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_3_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_3_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_3_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_3_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_3_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_3_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_3_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_3_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_3_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_3_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_3_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_3_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_3_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_3_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_3_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_3_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_3_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_3_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_3_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_3_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_3_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_3_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_3_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_3_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_3_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_3_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_3_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_3_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_3_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_3_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_3_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_3_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_3_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_3_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_3_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_3_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_3_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_3_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_3_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_3_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_3_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_3_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_3_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_3_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_3_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_3_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_3_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_3_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_3_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_3_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_3_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_3_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_3_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_3_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_3_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_3_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_3_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_3_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_3_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_3_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_3_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_3_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_3_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_3_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_3_DIGIT_10
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_3_DIGIT_10, BOOST_PP_SLOT_3_DIGIT_9, BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_9
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_3_DIGIT_9, BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_8
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_3_DIGIT_8, BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_7
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_3_DIGIT_7, BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_6
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_3_DIGIT_6, BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_5
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_3_DIGIT_5, BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_4
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_3_DIGIT_4, BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_3
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_3_DIGIT_3, BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# elif BOOST_PP_SLOT_3_DIGIT_2
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_3_DIGIT_2, BOOST_PP_SLOT_3_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_3() BOOST_PP_SLOT_3_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot4.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot4.hpp
new file mode 100644
index 0000000..9aa4d8a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot4.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_4
+#
+# undef BOOST_PP_SLOT_4_DIGIT_1
+# undef BOOST_PP_SLOT_4_DIGIT_2
+# undef BOOST_PP_SLOT_4_DIGIT_3
+# undef BOOST_PP_SLOT_4_DIGIT_4
+# undef BOOST_PP_SLOT_4_DIGIT_5
+# undef BOOST_PP_SLOT_4_DIGIT_6
+# undef BOOST_PP_SLOT_4_DIGIT_7
+# undef BOOST_PP_SLOT_4_DIGIT_8
+# undef BOOST_PP_SLOT_4_DIGIT_9
+# undef BOOST_PP_SLOT_4_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_4_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_4_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_4_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_4_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_4_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_4_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_4_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_4_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_4_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_4_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_4_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_4_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_4_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_4_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_4_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_4_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_4_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_4_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_4_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_4_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_4_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_4_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_4_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_4_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_4_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_4_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_4_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_4_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_4_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_4_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_4_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_4_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_4_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_4_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_4_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_4_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_4_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_4_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_4_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_4_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_4_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_4_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_4_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_4_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_4_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_4_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_4_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_4_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_4_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_4_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_4_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_4_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_4_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_4_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_4_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_4_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_4_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_4_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_4_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_4_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_4_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_4_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_4_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_4_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_4_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_4_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_4_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_4_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_4_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_4_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_4_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_4_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_4_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_4_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_4_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_4_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_4_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_4_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_4_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_4_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_4_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_4_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_4_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_4_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_4_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_4_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_4_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_4_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_4_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_4_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_4_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_4_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_4_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_4_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_4_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_4_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_4_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_4_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_4_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_4_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_4_DIGIT_10
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_4_DIGIT_10, BOOST_PP_SLOT_4_DIGIT_9, BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_9
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_4_DIGIT_9, BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_8
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_4_DIGIT_8, BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_7
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_4_DIGIT_7, BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_6
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_4_DIGIT_6, BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_5
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_4_DIGIT_5, BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_4
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_4_DIGIT_4, BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_3
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_4_DIGIT_3, BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# elif BOOST_PP_SLOT_4_DIGIT_2
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_4_DIGIT_2, BOOST_PP_SLOT_4_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_4() BOOST_PP_SLOT_4_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot5.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot5.hpp
new file mode 100644
index 0000000..d17535d
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/detail/slot5.hpp
@@ -0,0 +1,267 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot/detail/shared.hpp>
+#
+# undef BOOST_PP_SLOT_5
+#
+# undef BOOST_PP_SLOT_5_DIGIT_1
+# undef BOOST_PP_SLOT_5_DIGIT_2
+# undef BOOST_PP_SLOT_5_DIGIT_3
+# undef BOOST_PP_SLOT_5_DIGIT_4
+# undef BOOST_PP_SLOT_5_DIGIT_5
+# undef BOOST_PP_SLOT_5_DIGIT_6
+# undef BOOST_PP_SLOT_5_DIGIT_7
+# undef BOOST_PP_SLOT_5_DIGIT_8
+# undef BOOST_PP_SLOT_5_DIGIT_9
+# undef BOOST_PP_SLOT_5_DIGIT_10
+#
+# if BOOST_PP_SLOT_TEMP_10 == 0
+# define BOOST_PP_SLOT_5_DIGIT_10 0
+# elif BOOST_PP_SLOT_TEMP_10 == 1
+# define BOOST_PP_SLOT_5_DIGIT_10 1
+# elif BOOST_PP_SLOT_TEMP_10 == 2
+# define BOOST_PP_SLOT_5_DIGIT_10 2
+# elif BOOST_PP_SLOT_TEMP_10 == 3
+# define BOOST_PP_SLOT_5_DIGIT_10 3
+# elif BOOST_PP_SLOT_TEMP_10 == 4
+# define BOOST_PP_SLOT_5_DIGIT_10 4
+# elif BOOST_PP_SLOT_TEMP_10 == 5
+# define BOOST_PP_SLOT_5_DIGIT_10 5
+# elif BOOST_PP_SLOT_TEMP_10 == 6
+# define BOOST_PP_SLOT_5_DIGIT_10 6
+# elif BOOST_PP_SLOT_TEMP_10 == 7
+# define BOOST_PP_SLOT_5_DIGIT_10 7
+# elif BOOST_PP_SLOT_TEMP_10 == 8
+# define BOOST_PP_SLOT_5_DIGIT_10 8
+# elif BOOST_PP_SLOT_TEMP_10 == 9
+# define BOOST_PP_SLOT_5_DIGIT_10 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_9 == 0
+# define BOOST_PP_SLOT_5_DIGIT_9 0
+# elif BOOST_PP_SLOT_TEMP_9 == 1
+# define BOOST_PP_SLOT_5_DIGIT_9 1
+# elif BOOST_PP_SLOT_TEMP_9 == 2
+# define BOOST_PP_SLOT_5_DIGIT_9 2
+# elif BOOST_PP_SLOT_TEMP_9 == 3
+# define BOOST_PP_SLOT_5_DIGIT_9 3
+# elif BOOST_PP_SLOT_TEMP_9 == 4
+# define BOOST_PP_SLOT_5_DIGIT_9 4
+# elif BOOST_PP_SLOT_TEMP_9 == 5
+# define BOOST_PP_SLOT_5_DIGIT_9 5
+# elif BOOST_PP_SLOT_TEMP_9 == 6
+# define BOOST_PP_SLOT_5_DIGIT_9 6
+# elif BOOST_PP_SLOT_TEMP_9 == 7
+# define BOOST_PP_SLOT_5_DIGIT_9 7
+# elif BOOST_PP_SLOT_TEMP_9 == 8
+# define BOOST_PP_SLOT_5_DIGIT_9 8
+# elif BOOST_PP_SLOT_TEMP_9 == 9
+# define BOOST_PP_SLOT_5_DIGIT_9 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_8 == 0
+# define BOOST_PP_SLOT_5_DIGIT_8 0
+# elif BOOST_PP_SLOT_TEMP_8 == 1
+# define BOOST_PP_SLOT_5_DIGIT_8 1
+# elif BOOST_PP_SLOT_TEMP_8 == 2
+# define BOOST_PP_SLOT_5_DIGIT_8 2
+# elif BOOST_PP_SLOT_TEMP_8 == 3
+# define BOOST_PP_SLOT_5_DIGIT_8 3
+# elif BOOST_PP_SLOT_TEMP_8 == 4
+# define BOOST_PP_SLOT_5_DIGIT_8 4
+# elif BOOST_PP_SLOT_TEMP_8 == 5
+# define BOOST_PP_SLOT_5_DIGIT_8 5
+# elif BOOST_PP_SLOT_TEMP_8 == 6
+# define BOOST_PP_SLOT_5_DIGIT_8 6
+# elif BOOST_PP_SLOT_TEMP_8 == 7
+# define BOOST_PP_SLOT_5_DIGIT_8 7
+# elif BOOST_PP_SLOT_TEMP_8 == 8
+# define BOOST_PP_SLOT_5_DIGIT_8 8
+# elif BOOST_PP_SLOT_TEMP_8 == 9
+# define BOOST_PP_SLOT_5_DIGIT_8 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_7 == 0
+# define BOOST_PP_SLOT_5_DIGIT_7 0
+# elif BOOST_PP_SLOT_TEMP_7 == 1
+# define BOOST_PP_SLOT_5_DIGIT_7 1
+# elif BOOST_PP_SLOT_TEMP_7 == 2
+# define BOOST_PP_SLOT_5_DIGIT_7 2
+# elif BOOST_PP_SLOT_TEMP_7 == 3
+# define BOOST_PP_SLOT_5_DIGIT_7 3
+# elif BOOST_PP_SLOT_TEMP_7 == 4
+# define BOOST_PP_SLOT_5_DIGIT_7 4
+# elif BOOST_PP_SLOT_TEMP_7 == 5
+# define BOOST_PP_SLOT_5_DIGIT_7 5
+# elif BOOST_PP_SLOT_TEMP_7 == 6
+# define BOOST_PP_SLOT_5_DIGIT_7 6
+# elif BOOST_PP_SLOT_TEMP_7 == 7
+# define BOOST_PP_SLOT_5_DIGIT_7 7
+# elif BOOST_PP_SLOT_TEMP_7 == 8
+# define BOOST_PP_SLOT_5_DIGIT_7 8
+# elif BOOST_PP_SLOT_TEMP_7 == 9
+# define BOOST_PP_SLOT_5_DIGIT_7 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_6 == 0
+# define BOOST_PP_SLOT_5_DIGIT_6 0
+# elif BOOST_PP_SLOT_TEMP_6 == 1
+# define BOOST_PP_SLOT_5_DIGIT_6 1
+# elif BOOST_PP_SLOT_TEMP_6 == 2
+# define BOOST_PP_SLOT_5_DIGIT_6 2
+# elif BOOST_PP_SLOT_TEMP_6 == 3
+# define BOOST_PP_SLOT_5_DIGIT_6 3
+# elif BOOST_PP_SLOT_TEMP_6 == 4
+# define BOOST_PP_SLOT_5_DIGIT_6 4
+# elif BOOST_PP_SLOT_TEMP_6 == 5
+# define BOOST_PP_SLOT_5_DIGIT_6 5
+# elif BOOST_PP_SLOT_TEMP_6 == 6
+# define BOOST_PP_SLOT_5_DIGIT_6 6
+# elif BOOST_PP_SLOT_TEMP_6 == 7
+# define BOOST_PP_SLOT_5_DIGIT_6 7
+# elif BOOST_PP_SLOT_TEMP_6 == 8
+# define BOOST_PP_SLOT_5_DIGIT_6 8
+# elif BOOST_PP_SLOT_TEMP_6 == 9
+# define BOOST_PP_SLOT_5_DIGIT_6 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_5 == 0
+# define BOOST_PP_SLOT_5_DIGIT_5 0
+# elif BOOST_PP_SLOT_TEMP_5 == 1
+# define BOOST_PP_SLOT_5_DIGIT_5 1
+# elif BOOST_PP_SLOT_TEMP_5 == 2
+# define BOOST_PP_SLOT_5_DIGIT_5 2
+# elif BOOST_PP_SLOT_TEMP_5 == 3
+# define BOOST_PP_SLOT_5_DIGIT_5 3
+# elif BOOST_PP_SLOT_TEMP_5 == 4
+# define BOOST_PP_SLOT_5_DIGIT_5 4
+# elif BOOST_PP_SLOT_TEMP_5 == 5
+# define BOOST_PP_SLOT_5_DIGIT_5 5
+# elif BOOST_PP_SLOT_TEMP_5 == 6
+# define BOOST_PP_SLOT_5_DIGIT_5 6
+# elif BOOST_PP_SLOT_TEMP_5 == 7
+# define BOOST_PP_SLOT_5_DIGIT_5 7
+# elif BOOST_PP_SLOT_TEMP_5 == 8
+# define BOOST_PP_SLOT_5_DIGIT_5 8
+# elif BOOST_PP_SLOT_TEMP_5 == 9
+# define BOOST_PP_SLOT_5_DIGIT_5 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_4 == 0
+# define BOOST_PP_SLOT_5_DIGIT_4 0
+# elif BOOST_PP_SLOT_TEMP_4 == 1
+# define BOOST_PP_SLOT_5_DIGIT_4 1
+# elif BOOST_PP_SLOT_TEMP_4 == 2
+# define BOOST_PP_SLOT_5_DIGIT_4 2
+# elif BOOST_PP_SLOT_TEMP_4 == 3
+# define BOOST_PP_SLOT_5_DIGIT_4 3
+# elif BOOST_PP_SLOT_TEMP_4 == 4
+# define BOOST_PP_SLOT_5_DIGIT_4 4
+# elif BOOST_PP_SLOT_TEMP_4 == 5
+# define BOOST_PP_SLOT_5_DIGIT_4 5
+# elif BOOST_PP_SLOT_TEMP_4 == 6
+# define BOOST_PP_SLOT_5_DIGIT_4 6
+# elif BOOST_PP_SLOT_TEMP_4 == 7
+# define BOOST_PP_SLOT_5_DIGIT_4 7
+# elif BOOST_PP_SLOT_TEMP_4 == 8
+# define BOOST_PP_SLOT_5_DIGIT_4 8
+# elif BOOST_PP_SLOT_TEMP_4 == 9
+# define BOOST_PP_SLOT_5_DIGIT_4 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_3 == 0
+# define BOOST_PP_SLOT_5_DIGIT_3 0
+# elif BOOST_PP_SLOT_TEMP_3 == 1
+# define BOOST_PP_SLOT_5_DIGIT_3 1
+# elif BOOST_PP_SLOT_TEMP_3 == 2
+# define BOOST_PP_SLOT_5_DIGIT_3 2
+# elif BOOST_PP_SLOT_TEMP_3 == 3
+# define BOOST_PP_SLOT_5_DIGIT_3 3
+# elif BOOST_PP_SLOT_TEMP_3 == 4
+# define BOOST_PP_SLOT_5_DIGIT_3 4
+# elif BOOST_PP_SLOT_TEMP_3 == 5
+# define BOOST_PP_SLOT_5_DIGIT_3 5
+# elif BOOST_PP_SLOT_TEMP_3 == 6
+# define BOOST_PP_SLOT_5_DIGIT_3 6
+# elif BOOST_PP_SLOT_TEMP_3 == 7
+# define BOOST_PP_SLOT_5_DIGIT_3 7
+# elif BOOST_PP_SLOT_TEMP_3 == 8
+# define BOOST_PP_SLOT_5_DIGIT_3 8
+# elif BOOST_PP_SLOT_TEMP_3 == 9
+# define BOOST_PP_SLOT_5_DIGIT_3 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_2 == 0
+# define BOOST_PP_SLOT_5_DIGIT_2 0
+# elif BOOST_PP_SLOT_TEMP_2 == 1
+# define BOOST_PP_SLOT_5_DIGIT_2 1
+# elif BOOST_PP_SLOT_TEMP_2 == 2
+# define BOOST_PP_SLOT_5_DIGIT_2 2
+# elif BOOST_PP_SLOT_TEMP_2 == 3
+# define BOOST_PP_SLOT_5_DIGIT_2 3
+# elif BOOST_PP_SLOT_TEMP_2 == 4
+# define BOOST_PP_SLOT_5_DIGIT_2 4
+# elif BOOST_PP_SLOT_TEMP_2 == 5
+# define BOOST_PP_SLOT_5_DIGIT_2 5
+# elif BOOST_PP_SLOT_TEMP_2 == 6
+# define BOOST_PP_SLOT_5_DIGIT_2 6
+# elif BOOST_PP_SLOT_TEMP_2 == 7
+# define BOOST_PP_SLOT_5_DIGIT_2 7
+# elif BOOST_PP_SLOT_TEMP_2 == 8
+# define BOOST_PP_SLOT_5_DIGIT_2 8
+# elif BOOST_PP_SLOT_TEMP_2 == 9
+# define BOOST_PP_SLOT_5_DIGIT_2 9
+# endif
+#
+# if BOOST_PP_SLOT_TEMP_1 == 0
+# define BOOST_PP_SLOT_5_DIGIT_1 0
+# elif BOOST_PP_SLOT_TEMP_1 == 1
+# define BOOST_PP_SLOT_5_DIGIT_1 1
+# elif BOOST_PP_SLOT_TEMP_1 == 2
+# define BOOST_PP_SLOT_5_DIGIT_1 2
+# elif BOOST_PP_SLOT_TEMP_1 == 3
+# define BOOST_PP_SLOT_5_DIGIT_1 3
+# elif BOOST_PP_SLOT_TEMP_1 == 4
+# define BOOST_PP_SLOT_5_DIGIT_1 4
+# elif BOOST_PP_SLOT_TEMP_1 == 5
+# define BOOST_PP_SLOT_5_DIGIT_1 5
+# elif BOOST_PP_SLOT_TEMP_1 == 6
+# define BOOST_PP_SLOT_5_DIGIT_1 6
+# elif BOOST_PP_SLOT_TEMP_1 == 7
+# define BOOST_PP_SLOT_5_DIGIT_1 7
+# elif BOOST_PP_SLOT_TEMP_1 == 8
+# define BOOST_PP_SLOT_5_DIGIT_1 8
+# elif BOOST_PP_SLOT_TEMP_1 == 9
+# define BOOST_PP_SLOT_5_DIGIT_1 9
+# endif
+#
+# if BOOST_PP_SLOT_5_DIGIT_10
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_10(BOOST_PP_SLOT_5_DIGIT_10, BOOST_PP_SLOT_5_DIGIT_9, BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_9
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_9(BOOST_PP_SLOT_5_DIGIT_9, BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_8
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_8(BOOST_PP_SLOT_5_DIGIT_8, BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_7
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_7(BOOST_PP_SLOT_5_DIGIT_7, BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_6
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_6(BOOST_PP_SLOT_5_DIGIT_6, BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_5
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_5(BOOST_PP_SLOT_5_DIGIT_5, BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_4
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_4(BOOST_PP_SLOT_5_DIGIT_4, BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_3
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_3(BOOST_PP_SLOT_5_DIGIT_3, BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# elif BOOST_PP_SLOT_5_DIGIT_2
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_CC_2(BOOST_PP_SLOT_5_DIGIT_2, BOOST_PP_SLOT_5_DIGIT_1)
+# else
+# define BOOST_PP_SLOT_5() BOOST_PP_SLOT_5_DIGIT_1
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/slot.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/slot.hpp
new file mode 100644
index 0000000..147b097
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/slot/slot.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_SLOT_SLOT_HPP
+# define BOOST_PREPROCESSOR_SLOT_SLOT_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/slot/detail/def.hpp>
+#
+# /* BOOST_PP_ASSIGN_SLOT */
+#
+# define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i)
+#
+# define BOOST_PP_ASSIGN_SLOT_1 <boost/preprocessor/slot/detail/slot1.hpp>
+# define BOOST_PP_ASSIGN_SLOT_2 <boost/preprocessor/slot/detail/slot2.hpp>
+# define BOOST_PP_ASSIGN_SLOT_3 <boost/preprocessor/slot/detail/slot3.hpp>
+# define BOOST_PP_ASSIGN_SLOT_4 <boost/preprocessor/slot/detail/slot4.hpp>
+# define BOOST_PP_ASSIGN_SLOT_5 <boost/preprocessor/slot/detail/slot5.hpp>
+#
+# /* BOOST_PP_SLOT */
+#
+# define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)()
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/stringize.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/stringize.hpp
new file mode 100644
index 0000000..64dd5fd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/stringize.hpp
@@ -0,0 +1,33 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_STRINGIZE_HPP
+# define BOOST_PREPROCESSOR_STRINGIZE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_STRINGIZE */
+#
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_A((text))
+# define BOOST_PP_STRINGIZE_A(arg) BOOST_PP_STRINGIZE_I arg
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_OO((text))
+# define BOOST_PP_STRINGIZE_OO(par) BOOST_PP_STRINGIZE_I ## par
+# else
+# define BOOST_PP_STRINGIZE(text) BOOST_PP_STRINGIZE_I(text)
+# endif
+#
+# define BOOST_PP_STRINGIZE_I(text) #text
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple.hpp
new file mode 100644
index 0000000..76fad36
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple.hpp
@@ -0,0 +1,35 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+# /* Revised by Edward Diener (2011,2013) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_HPP
+#
+# include <boost/preprocessor/tuple/eat.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/enum.hpp>
+# include <boost/preprocessor/tuple/insert.hpp>
+# include <boost/preprocessor/tuple/pop_back.hpp>
+# include <boost/preprocessor/tuple/pop_front.hpp>
+# include <boost/preprocessor/tuple/push_back.hpp>
+# include <boost/preprocessor/tuple/push_front.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/tuple/remove.hpp>
+# include <boost/preprocessor/tuple/replace.hpp>
+# include <boost/preprocessor/tuple/reverse.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+# include <boost/preprocessor/tuple/to_seq.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/detail/is_single_return.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/detail/is_single_return.hpp
new file mode 100644
index 0000000..02a4fb2
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/detail/is_single_return.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP
+# define BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_TUPLE_IS_SINGLE_RETURN */
+#
+# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/facilities/is_1.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# define BOOST_PP_TUPLE_IS_SINGLE_RETURN(sr,nsr,tuple) \
+ BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_TUPLE_SIZE(tuple)),sr,nsr) \
+ /**/
+# endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */
+#
+# endif /* BOOST_PREPROCESSOR_TUPLE_DETAIL_IS_SINGLE_RETURN_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/eat.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/eat.hpp
new file mode 100644
index 0000000..7e8a100
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/eat.hpp
@@ -0,0 +1,115 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011,2015) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_EAT_HPP
+# define BOOST_PREPROCESSOR_TUPLE_EAT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_EAT */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_EAT(...)
+# else
+# define BOOST_PP_EAT(x)
+# endif
+#
+# /* BOOST_PP_TUPLE_EAT */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_EAT
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_I(size)
+# else
+# define BOOST_PP_TUPLE_EAT(size) BOOST_PP_TUPLE_EAT_OO((size))
+# define BOOST_PP_TUPLE_EAT_OO(par) BOOST_PP_TUPLE_EAT_I ## par
+# endif
+# define BOOST_PP_TUPLE_EAT_I(size) BOOST_PP_TUPLE_EAT_ ## size
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_EAT_N(size) BOOST_PP_TUPLE_EAT_N_I(size)
+# else
+# define BOOST_PP_TUPLE_EAT_N(size) BOOST_PP_TUPLE_EAT_N_OO((size))
+# define BOOST_PP_TUPLE_EAT_N_OO(par) BOOST_PP_TUPLE_EAT_N_I ## par
+# endif
+# define BOOST_PP_TUPLE_EAT_N_I(size) BOOST_PP_TUPLE_EAT_ ## size
+#
+# define BOOST_PP_TUPLE_EAT_1(e0)
+# define BOOST_PP_TUPLE_EAT_2(e0, e1)
+# define BOOST_PP_TUPLE_EAT_3(e0, e1, e2)
+# define BOOST_PP_TUPLE_EAT_4(e0, e1, e2, e3)
+# define BOOST_PP_TUPLE_EAT_5(e0, e1, e2, e3, e4)
+# define BOOST_PP_TUPLE_EAT_6(e0, e1, e2, e3, e4, e5)
+# define BOOST_PP_TUPLE_EAT_7(e0, e1, e2, e3, e4, e5, e6)
+# define BOOST_PP_TUPLE_EAT_8(e0, e1, e2, e3, e4, e5, e6, e7)
+# define BOOST_PP_TUPLE_EAT_9(e0, e1, e2, e3, e4, e5, e6, e7, e8)
+# define BOOST_PP_TUPLE_EAT_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9)
+# define BOOST_PP_TUPLE_EAT_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10)
+# define BOOST_PP_TUPLE_EAT_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11)
+# define BOOST_PP_TUPLE_EAT_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12)
+# define BOOST_PP_TUPLE_EAT_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13)
+# define BOOST_PP_TUPLE_EAT_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14)
+# define BOOST_PP_TUPLE_EAT_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15)
+# define BOOST_PP_TUPLE_EAT_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16)
+# define BOOST_PP_TUPLE_EAT_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17)
+# define BOOST_PP_TUPLE_EAT_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18)
+# define BOOST_PP_TUPLE_EAT_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19)
+# define BOOST_PP_TUPLE_EAT_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20)
+# define BOOST_PP_TUPLE_EAT_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21)
+# define BOOST_PP_TUPLE_EAT_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22)
+# define BOOST_PP_TUPLE_EAT_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23)
+# define BOOST_PP_TUPLE_EAT_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24)
+# define BOOST_PP_TUPLE_EAT_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25)
+# define BOOST_PP_TUPLE_EAT_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26)
+# define BOOST_PP_TUPLE_EAT_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27)
+# define BOOST_PP_TUPLE_EAT_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28)
+# define BOOST_PP_TUPLE_EAT_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29)
+# define BOOST_PP_TUPLE_EAT_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30)
+# define BOOST_PP_TUPLE_EAT_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31)
+# define BOOST_PP_TUPLE_EAT_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32)
+# define BOOST_PP_TUPLE_EAT_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33)
+# define BOOST_PP_TUPLE_EAT_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34)
+# define BOOST_PP_TUPLE_EAT_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35)
+# define BOOST_PP_TUPLE_EAT_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36)
+# define BOOST_PP_TUPLE_EAT_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37)
+# define BOOST_PP_TUPLE_EAT_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38)
+# define BOOST_PP_TUPLE_EAT_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39)
+# define BOOST_PP_TUPLE_EAT_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40)
+# define BOOST_PP_TUPLE_EAT_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41)
+# define BOOST_PP_TUPLE_EAT_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42)
+# define BOOST_PP_TUPLE_EAT_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43)
+# define BOOST_PP_TUPLE_EAT_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44)
+# define BOOST_PP_TUPLE_EAT_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45)
+# define BOOST_PP_TUPLE_EAT_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46)
+# define BOOST_PP_TUPLE_EAT_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47)
+# define BOOST_PP_TUPLE_EAT_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48)
+# define BOOST_PP_TUPLE_EAT_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49)
+# define BOOST_PP_TUPLE_EAT_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50)
+# define BOOST_PP_TUPLE_EAT_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51)
+# define BOOST_PP_TUPLE_EAT_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52)
+# define BOOST_PP_TUPLE_EAT_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53)
+# define BOOST_PP_TUPLE_EAT_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54)
+# define BOOST_PP_TUPLE_EAT_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55)
+# define BOOST_PP_TUPLE_EAT_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56)
+# define BOOST_PP_TUPLE_EAT_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57)
+# define BOOST_PP_TUPLE_EAT_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58)
+# define BOOST_PP_TUPLE_EAT_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59)
+# define BOOST_PP_TUPLE_EAT_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60)
+# define BOOST_PP_TUPLE_EAT_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61)
+# define BOOST_PP_TUPLE_EAT_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62)
+# define BOOST_PP_TUPLE_EAT_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/elem.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/elem.hpp
new file mode 100644
index 0000000..88044d3
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/elem.hpp
@@ -0,0 +1,201 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011,2014) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/expand.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/rem.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# include <boost/preprocessor/tuple/detail/is_single_return.hpp>
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args)
+# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
+/*
+ Use BOOST_PP_REM_CAT if it is a single element tuple ( which might be empty )
+ else use BOOST_PP_REM. This fixes a VC++ problem with an empty tuple and BOOST_PP_TUPLE_ELEM
+ functionality. See tuple_elem_bug_test.cxx.
+*/
+# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) \
+ BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple)) \
+ /**/
+# else
+# define BOOST_PP_TUPLE_ELEM(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_ELEM_O_, __VA_ARGS__)(__VA_ARGS__)
+# define BOOST_PP_TUPLE_ELEM_O_2(n, tuple) BOOST_PP_VARIADIC_ELEM(n, BOOST_PP_REM tuple)
+# endif
+# define BOOST_PP_TUPLE_ELEM_O_3(size, n, tuple) BOOST_PP_TUPLE_ELEM_O_2(n, tuple)
+# else
+# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n), BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size), tuple))
+# define BOOST_PP_TUPLE_ELEM_I(m, args) BOOST_PP_TUPLE_ELEM_II(m, args)
+# define BOOST_PP_TUPLE_ELEM_II(m, args) BOOST_PP_CAT(m ## args,)
+# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I_OO((size, n, tuple))
+# define BOOST_PP_TUPLE_ELEM_I_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
+# define BOOST_PP_TUPLE_ELEM_I(size, n, tuple) BOOST_PP_TUPLE_ELEM_II((n, BOOST_PP_TUPLE_ELEM_E_ ## size ## tuple))
+# define BOOST_PP_TUPLE_ELEM_II(par) BOOST_PP_TUPLE_ELEM_III_OO(par)
+# define BOOST_PP_TUPLE_ELEM_III_OO(par) BOOST_PP_TUPLE_ELEM_III ## par
+# define BOOST_PP_TUPLE_ELEM_III(n, etuple) BOOST_PP_TUPLE_ELEM_ ## n ## etuple
+# else
+# define BOOST_PP_TUPLE_ELEM(size, n, tuple) BOOST_PP_TUPLE_ELEM_I(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_, n) BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM_E_, size) tuple)
+# define BOOST_PP_TUPLE_ELEM_I(x) x
+# endif
+# define BOOST_PP_TUPLE_ELEM_E_1(e0) (e0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_2(e0, e1) (e0, e1, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_3(e0, e1, e2) (e0, e1, e2, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_4(e0, e1, e2, e3) (e0, e1, e2, e3, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_5(e0, e1, e2, e3, e4) (e0, e1, e2, e3, e4, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_6(e0, e1, e2, e3, e4, e5) (e0, e1, e2, e3, e4, e5, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_7(e0, e1, e2, e3, e4, e5, e6) (e0, e1, e2, e3, e4, e5, e6, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, e1, e2, e3, e4, e5, e6, e7, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, e1, e2, e3, e4, e5, e6, e7, e8, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ?, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ?, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ?, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ?, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ?, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ?, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ?, ?)
+# define BOOST_PP_TUPLE_ELEM_E_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ?)
+# define BOOST_PP_TUPLE_ELEM_E_64
+# define BOOST_PP_TUPLE_ELEM_0(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0
+# define BOOST_PP_TUPLE_ELEM_1(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e1
+# define BOOST_PP_TUPLE_ELEM_2(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e2
+# define BOOST_PP_TUPLE_ELEM_3(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e3
+# define BOOST_PP_TUPLE_ELEM_4(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e4
+# define BOOST_PP_TUPLE_ELEM_5(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e5
+# define BOOST_PP_TUPLE_ELEM_6(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e6
+# define BOOST_PP_TUPLE_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e7
+# define BOOST_PP_TUPLE_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e8
+# define BOOST_PP_TUPLE_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e9
+# define BOOST_PP_TUPLE_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e10
+# define BOOST_PP_TUPLE_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e11
+# define BOOST_PP_TUPLE_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e12
+# define BOOST_PP_TUPLE_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e13
+# define BOOST_PP_TUPLE_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e14
+# define BOOST_PP_TUPLE_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e15
+# define BOOST_PP_TUPLE_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e16
+# define BOOST_PP_TUPLE_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e17
+# define BOOST_PP_TUPLE_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e18
+# define BOOST_PP_TUPLE_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e19
+# define BOOST_PP_TUPLE_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e20
+# define BOOST_PP_TUPLE_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e21
+# define BOOST_PP_TUPLE_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e22
+# define BOOST_PP_TUPLE_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e23
+# define BOOST_PP_TUPLE_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e24
+# define BOOST_PP_TUPLE_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e25
+# define BOOST_PP_TUPLE_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e26
+# define BOOST_PP_TUPLE_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e27
+# define BOOST_PP_TUPLE_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e28
+# define BOOST_PP_TUPLE_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e29
+# define BOOST_PP_TUPLE_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e30
+# define BOOST_PP_TUPLE_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e31
+# define BOOST_PP_TUPLE_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e32
+# define BOOST_PP_TUPLE_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e33
+# define BOOST_PP_TUPLE_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e34
+# define BOOST_PP_TUPLE_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e35
+# define BOOST_PP_TUPLE_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e36
+# define BOOST_PP_TUPLE_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e37
+# define BOOST_PP_TUPLE_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e38
+# define BOOST_PP_TUPLE_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e39
+# define BOOST_PP_TUPLE_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e40
+# define BOOST_PP_TUPLE_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e41
+# define BOOST_PP_TUPLE_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e42
+# define BOOST_PP_TUPLE_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e43
+# define BOOST_PP_TUPLE_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e44
+# define BOOST_PP_TUPLE_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e45
+# define BOOST_PP_TUPLE_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e46
+# define BOOST_PP_TUPLE_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e47
+# define BOOST_PP_TUPLE_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e48
+# define BOOST_PP_TUPLE_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e49
+# define BOOST_PP_TUPLE_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e50
+# define BOOST_PP_TUPLE_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e51
+# define BOOST_PP_TUPLE_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e52
+# define BOOST_PP_TUPLE_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e53
+# define BOOST_PP_TUPLE_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e54
+# define BOOST_PP_TUPLE_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e55
+# define BOOST_PP_TUPLE_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e56
+# define BOOST_PP_TUPLE_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e57
+# define BOOST_PP_TUPLE_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e58
+# define BOOST_PP_TUPLE_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e59
+# define BOOST_PP_TUPLE_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e60
+# define BOOST_PP_TUPLE_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e61
+# define BOOST_PP_TUPLE_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e62
+# define BOOST_PP_TUPLE_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e63
+# endif
+#
+# /* directly used elsewhere in Boost... */
+#
+# define BOOST_PP_TUPLE_ELEM_1_0(a) a
+#
+# define BOOST_PP_TUPLE_ELEM_2_0(a, b) a
+# define BOOST_PP_TUPLE_ELEM_2_1(a, b) b
+#
+# define BOOST_PP_TUPLE_ELEM_3_0(a, b, c) a
+# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
+# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/enum.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/enum.hpp
new file mode 100644
index 0000000..4915831
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/enum.hpp
@@ -0,0 +1,22 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_ENUM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_ENUM_HPP
+#
+# include <boost/preprocessor/tuple/rem.hpp>
+#
+# /* BOOST_PP_TUPLE_ENUM */
+#
+# define BOOST_PP_TUPLE_ENUM BOOST_PP_TUPLE_REM_CTOR
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/insert.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/insert.hpp
new file mode 100644
index 0000000..ce4544f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/insert.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_INSERT_HPP
+# define BOOST_PREPROCESSOR_TUPLE_INSERT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/insert.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+# /* BOOST_PP_TUPLE_INSERT */
+#
+# define BOOST_PP_TUPLE_INSERT(tuple, i, elem) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# /* BOOST_PP_TUPLE_INSERT_D */
+#
+# define BOOST_PP_TUPLE_INSERT_D(d, tuple, i, elem) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_INSERT_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_INSERT_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/pop_back.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/pop_back.hpp
new file mode 100644
index 0000000..3ac414b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/pop_back.hpp
@@ -0,0 +1,64 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_POP_BACK_HPP
+# define BOOST_PREPROCESSOR_TUPLE_POP_BACK_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/pop_back.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/comparison/greater.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+# /* BOOST_PP_TUPLE_POP_BACK */
+#
+# define BOOST_PP_TUPLE_POP_BACK(tuple) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \
+ BOOST_PP_TUPLE_POP_BACK_EXEC, \
+ BOOST_PP_TUPLE_POP_BACK_RETURN \
+ ) \
+ (tuple) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_BACK_EXEC(tuple) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_BACK_RETURN(tuple) tuple
+#
+# /* BOOST_PP_TUPLE_POP_BACK_Z */
+#
+# define BOOST_PP_TUPLE_POP_BACK_Z(z, tuple) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \
+ BOOST_PP_TUPLE_POP_BACK_Z_EXEC, \
+ BOOST_PP_TUPLE_POP_BACK_Z_RETURN \
+ ) \
+ (z, tuple) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_BACK_Z_EXEC(z, tuple) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_BACK_Z(z, BOOST_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_BACK_Z_RETURN(z, tuple) tuple
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_POP_BACK_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/pop_front.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/pop_front.hpp
new file mode 100644
index 0000000..fafaa77
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/pop_front.hpp
@@ -0,0 +1,65 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_POP_FRONT_HPP
+# define BOOST_PREPROCESSOR_TUPLE_POP_FRONT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/pop_front.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/comparison/greater.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+#
+# /* BOOST_PP_TUPLE_POP_FRONT */
+#
+# define BOOST_PP_TUPLE_POP_FRONT(tuple) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \
+ BOOST_PP_TUPLE_POP_FRONT_EXEC, \
+ BOOST_PP_TUPLE_POP_FRONT_RETURN \
+ ) \
+ (tuple) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_FRONT_EXEC(tuple) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_FRONT_RETURN(tuple) tuple
+#
+# /* BOOST_PP_TUPLE_POP_FRONT_Z */
+#
+# define BOOST_PP_TUPLE_POP_FRONT_Z(z, tuple) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \
+ BOOST_PP_TUPLE_POP_FRONT_Z_EXEC, \
+ BOOST_PP_TUPLE_POP_FRONT_Z_RETURN \
+ ) \
+ (z, tuple) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_FRONT_Z_EXEC(z, tuple) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_POP_FRONT_Z(z, BOOST_PP_TUPLE_TO_ARRAY(tuple))) \
+/**/
+#
+# define BOOST_PP_TUPLE_POP_FRONT_Z_RETURN(z, tuple) tuple
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_POP_FRONT_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/push_back.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/push_back.hpp
new file mode 100644
index 0000000..2ae8f63
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/push_back.hpp
@@ -0,0 +1,31 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_PUSH_BACK_HPP
+# define BOOST_PREPROCESSOR_TUPLE_PUSH_BACK_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/push_back.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+# /* BOOST_PP_TUPLE_PUSH_BACK */
+#
+# define BOOST_PP_TUPLE_PUSH_BACK(tuple, elem) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_BACK(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \
+/**/
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_PUSH_BACK_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/push_front.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/push_front.hpp
new file mode 100644
index 0000000..81fea85
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/push_front.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP
+# define BOOST_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/push_front.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+#
+# /* BOOST_PP_TUPLE_PUSH_FRONT */
+#
+# define BOOST_PP_TUPLE_PUSH_FRONT(tuple, elem) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_PUSH_FRONT(BOOST_PP_TUPLE_TO_ARRAY(tuple), elem)) \
+/**/
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_PUSH_FRONT_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/rem.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/rem.hpp
new file mode 100644
index 0000000..c934447
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/rem.hpp
@@ -0,0 +1,149 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011,2013. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_REM_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/expand.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/detail/is_single_return.hpp>
+#
+# /* BOOST_PP_REM */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+ /* To be used internally when __VA_ARGS__ could be empty ( or is a single element ) */
+# define BOOST_PP_REM_CAT(...) BOOST_PP_CAT(__VA_ARGS__,)
+# endif
+# define BOOST_PP_REM(...) __VA_ARGS__
+# else
+# define BOOST_PP_REM(x) x
+# endif
+#
+# /* BOOST_PP_TUPLE_REM */
+#
+/*
+ VC++8.0 cannot handle the variadic version of BOOST_PP_TUPLE_REM(size)
+*/
+# if BOOST_PP_VARIADICS && !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400)
+# if BOOST_PP_VARIADICS_MSVC
+ /* To be used internally when the size could be 0 ( or 1 ) */
+# define BOOST_PP_TUPLE_REM_CAT(size) BOOST_PP_REM_CAT
+# endif
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_REM
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_I(size)
+# else
+# define BOOST_PP_TUPLE_REM(size) BOOST_PP_TUPLE_REM_OO((size))
+# define BOOST_PP_TUPLE_REM_OO(par) BOOST_PP_TUPLE_REM_I ## par
+# endif
+# define BOOST_PP_TUPLE_REM_I(size) BOOST_PP_TUPLE_REM_ ## size
+# endif
+# define BOOST_PP_TUPLE_REM_0()
+# define BOOST_PP_TUPLE_REM_1(e0) e0
+# define BOOST_PP_TUPLE_REM_2(e0, e1) e0, e1
+# define BOOST_PP_TUPLE_REM_3(e0, e1, e2) e0, e1, e2
+# define BOOST_PP_TUPLE_REM_4(e0, e1, e2, e3) e0, e1, e2, e3
+# define BOOST_PP_TUPLE_REM_5(e0, e1, e2, e3, e4) e0, e1, e2, e3, e4
+# define BOOST_PP_TUPLE_REM_6(e0, e1, e2, e3, e4, e5) e0, e1, e2, e3, e4, e5
+# define BOOST_PP_TUPLE_REM_7(e0, e1, e2, e3, e4, e5, e6) e0, e1, e2, e3, e4, e5, e6
+# define BOOST_PP_TUPLE_REM_8(e0, e1, e2, e3, e4, e5, e6, e7) e0, e1, e2, e3, e4, e5, e6, e7
+# define BOOST_PP_TUPLE_REM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) e0, e1, e2, e3, e4, e5, e6, e7, e8
+# define BOOST_PP_TUPLE_REM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9
+# define BOOST_PP_TUPLE_REM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10
+# define BOOST_PP_TUPLE_REM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11
+# define BOOST_PP_TUPLE_REM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12
+# define BOOST_PP_TUPLE_REM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13
+# define BOOST_PP_TUPLE_REM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14
+# define BOOST_PP_TUPLE_REM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15
+# define BOOST_PP_TUPLE_REM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16
+# define BOOST_PP_TUPLE_REM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17
+# define BOOST_PP_TUPLE_REM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18
+# define BOOST_PP_TUPLE_REM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19
+# define BOOST_PP_TUPLE_REM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20
+# define BOOST_PP_TUPLE_REM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21
+# define BOOST_PP_TUPLE_REM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22
+# define BOOST_PP_TUPLE_REM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23
+# define BOOST_PP_TUPLE_REM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24
+# define BOOST_PP_TUPLE_REM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25
+# define BOOST_PP_TUPLE_REM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26
+# define BOOST_PP_TUPLE_REM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27
+# define BOOST_PP_TUPLE_REM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28
+# define BOOST_PP_TUPLE_REM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29
+# define BOOST_PP_TUPLE_REM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30
+# define BOOST_PP_TUPLE_REM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31
+# define BOOST_PP_TUPLE_REM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32
+# define BOOST_PP_TUPLE_REM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33
+# define BOOST_PP_TUPLE_REM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34
+# define BOOST_PP_TUPLE_REM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35
+# define BOOST_PP_TUPLE_REM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36
+# define BOOST_PP_TUPLE_REM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37
+# define BOOST_PP_TUPLE_REM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38
+# define BOOST_PP_TUPLE_REM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39
+# define BOOST_PP_TUPLE_REM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40
+# define BOOST_PP_TUPLE_REM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41
+# define BOOST_PP_TUPLE_REM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42
+# define BOOST_PP_TUPLE_REM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43
+# define BOOST_PP_TUPLE_REM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44
+# define BOOST_PP_TUPLE_REM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45
+# define BOOST_PP_TUPLE_REM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46
+# define BOOST_PP_TUPLE_REM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47
+# define BOOST_PP_TUPLE_REM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48
+# define BOOST_PP_TUPLE_REM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49
+# define BOOST_PP_TUPLE_REM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50
+# define BOOST_PP_TUPLE_REM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51
+# define BOOST_PP_TUPLE_REM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52
+# define BOOST_PP_TUPLE_REM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53
+# define BOOST_PP_TUPLE_REM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54
+# define BOOST_PP_TUPLE_REM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55
+# define BOOST_PP_TUPLE_REM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56
+# define BOOST_PP_TUPLE_REM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57
+# define BOOST_PP_TUPLE_REM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58
+# define BOOST_PP_TUPLE_REM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59
+# define BOOST_PP_TUPLE_REM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60
+# define BOOST_PP_TUPLE_REM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61
+# define BOOST_PP_TUPLE_REM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62
+# define BOOST_PP_TUPLE_REM_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63
+#
+# /* BOOST_PP_TUPLE_REM_CTOR */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_REM_CTOR_I(m, args) BOOST_PP_TUPLE_REM_CTOR_II(m, args)
+# define BOOST_PP_TUPLE_REM_CTOR_II(m, args) BOOST_PP_CAT(m ## args,)
+# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_EXPAND(BOOST_PP_TUPLE_IS_SINGLE_RETURN(BOOST_PP_REM_CAT,BOOST_PP_REM,tuple) tuple)
+# else
+# define BOOST_PP_TUPLE_REM_CTOR(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REM_CTOR_O_, __VA_ARGS__)(__VA_ARGS__)
+# define BOOST_PP_TUPLE_REM_CTOR_O_1(tuple) BOOST_PP_REM tuple
+# endif
+# define BOOST_PP_TUPLE_REM_CTOR_O_2(size, tuple) BOOST_PP_TUPLE_REM_CTOR_O_1(tuple)
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
+# else
+# define BOOST_PP_TUPLE_REM_CTOR(size, tuple) BOOST_PP_TUPLE_REM_CTOR_D(size, tuple)
+# define BOOST_PP_TUPLE_REM_CTOR_D(size, tuple) BOOST_PP_TUPLE_REM_CTOR_I(BOOST_PP_TUPLE_REM(size), tuple)
+# endif
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) ext tuple
+# else
+# define BOOST_PP_TUPLE_REM_CTOR_I(ext, tuple) BOOST_PP_TUPLE_REM_CTOR_OO((ext, tuple))
+# define BOOST_PP_TUPLE_REM_CTOR_OO(par) BOOST_PP_TUPLE_REM_CTOR_II ## par
+# define BOOST_PP_TUPLE_REM_CTOR_II(ext, tuple) ext ## tuple
+# endif
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/remove.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/remove.hpp
new file mode 100644
index 0000000..25fa376
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/remove.hpp
@@ -0,0 +1,64 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_REMOVE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REMOVE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/remove.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/comparison/greater.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+# /* BOOST_PP_TUPLE_REMOVE */
+#
+# define BOOST_PP_TUPLE_REMOVE(tuple, i) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_GREATER(BOOST_PP_TUPLE_SIZE(tuple),1), \
+ BOOST_PP_TUPLE_REMOVE_EXEC, \
+ BOOST_PP_TUPLE_REMOVE_RETURN \
+ ) \
+ (tuple, i) \
+/**/
+#
+# define BOOST_PP_TUPLE_REMOVE_EXEC(tuple, i) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REMOVE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i)) \
+/**/
+#
+# define BOOST_PP_TUPLE_REMOVE_RETURN(tuple, i) tuple
+#
+# /* BOOST_PP_TUPLE_REMOVE_D */
+#
+# define BOOST_PP_TUPLE_REMOVE_D(d, tuple, i) \
+ BOOST_PP_IIF \
+ ( \
+ BOOST_PP_GREATER_D(d, BOOST_PP_TUPLE_SIZE(tuple), 1), \
+ BOOST_PP_TUPLE_REMOVE_D_EXEC, \
+ BOOST_PP_TUPLE_REMOVE_D_RETURN \
+ ) \
+ (d, tuple, i) \
+/**/
+#
+# define BOOST_PP_TUPLE_REMOVE_D_EXEC(d, tuple, i) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REMOVE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i)) \
+/**/
+#
+# define BOOST_PP_TUPLE_REMOVE_D_RETURN(d, tuple, i) tuple
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_REMOVE_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/replace.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/replace.hpp
new file mode 100644
index 0000000..320ef9e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/replace.hpp
@@ -0,0 +1,37 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2013.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_REPLACE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REPLACE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# if BOOST_PP_VARIADICS
+#
+# include <boost/preprocessor/array/replace.hpp>
+# include <boost/preprocessor/array/to_tuple.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+#
+# /* BOOST_PP_TUPLE_REPLACE */
+#
+# define BOOST_PP_TUPLE_REPLACE(tuple, i, elem) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE(BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# /* BOOST_PP_TUPLE_REPLACE_D */
+#
+# define BOOST_PP_TUPLE_REPLACE_D(d, tuple, i, elem) \
+ BOOST_PP_ARRAY_TO_TUPLE(BOOST_PP_ARRAY_REPLACE_D(d, BOOST_PP_TUPLE_TO_ARRAY(tuple), i, elem)) \
+/**/
+#
+# endif // BOOST_PP_VARIADICS
+#
+# endif // BOOST_PREPROCESSOR_TUPLE_REPLACE_HPP
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/reverse.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/reverse.hpp
new file mode 100644
index 0000000..489c442
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/reverse.hpp
@@ -0,0 +1,117 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# /* BOOST_PP_TUPLE_REVERSE */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_REVERSE(...) BOOST_PP_TUPLE_REVERSE_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REVERSE_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_REVERSE_I(m, args) BOOST_PP_TUPLE_REVERSE_II(m, args)
+# define BOOST_PP_TUPLE_REVERSE_II(m, args) BOOST_PP_CAT(m ## args,)
+# define BOOST_PP_TUPLE_REVERSE_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_REVERSE_, BOOST_PP_TUPLE_SIZE(tuple)) tuple
+# else
+# define BOOST_PP_TUPLE_REVERSE(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_REVERSE_O_, __VA_ARGS__)(__VA_ARGS__)
+# define BOOST_PP_TUPLE_REVERSE_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_REVERSE_, BOOST_PP_VARIADIC_SIZE tuple) tuple
+# endif
+# define BOOST_PP_TUPLE_REVERSE_O_2(size, tuple) BOOST_PP_TUPLE_REVERSE_O_1(tuple)
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_I(size, tuple)
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s t
+# else
+# define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_II(BOOST_PP_TUPLE_REVERSE_ ## s t)
+# define BOOST_PP_TUPLE_REVERSE_II(res) res
+# endif
+# else
+# define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_OO((size, tuple))
+# define BOOST_PP_TUPLE_REVERSE_OO(par) BOOST_PP_TUPLE_REVERSE_I ## par
+# define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s ## t
+# endif
+# endif
+# define BOOST_PP_TUPLE_REVERSE_1(e0) (e0)
+# define BOOST_PP_TUPLE_REVERSE_2(e0, e1) (e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_3(e0, e1, e2) (e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_4(e0, e1, e2, e3) (e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_5(e0, e1, e2, e3, e4) (e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_6(e0, e1, e2, e3, e4, e5) (e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_7(e0, e1, e2, e3, e4, e5, e6) (e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_8(e0, e1, e2, e3, e4, e5, e6, e7) (e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e61, e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e62, e61, e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+# define BOOST_PP_TUPLE_REVERSE_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e63, e62, e61, e60, e59, e58, e57, e56, e55, e54, e53, e52, e51, e50, e49, e48, e47, e46, e45, e44, e43, e42, e41, e40, e39, e38, e37, e36, e35, e34, e33, e32, e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/size.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/size.hpp
new file mode 100644
index 0000000..675c065
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/size.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_SIZE_HPP
+# define BOOST_PREPROCESSOR_TUPLE_SIZE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE tuple,)
+# else
+# define BOOST_PP_TUPLE_SIZE(tuple) BOOST_PP_VARIADIC_SIZE tuple
+# endif
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_array.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_array.hpp
new file mode 100644
index 0000000..0a52811
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_array.hpp
@@ -0,0 +1,39 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_TO_ARRAY_HPP
+# define BOOST_PREPROCESSOR_TUPLE_TO_ARRAY_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# /* BOOST_PP_TUPLE_TO_ARRAY */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_TO_ARRAY(...) BOOST_PP_TUPLE_TO_ARRAY_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_ARRAY_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_TO_ARRAY_I(m, args) BOOST_PP_TUPLE_TO_ARRAY_II(m, args)
+# define BOOST_PP_TUPLE_TO_ARRAY_II(m, args) BOOST_PP_CAT(m ## args,)
+# define BOOST_PP_TUPLE_TO_ARRAY_1(tuple) (BOOST_PP_TUPLE_SIZE(tuple), tuple)
+# else
+# define BOOST_PP_TUPLE_TO_ARRAY(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_ARRAY_, __VA_ARGS__)(__VA_ARGS__)
+# define BOOST_PP_TUPLE_TO_ARRAY_1(tuple) (BOOST_PP_VARIADIC_SIZE tuple, tuple)
+# endif
+# define BOOST_PP_TUPLE_TO_ARRAY_2(size, tuple) (size, tuple)
+# else
+# define BOOST_PP_TUPLE_TO_ARRAY(size, tuple) (size, tuple)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_list.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_list.hpp
new file mode 100644
index 0000000..da7828f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_list.hpp
@@ -0,0 +1,118 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002-2011) */
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
+# define BOOST_PREPROCESSOR_TUPLE_TO_LIST_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# /* BOOST_PP_TUPLE_TO_LIST */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_TO_LIST_I(m, args) BOOST_PP_TUPLE_TO_LIST_II(m, args)
+# define BOOST_PP_TUPLE_TO_LIST_II(m, args) BOOST_PP_CAT(m ## args,)
+# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_TUPLE_SIZE(tuple)) tuple
+# else
+# define BOOST_PP_TUPLE_TO_LIST(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_LIST_O_, __VA_ARGS__)(__VA_ARGS__)
+# define BOOST_PP_TUPLE_TO_LIST_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_LIST_, BOOST_PP_VARIADIC_SIZE tuple) tuple
+# endif
+# define BOOST_PP_TUPLE_TO_LIST_O_2(size, tuple) BOOST_PP_TUPLE_TO_LIST_O_1(tuple)
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_I(size, tuple)
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s t
+# else
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_II(BOOST_PP_TUPLE_TO_LIST_ ## s t)
+# define BOOST_PP_TUPLE_TO_LIST_II(res) res
+# endif
+# else
+# define BOOST_PP_TUPLE_TO_LIST(size, tuple) BOOST_PP_TUPLE_TO_LIST_OO((size, tuple))
+# define BOOST_PP_TUPLE_TO_LIST_OO(par) BOOST_PP_TUPLE_TO_LIST_I ## par
+# define BOOST_PP_TUPLE_TO_LIST_I(s, t) BOOST_PP_TUPLE_TO_LIST_ ## s ## t
+# endif
+# endif
+#
+# define BOOST_PP_TUPLE_TO_LIST_1(e0) (e0, BOOST_PP_NIL)
+# define BOOST_PP_TUPLE_TO_LIST_2(e0, e1) (e0, (e1, BOOST_PP_NIL))
+# define BOOST_PP_TUPLE_TO_LIST_3(e0, e1, e2) (e0, (e1, (e2, BOOST_PP_NIL)))
+# define BOOST_PP_TUPLE_TO_LIST_4(e0, e1, e2, e3) (e0, (e1, (e2, (e3, BOOST_PP_NIL))))
+# define BOOST_PP_TUPLE_TO_LIST_5(e0, e1, e2, e3, e4) (e0, (e1, (e2, (e3, (e4, BOOST_PP_NIL)))))
+# define BOOST_PP_TUPLE_TO_LIST_6(e0, e1, e2, e3, e4, e5) (e0, (e1, (e2, (e3, (e4, (e5, BOOST_PP_NIL))))))
+# define BOOST_PP_TUPLE_TO_LIST_7(e0, e1, e2, e3, e4, e5, e6) (e0, (e1, (e2, (e3, (e4, (e5, (e6, BOOST_PP_NIL)))))))
+# define BOOST_PP_TUPLE_TO_LIST_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, BOOST_PP_NIL))))))))
+# define BOOST_PP_TUPLE_TO_LIST_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, BOOST_PP_NIL)))))))))
+# define BOOST_PP_TUPLE_TO_LIST_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, BOOST_PP_NIL))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, BOOST_PP_NIL)))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, BOOST_PP_NIL))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, BOOST_PP_NIL)))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, BOOST_PP_NIL))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, BOOST_PP_NIL)))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, BOOST_PP_NIL))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, BOOST_PP_NIL)))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, BOOST_PP_NIL))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, BOOST_PP_NIL)))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, BOOST_PP_NIL))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, BOOST_PP_NIL)))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, BOOST_PP_NIL))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, BOOST_PP_NIL)))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, BOOST_PP_NIL))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, BOOST_PP_NIL)))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, BOOST_PP_NIL))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, BOOST_PP_NIL)))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, BOOST_PP_NIL))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, BOOST_PP_NIL)))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, BOOST_PP_NIL))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, BOOST_PP_NIL)))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, BOOST_PP_NIL))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, BOOST_PP_NIL)))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, BOOST_PP_NIL))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, BOOST_PP_NIL)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+# define BOOST_PP_TUPLE_TO_LIST_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0, (e1, (e2, (e3, (e4, (e5, (e6, (e7, (e8, (e9, (e10, (e11, (e12, (e13, (e14, (e15, (e16, (e17, (e18, (e19, (e20, (e21, (e22, (e23, (e24, (e25, (e26, (e27, (e28, (e29, (e30, (e31, (e32, (e33, (e34, (e35, (e36, (e37, (e38, (e39, (e40, (e41, (e42, (e43, (e44, (e45, (e46, (e47, (e48, (e49, (e50, (e51, (e52, (e53, (e54, (e55, (e56, (e57, (e58, (e59, (e60, (e61, (e62, (e63, BOOST_PP_NIL))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_seq.hpp
new file mode 100644
index 0000000..a53f5a0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/tuple/to_seq.hpp
@@ -0,0 +1,119 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002-2011. *
+# * (C) Copyright Edward Diener 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_TUPLE_TO_SEQ_HPP
+# define BOOST_PREPROCESSOR_TUPLE_TO_SEQ_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/facilities/overload.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+#
+# /* BOOST_PP_TUPLE_TO_SEQ */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_TUPLE_TO_SEQ(...) BOOST_PP_TUPLE_TO_SEQ_I(BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_SEQ_O_, __VA_ARGS__), (__VA_ARGS__))
+# define BOOST_PP_TUPLE_TO_SEQ_I(m, args) BOOST_PP_TUPLE_TO_SEQ_II(m, args)
+# define BOOST_PP_TUPLE_TO_SEQ_II(m, args) BOOST_PP_CAT(m ## args,)
+# define BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_SEQ_, BOOST_PP_TUPLE_SIZE(tuple)) tuple
+# else
+# define BOOST_PP_TUPLE_TO_SEQ(...) BOOST_PP_OVERLOAD(BOOST_PP_TUPLE_TO_SEQ_O_, __VA_ARGS__)(__VA_ARGS__)
+# define BOOST_PP_TUPLE_TO_SEQ_O_1(tuple) BOOST_PP_CAT(BOOST_PP_TUPLE_TO_SEQ_, BOOST_PP_VARIADIC_SIZE tuple) tuple
+# endif
+# define BOOST_PP_TUPLE_TO_SEQ_O_2(size, tuple) BOOST_PP_TUPLE_TO_SEQ_O_1(tuple)
+# else
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_TUPLE_TO_SEQ(size, tuple) BOOST_PP_TUPLE_TO_SEQ_I(size, tuple)
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+# define BOOST_PP_TUPLE_TO_SEQ_I(s, t) BOOST_PP_TUPLE_TO_SEQ_ ## s t
+# else
+# define BOOST_PP_TUPLE_TO_SEQ_I(s, t) BOOST_PP_TUPLE_TO_SEQ_II(BOOST_PP_TUPLE_TO_SEQ_ ## s t)
+# define BOOST_PP_TUPLE_TO_SEQ_II(res) res
+# endif
+# else
+# define BOOST_PP_TUPLE_TO_SEQ(size, tuple) BOOST_PP_TUPLE_TO_SEQ_OO((size, tuple))
+# define BOOST_PP_TUPLE_TO_SEQ_OO(par) BOOST_PP_TUPLE_TO_SEQ_I ## par
+# define BOOST_PP_TUPLE_TO_SEQ_I(s, t) BOOST_PP_TUPLE_TO_SEQ_ ## s ## t
+# endif
+# endif
+#
+/* An empty array can be passed */
+# define BOOST_PP_TUPLE_TO_SEQ_0() ()
+#
+# define BOOST_PP_TUPLE_TO_SEQ_1(e0) (e0)
+# define BOOST_PP_TUPLE_TO_SEQ_2(e0, e1) (e0)(e1)
+# define BOOST_PP_TUPLE_TO_SEQ_3(e0, e1, e2) (e0)(e1)(e2)
+# define BOOST_PP_TUPLE_TO_SEQ_4(e0, e1, e2, e3) (e0)(e1)(e2)(e3)
+# define BOOST_PP_TUPLE_TO_SEQ_5(e0, e1, e2, e3, e4) (e0)(e1)(e2)(e3)(e4)
+# define BOOST_PP_TUPLE_TO_SEQ_6(e0, e1, e2, e3, e4, e5) (e0)(e1)(e2)(e3)(e4)(e5)
+# define BOOST_PP_TUPLE_TO_SEQ_7(e0, e1, e2, e3, e4, e5, e6) (e0)(e1)(e2)(e3)(e4)(e5)(e6)
+# define BOOST_PP_TUPLE_TO_SEQ_8(e0, e1, e2, e3, e4, e5, e6, e7) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)
+# define BOOST_PP_TUPLE_TO_SEQ_9(e0, e1, e2, e3, e4, e5, e6, e7, e8) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)
+# define BOOST_PP_TUPLE_TO_SEQ_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)
+# define BOOST_PP_TUPLE_TO_SEQ_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)
+# define BOOST_PP_TUPLE_TO_SEQ_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)
+# define BOOST_PP_TUPLE_TO_SEQ_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)
+# define BOOST_PP_TUPLE_TO_SEQ_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)
+# define BOOST_PP_TUPLE_TO_SEQ_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)
+# define BOOST_PP_TUPLE_TO_SEQ_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)
+# define BOOST_PP_TUPLE_TO_SEQ_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)
+# define BOOST_PP_TUPLE_TO_SEQ_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)
+# define BOOST_PP_TUPLE_TO_SEQ_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)
+# define BOOST_PP_TUPLE_TO_SEQ_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)
+# define BOOST_PP_TUPLE_TO_SEQ_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)
+# define BOOST_PP_TUPLE_TO_SEQ_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)
+# define BOOST_PP_TUPLE_TO_SEQ_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)
+# define BOOST_PP_TUPLE_TO_SEQ_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)
+# define BOOST_PP_TUPLE_TO_SEQ_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)
+# define BOOST_PP_TUPLE_TO_SEQ_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)
+# define BOOST_PP_TUPLE_TO_SEQ_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)
+# define BOOST_PP_TUPLE_TO_SEQ_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)
+# define BOOST_PP_TUPLE_TO_SEQ_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)
+# define BOOST_PP_TUPLE_TO_SEQ_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)
+# define BOOST_PP_TUPLE_TO_SEQ_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)
+# define BOOST_PP_TUPLE_TO_SEQ_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)
+# define BOOST_PP_TUPLE_TO_SEQ_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)
+# define BOOST_PP_TUPLE_TO_SEQ_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)
+# define BOOST_PP_TUPLE_TO_SEQ_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)
+# define BOOST_PP_TUPLE_TO_SEQ_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)
+# define BOOST_PP_TUPLE_TO_SEQ_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)
+# define BOOST_PP_TUPLE_TO_SEQ_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)
+# define BOOST_PP_TUPLE_TO_SEQ_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)
+# define BOOST_PP_TUPLE_TO_SEQ_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)
+# define BOOST_PP_TUPLE_TO_SEQ_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)
+# define BOOST_PP_TUPLE_TO_SEQ_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)
+# define BOOST_PP_TUPLE_TO_SEQ_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)
+# define BOOST_PP_TUPLE_TO_SEQ_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)
+# define BOOST_PP_TUPLE_TO_SEQ_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)
+# define BOOST_PP_TUPLE_TO_SEQ_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)
+# define BOOST_PP_TUPLE_TO_SEQ_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)
+# define BOOST_PP_TUPLE_TO_SEQ_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)
+# define BOOST_PP_TUPLE_TO_SEQ_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)
+# define BOOST_PP_TUPLE_TO_SEQ_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)
+# define BOOST_PP_TUPLE_TO_SEQ_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)
+# define BOOST_PP_TUPLE_TO_SEQ_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)
+# define BOOST_PP_TUPLE_TO_SEQ_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)
+# define BOOST_PP_TUPLE_TO_SEQ_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)
+# define BOOST_PP_TUPLE_TO_SEQ_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)
+# define BOOST_PP_TUPLE_TO_SEQ_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)
+# define BOOST_PP_TUPLE_TO_SEQ_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)
+# define BOOST_PP_TUPLE_TO_SEQ_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)
+# define BOOST_PP_TUPLE_TO_SEQ_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)
+# define BOOST_PP_TUPLE_TO_SEQ_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)
+# define BOOST_PP_TUPLE_TO_SEQ_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)
+# define BOOST_PP_TUPLE_TO_SEQ_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)(e61)
+# define BOOST_PP_TUPLE_TO_SEQ_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)(e61)(e62)
+# define BOOST_PP_TUPLE_TO_SEQ_64(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63) (e0)(e1)(e2)(e3)(e4)(e5)(e6)(e7)(e8)(e9)(e10)(e11)(e12)(e13)(e14)(e15)(e16)(e17)(e18)(e19)(e20)(e21)(e22)(e23)(e24)(e25)(e26)(e27)(e28)(e29)(e30)(e31)(e32)(e33)(e34)(e35)(e36)(e37)(e38)(e39)(e40)(e41)(e42)(e43)(e44)(e45)(e46)(e47)(e48)(e49)(e50)(e51)(e52)(e53)(e54)(e55)(e56)(e57)(e58)(e59)(e60)(e61)(e62)(e63)
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic.hpp
new file mode 100644
index 0000000..a28e026
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_HPP
+#
+# include <boost/preprocessor/variadic/elem.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/to_array.hpp>
+# include <boost/preprocessor/variadic/to_list.hpp>
+# include <boost/preprocessor/variadic/to_seq.hpp>
+# include <boost/preprocessor/variadic/to_tuple.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/detail/is_single_return.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/detail/is_single_return.hpp
new file mode 100644
index 0000000..5c95029
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/detail/is_single_return.hpp
@@ -0,0 +1,28 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_IS_SINGLE_RETURN */
+#
+# if BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/facilities/is_1.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+# define BOOST_PP_VARIADIC_IS_SINGLE_RETURN(sr,nsr,...) \
+ BOOST_PP_IIF(BOOST_PP_IS_1(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)),sr,nsr) \
+ /**/
+# endif /* BOOST_PP_VARIADICS && BOOST_PP_VARIADICS_MSVC */
+#
+# endif /* BOOST_PREPROCESSOR_VARIADIC_DETAIL_IS_SINGLE_RETURN_HPP */
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/elem.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/elem.hpp
new file mode 100644
index 0000000..be38a94
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/elem.hpp
@@ -0,0 +1,94 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_ELEM_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_ELEM */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_VARIADIC_ELEM_I(n,__VA_ARGS__)
+# define BOOST_PP_VARIADIC_ELEM_I(n, ...) BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,),)
+# else
+# define BOOST_PP_VARIADIC_ELEM(n, ...) BOOST_PP_CAT(BOOST_PP_VARIADIC_ELEM_, n)(__VA_ARGS__,)
+# endif
+# define BOOST_PP_VARIADIC_ELEM_0(e0, ...) e0
+# define BOOST_PP_VARIADIC_ELEM_1(e0, e1, ...) e1
+# define BOOST_PP_VARIADIC_ELEM_2(e0, e1, e2, ...) e2
+# define BOOST_PP_VARIADIC_ELEM_3(e0, e1, e2, e3, ...) e3
+# define BOOST_PP_VARIADIC_ELEM_4(e0, e1, e2, e3, e4, ...) e4
+# define BOOST_PP_VARIADIC_ELEM_5(e0, e1, e2, e3, e4, e5, ...) e5
+# define BOOST_PP_VARIADIC_ELEM_6(e0, e1, e2, e3, e4, e5, e6, ...) e6
+# define BOOST_PP_VARIADIC_ELEM_7(e0, e1, e2, e3, e4, e5, e6, e7, ...) e7
+# define BOOST_PP_VARIADIC_ELEM_8(e0, e1, e2, e3, e4, e5, e6, e7, e8, ...) e8
+# define BOOST_PP_VARIADIC_ELEM_9(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, ...) e9
+# define BOOST_PP_VARIADIC_ELEM_10(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, ...) e10
+# define BOOST_PP_VARIADIC_ELEM_11(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, ...) e11
+# define BOOST_PP_VARIADIC_ELEM_12(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, ...) e12
+# define BOOST_PP_VARIADIC_ELEM_13(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, ...) e13
+# define BOOST_PP_VARIADIC_ELEM_14(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, ...) e14
+# define BOOST_PP_VARIADIC_ELEM_15(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, ...) e15
+# define BOOST_PP_VARIADIC_ELEM_16(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, ...) e16
+# define BOOST_PP_VARIADIC_ELEM_17(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, ...) e17
+# define BOOST_PP_VARIADIC_ELEM_18(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, ...) e18
+# define BOOST_PP_VARIADIC_ELEM_19(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, ...) e19
+# define BOOST_PP_VARIADIC_ELEM_20(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, ...) e20
+# define BOOST_PP_VARIADIC_ELEM_21(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, ...) e21
+# define BOOST_PP_VARIADIC_ELEM_22(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, ...) e22
+# define BOOST_PP_VARIADIC_ELEM_23(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, ...) e23
+# define BOOST_PP_VARIADIC_ELEM_24(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, ...) e24
+# define BOOST_PP_VARIADIC_ELEM_25(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, ...) e25
+# define BOOST_PP_VARIADIC_ELEM_26(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, ...) e26
+# define BOOST_PP_VARIADIC_ELEM_27(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, ...) e27
+# define BOOST_PP_VARIADIC_ELEM_28(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, ...) e28
+# define BOOST_PP_VARIADIC_ELEM_29(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, ...) e29
+# define BOOST_PP_VARIADIC_ELEM_30(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, ...) e30
+# define BOOST_PP_VARIADIC_ELEM_31(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, ...) e31
+# define BOOST_PP_VARIADIC_ELEM_32(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, ...) e32
+# define BOOST_PP_VARIADIC_ELEM_33(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, ...) e33
+# define BOOST_PP_VARIADIC_ELEM_34(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, ...) e34
+# define BOOST_PP_VARIADIC_ELEM_35(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, ...) e35
+# define BOOST_PP_VARIADIC_ELEM_36(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, ...) e36
+# define BOOST_PP_VARIADIC_ELEM_37(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, ...) e37
+# define BOOST_PP_VARIADIC_ELEM_38(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, ...) e38
+# define BOOST_PP_VARIADIC_ELEM_39(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, ...) e39
+# define BOOST_PP_VARIADIC_ELEM_40(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, ...) e40
+# define BOOST_PP_VARIADIC_ELEM_41(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, ...) e41
+# define BOOST_PP_VARIADIC_ELEM_42(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, ...) e42
+# define BOOST_PP_VARIADIC_ELEM_43(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, ...) e43
+# define BOOST_PP_VARIADIC_ELEM_44(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, ...) e44
+# define BOOST_PP_VARIADIC_ELEM_45(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, ...) e45
+# define BOOST_PP_VARIADIC_ELEM_46(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, ...) e46
+# define BOOST_PP_VARIADIC_ELEM_47(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, ...) e47
+# define BOOST_PP_VARIADIC_ELEM_48(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, ...) e48
+# define BOOST_PP_VARIADIC_ELEM_49(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, ...) e49
+# define BOOST_PP_VARIADIC_ELEM_50(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, ...) e50
+# define BOOST_PP_VARIADIC_ELEM_51(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, ...) e51
+# define BOOST_PP_VARIADIC_ELEM_52(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, ...) e52
+# define BOOST_PP_VARIADIC_ELEM_53(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, ...) e53
+# define BOOST_PP_VARIADIC_ELEM_54(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, ...) e54
+# define BOOST_PP_VARIADIC_ELEM_55(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, ...) e55
+# define BOOST_PP_VARIADIC_ELEM_56(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, ...) e56
+# define BOOST_PP_VARIADIC_ELEM_57(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, ...) e57
+# define BOOST_PP_VARIADIC_ELEM_58(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, ...) e58
+# define BOOST_PP_VARIADIC_ELEM_59(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, ...) e59
+# define BOOST_PP_VARIADIC_ELEM_60(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, ...) e60
+# define BOOST_PP_VARIADIC_ELEM_61(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, ...) e61
+# define BOOST_PP_VARIADIC_ELEM_62(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, ...) e62
+# define BOOST_PP_VARIADIC_ELEM_63(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, ...) e63
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/size.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/size.hpp
new file mode 100644
index 0000000..b92a5ff
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/size.hpp
@@ -0,0 +1,30 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_SIZE_HPP
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_SIZE */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_CAT(BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,),)
+# else
+# define BOOST_PP_VARIADIC_SIZE(...) BOOST_PP_VARIADIC_SIZE_I(__VA_ARGS__, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,)
+# endif
+# define BOOST_PP_VARIADIC_SIZE_I(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63, size, ...) size
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_array.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_array.hpp
new file mode 100644
index 0000000..14c2b92
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_array.hpp
@@ -0,0 +1,32 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_TO_ARRAY_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_TO_ARRAY_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/to_array.hpp>
+# if BOOST_PP_VARIADICS_MSVC
+# include <boost/preprocessor/variadic/size.hpp>
+# endif
+#
+# /* BOOST_PP_VARIADIC_TO_ARRAY */
+#
+# if BOOST_PP_VARIADICS
+# if BOOST_PP_VARIADICS_MSVC
+# define BOOST_PP_VARIADIC_TO_ARRAY(...) BOOST_PP_TUPLE_TO_ARRAY_2(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),(__VA_ARGS__))
+# else
+# define BOOST_PP_VARIADIC_TO_ARRAY(...) BOOST_PP_TUPLE_TO_ARRAY((__VA_ARGS__))
+# endif
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_list.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_list.hpp
new file mode 100644
index 0000000..43d526a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_list.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_TO_LIST_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_TO_LIST_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/to_list.hpp>
+#
+# /* BOOST_PP_VARIADIC_TO_LIST */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADIC_TO_LIST(...) BOOST_PP_TUPLE_TO_LIST((__VA_ARGS__))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_seq.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_seq.hpp
new file mode 100644
index 0000000..255af4f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_seq.hpp
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_TO_SEQ_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_TO_SEQ_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+# include <boost/preprocessor/tuple/to_seq.hpp>
+#
+# /* BOOST_PP_VARIADIC_TO_SEQ */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADIC_TO_SEQ(...) BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__))
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_tuple.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_tuple.hpp
new file mode 100644
index 0000000..ddb6d8b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/variadic/to_tuple.hpp
@@ -0,0 +1,24 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011. *
+# * (C) Copyright Paul Mensonides 2011. *
+# * Distributed under the Boost Software License, Version 1.0. (See *
+# * accompanying file LICENSE_1_0.txt or copy at *
+# * http://www.boost.org/LICENSE_1_0.txt) *
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_VARIADIC_TO_TUPLE_HPP
+# define BOOST_PREPROCESSOR_VARIADIC_TO_TUPLE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_VARIADIC_TO_TUPLE */
+#
+# if BOOST_PP_VARIADICS
+# define BOOST_PP_VARIADIC_TO_TUPLE(...) (__VA_ARGS__)
+# endif
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/while.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/while.hpp
new file mode 100644
index 0000000..4b9c801
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/while.hpp
@@ -0,0 +1,17 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_WHILE_HPP
+# define BOOST_PREPROCESSOR_WHILE_HPP
+#
+# include <boost/preprocessor/control/while.hpp>
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/include/boost/preprocessor/wstringize.hpp b/third_party/boostorg/preprocessor/include/boost/preprocessor/wstringize.hpp
new file mode 100644
index 0000000..5d1a83a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/include/boost/preprocessor/wstringize.hpp
@@ -0,0 +1,29 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_WSTRINGIZE_HPP
+# define BOOST_PREPROCESSOR_WSTRINGIZE_HPP
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_WSTRINGIZE */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+# define BOOST_PP_WSTRINGIZE(text) BOOST_PP_WSTRINGIZE_I(text)
+# else
+# define BOOST_PP_WSTRINGIZE(text) BOOST_PP_WSTRINGIZE_OO((text))
+# define BOOST_PP_WSTRINGIZE_OO(par) BOOST_PP_WSTRINGIZE_I ## par
+# endif
+#
+# define BOOST_PP_WSTRINGIZE_I(text) BOOST_PP_WSTRINGIZE_II(#text)
+# define BOOST_PP_WSTRINGIZE_II(str) L ## str
+#
+# endif
diff --git a/third_party/boostorg/preprocessor/index.html b/third_party/boostorg/preprocessor/index.html
new file mode 100644
index 0000000..ec3c055
--- /dev/null
+++ b/third_party/boostorg/preprocessor/index.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+<meta http-equiv="refresh" content="0; URL=doc/index.html">
+</head>
+<body>
+Automatic redirection failed, please go to
+<a href="doc/index.html">doc/index.html</a>.
+
+<!--
+© Copyright Housemarque Oy 2002
+© Copyright Paul Mensonides 2002
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+http://www.boost.org/LICENSE_1_0.txt)
+-->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/third_party/boostorg/preprocessor/meta/libraries.json b/third_party/boostorg/preprocessor/meta/libraries.json
new file mode 100644
index 0000000..279c68f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/meta/libraries.json
@@ -0,0 +1,15 @@
+{
+ "key": "preprocessor",
+ "name": "Preprocessor",
+ "authors": [
+ "Vesa Karvonen",
+ "Paul Mensonides"
+ ],
+ "description": "Preprocessor metaprogramming tools including repetition and recursion.",
+ "category": [
+ "Preprocessor"
+ ],
+ "maintainers": [
+ "Paul Mensonides <pmenso57 -at- comcast.net>"
+ ]
+}
diff --git a/third_party/boostorg/preprocessor/test/Jamfile.v2 b/third_party/boostorg/preprocessor/test/Jamfile.v2
new file mode 100644
index 0000000..562ee9e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/Jamfile.v2
@@ -0,0 +1,252 @@
+#~ Copyright Rene Rivera 2008
+#~ Distributed under the Boost Software License, Version 1.0.
+#~ (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+import testing ;
+
+project preprocessor_tests : requirements <warnings>on
+ <toolset>gcc-4.3.0:<warnings>all
+ <toolset>gcc-4.3.0:<cxxflags>-Wno-variadic-macros
+ <toolset>gcc-4.4.0:<warnings>all
+ <toolset>gcc-4.4.0:<cxxflags>-Wno-variadic-macros
+ <toolset>gcc-4.5.0:<warnings>all
+ <toolset>gcc-4.5.0:<cxxflags>-Wno-variadic-macros
+ <toolset>gcc-4.5.0:<linkflags>"-Wl,--enable-auto-import"
+ <toolset>gcc-4.5.2:<warnings>all
+ <toolset>gcc-4.5.2:<cxxflags>-Wno-variadic-macros
+ <toolset>msvc:<warnings>all
+ ;
+
+alias preprocessor : :
+ <toolset>gcc
+ <toolset-gcc:version>3.4
+ ;
+
+alias preprocessor : :
+ <toolset>gcc
+ <toolset-gcc:version>4.1
+ ;
+
+alias preprocessor : :
+ <toolset>gcc
+ <toolset-gcc:version>4.2
+ ;
+
+alias preprocessor
+ :
+ [ compile arithmetic.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile array.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile comparison.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile control.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile debug.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile facilities.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile iteration.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile list.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile logical.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile punctuation.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile repetition.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile selection.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile seq.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile slot.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile tuple.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile variadic.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ ;
+
+alias preprocessor_nvm
+ :
+ [ compile arithmetic.cpp : <define>BOOST_PP_VARIADICS=0 : arithmetic_nvm ]
+ [ compile array.cpp : <define>BOOST_PP_VARIADICS=0 : array_nvm ]
+ [ compile comparison.cpp : <define>BOOST_PP_VARIADICS=0 : comparison_nvm ]
+ [ compile control.cpp : <define>BOOST_PP_VARIADICS=0 : control_nvm ]
+ [ compile debug.cpp : <define>BOOST_PP_VARIADICS=0 : debug_nvm ]
+ [ compile facilities.cpp : <define>BOOST_PP_VARIADICS=0 : facilities_nvm ]
+ [ compile iteration.cpp : <define>BOOST_PP_VARIADICS=0 : iteration_nvm ]
+ [ compile list.cpp : <define>BOOST_PP_VARIADICS=0 : list_nvm ]
+ [ compile logical.cpp : <define>BOOST_PP_VARIADICS=0 : logical_nvm ]
+ [ compile repetition.cpp : <define>BOOST_PP_VARIADICS=0 : repetition_nvm ]
+ [ compile selection.cpp : <define>BOOST_PP_VARIADICS=0 : selection_nvm ]
+ [ compile seq.cpp : <define>BOOST_PP_VARIADICS=0 : seq_nvm ]
+ [ compile slot.cpp : <define>BOOST_PP_VARIADICS=0 : slot_nvm ]
+ [ compile tuple.cpp : <define>BOOST_PP_VARIADICS=0 : tuple_nvm ]
+ ;
+
+alias preprocessor_c
+ :
+ [ compile arithmetic.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : arithmetic_c
+ ]
+ [ compile array.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : array_c
+ ]
+ [ compile comparison.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : comparison_c
+ ]
+ [ compile control.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : control_c
+ ]
+ [ compile debug.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : debug_c
+ ]
+ [ compile facilities.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : facilities_c
+ ]
+ [ compile list.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : list_c
+ ]
+ [ compile logical.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : logical_c
+ ]
+ [ compile punctuation.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : punctuation_c
+ ]
+ [ compile selection.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : selection_c
+ ]
+ [ compile seq.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : seq_c
+ ]
+ [ compile slot.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : slot_c
+ ]
+ [ compile tuple.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : tuple_c
+ ]
+ [ compile variadic.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : variadic_c
+ ]
+ ;
+
+alias preprocessor_c_nvm
+ :
+ [ compile arithmetic.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : arithmetic_c_nvm
+ ]
+ [ compile array.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : array_c_nvm
+ ]
+ [ compile comparison.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : comparison_c_nvm
+ ]
+ [ compile control.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : control_c_nvm
+ ]
+ [ compile debug.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : debug_c_nvm
+ ]
+ [ compile facilities.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : facilities_c_nvm
+ ]
+ [ compile list.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : list_c_nvm
+ ]
+ [ compile logical.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : logical_c_nvm
+ ]
+ [ compile selection.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : selection_c_nvm
+ ]
+ [ compile seq.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : seq_c_nvm
+ ]
+ [ compile slot.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : slot_c_nvm
+ ]
+ [ compile tuple.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : tuple_c_nvm
+ ]
+ ;
+
+alias preprocessor_isempty : :
+ <toolset>gcc
+ <toolset-gcc:version>3.4
+ ;
+
+alias preprocessor_isempty : :
+ <toolset>gcc
+ <toolset-gcc:version>4.1
+ ;
+
+alias preprocessor_isempty : :
+ <toolset>gcc
+ <toolset-gcc:version>4.2
+ ;
+
+alias preprocessor_isempty
+ :
+ [ compile isempty.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile-fail isempty_variadic_standard_failure.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ [ compile-fail isempty_variadic_standard_failure2.cpp : <toolset>gcc:<cxxflags>-std=c++0x <toolset>clang-linux:<cxxflags>-std=c++0x ]
+ ;
+
+alias preprocessor_isempty_nvm
+ :
+ [ compile isempty.cpp : <define>BOOST_PP_VARIADICS=0 : isempty_nvm ]
+ ;
+
+alias preprocessor_isempty_c
+ :
+ [ compile isempty.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : isempty_c
+ ]
+ [ compile-fail isempty_variadic_standard_failure.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : isempty_variadic_standard_failure_c
+ ]
+ [ compile-fail isempty_variadic_standard_failure2.c
+ : <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : isempty_variadic_standard_failure2_c
+ ]
+ ;
+
+alias preprocessor_isempty_c_nvm
+ :
+ [ compile isempty.c
+ : <define>BOOST_PP_VARIADICS=0
+ <toolset>gcc:<cflags>-std=c99 <toolset>clang-linux:<cflags>-std=c99
+ : isempty_c_nvm
+ ]
+ ;
+
+alias preprocessor_config
+ :
+ [ run config_info.cpp ]
+ ;
diff --git a/third_party/boostorg/preprocessor/test/arithmetic.c b/third_party/boostorg/preprocessor/test/arithmetic.c
new file mode 100644
index 0000000..53a071e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/arithmetic.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/arithmetic.cxx>
diff --git a/third_party/boostorg/preprocessor/test/arithmetic.cpp b/third_party/boostorg/preprocessor/test/arithmetic.cpp
new file mode 100644
index 0000000..53a071e
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/arithmetic.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/arithmetic.cxx>
diff --git a/third_party/boostorg/preprocessor/test/arithmetic.cxx b/third_party/boostorg/preprocessor/test/arithmetic.cxx
new file mode 100644
index 0000000..5d48928
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/arithmetic.cxx
@@ -0,0 +1,82 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic.hpp>
+# include <boost/preprocessor/config/limits.hpp>
+# include <libs/preprocessor/test/test.h>
+
+/* addition */
+
+BEGIN BOOST_PP_ADD(2, 3) == 5 END
+
+BEGIN BOOST_PP_ADD(BOOST_PP_ADD(2, 2), 2) == 6 END
+BEGIN BOOST_PP_ADD(2, BOOST_PP_ADD(1, 4)) == 7 END
+BEGIN BOOST_PP_ADD(BOOST_PP_ADD(2, 2), BOOST_PP_ADD(2, 2)) == 8 END
+
+/* subtraction */
+
+BEGIN BOOST_PP_SUB(11, 0) == 11 END
+BEGIN BOOST_PP_SUB(12, 1) == 11 END
+BEGIN BOOST_PP_SUB(3, 4) == 0 END
+
+BEGIN BOOST_PP_SUB(5, BOOST_PP_SUB(3, 2)) == 4 END
+BEGIN BOOST_PP_SUB(BOOST_PP_SUB(10, 5), 2) == 3 END
+BEGIN BOOST_PP_SUB(BOOST_PP_SUB(7, 3), BOOST_PP_SUB(10, 8)) == 2 END
+
+/* multiplication */
+
+BEGIN BOOST_PP_MUL(0, 1) == 0 END
+BEGIN BOOST_PP_MUL(1, 0) == 0 END
+BEGIN BOOST_PP_MUL(1, 1) == 1 END
+BEGIN BOOST_PP_MUL(4, 3) == 12 END
+
+BEGIN BOOST_PP_MUL(BOOST_PP_MUL(2, 2), 2) == 8 END
+BEGIN BOOST_PP_MUL(2, BOOST_PP_MUL(2, 2)) == 8 END
+BEGIN BOOST_PP_MUL(BOOST_PP_MUL(2, 2), BOOST_PP_MUL(2, 2)) == 16 END
+
+/* division */
+
+BEGIN BOOST_PP_DIV(2, 1) == 2 END
+BEGIN BOOST_PP_DIV(0, 5) == 0 END
+BEGIN BOOST_PP_DIV(7, 3) == 2 END
+
+BEGIN BOOST_PP_DIV(BOOST_PP_DIV(4, 2), 2) == 1 END
+BEGIN BOOST_PP_DIV(10, BOOST_PP_DIV(10, 2)) == 2 END
+BEGIN BOOST_PP_DIV(BOOST_PP_DIV(10, 2), BOOST_PP_DIV(4, 2)) == 2 END
+
+/* modulus */
+
+BEGIN BOOST_PP_MOD(5, 5) == 0 END
+BEGIN BOOST_PP_MOD(9, 5) == 4 END
+BEGIN BOOST_PP_MOD(7, 4) == 3 END
+
+BEGIN BOOST_PP_MOD(BOOST_PP_MOD(5, 3), 3) == 2 END
+BEGIN BOOST_PP_MOD(5, BOOST_PP_MOD(4, 3)) == 0 END
+
+/* increment */
+
+BEGIN BOOST_PP_INC(0) == 1 END
+BEGIN BOOST_PP_INC(22) == 23 END
+BEGIN BOOST_PP_INC(256) == 256 END
+
+BEGIN BOOST_PP_INC(BOOST_PP_INC(0)) == 2 END
+BEGIN BOOST_PP_INC(BOOST_PP_INC(17)) == 19 END
+BEGIN BOOST_PP_INC(BOOST_PP_INC(255)) == 256 END
+
+/* decrement */
+
+BEGIN BOOST_PP_DEC(256) == 255 END
+BEGIN BOOST_PP_DEC(47) == 46 END
+BEGIN BOOST_PP_DEC(0) == 0 END
+
+BEGIN BOOST_PP_DEC(BOOST_PP_DEC(256)) == 254 END
+BEGIN BOOST_PP_DEC(BOOST_PP_DEC(85)) == 83 END
+BEGIN BOOST_PP_DEC(BOOST_PP_DEC(1)) == 0 END
diff --git a/third_party/boostorg/preprocessor/test/array.c b/third_party/boostorg/preprocessor/test/array.c
new file mode 100644
index 0000000..9150747
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/array.c
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/array.cxx>
diff --git a/third_party/boostorg/preprocessor/test/array.cpp b/third_party/boostorg/preprocessor/test/array.cpp
new file mode 100644
index 0000000..9150747
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/array.cpp
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/array.cxx>
diff --git a/third_party/boostorg/preprocessor/test/array.cxx b/third_party/boostorg/preprocessor/test/array.cxx
new file mode 100644
index 0000000..e6925ab
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/array.cxx
@@ -0,0 +1,192 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011,2013) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/array.hpp>
+# include <libs/preprocessor/test/test.h>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# endif
+
+# define ARRAY_EMPTY (0, ())
+# define ARRAY_ONE (1, ())
+# define ARRAY (3, (0, 1, 2))
+# define ARRAY_LARGE (33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))
+# define ARRAY_VERY_LARGE (64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))
+
+// element access
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_ARRAY_ELEM(0, ARRAY_ONE)) == 1 END
+BEGIN BOOST_PP_ARRAY_ELEM(1, ARRAY) == 1 END
+BEGIN BOOST_PP_ARRAY_ELEM(2, (5, (0, 1, 2, 3, 4))) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(28, ARRAY_LARGE) == 28 END
+BEGIN BOOST_PP_ARRAY_ELEM(17, (33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))) == 17 END
+BEGIN BOOST_PP_ARRAY_ELEM(42, ARRAY_VERY_LARGE) == 42 END
+BEGIN BOOST_PP_ARRAY_ELEM(62, (64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))) == 62 END
+
+// size
+
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY) == 3 END
+BEGIN BOOST_PP_ARRAY_SIZE((5, (0, 1, 2, 3, 4))) == 5 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_LARGE) == 33 END
+BEGIN BOOST_PP_ARRAY_SIZE((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))) == 33 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63))) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_EMPTY) == 0 END
+BEGIN BOOST_PP_ARRAY_SIZE(ARRAY_ONE) == 1 END
+
+// enum
+
+# if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_ARRAY_ENUM(ARRAY)) == 2 END
+BEGIN BOOST_PP_VARIADIC_ELEM(3,BOOST_PP_ARRAY_ENUM((5, (0, 1, 2, 3, 4)))) == 3 END
+BEGIN BOOST_PP_VARIADIC_ELEM(31,BOOST_PP_ARRAY_ENUM(ARRAY_LARGE)) == 31 END
+BEGIN BOOST_PP_VARIADIC_ELEM(13,BOOST_PP_ARRAY_ENUM((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)))) == 13 END
+BEGIN BOOST_PP_VARIADIC_ELEM(39,BOOST_PP_ARRAY_ENUM(ARRAY_VERY_LARGE)) == 39 END
+BEGIN BOOST_PP_VARIADIC_ELEM(24,BOOST_PP_ARRAY_ENUM((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 24 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM((5, (0, 1, 2, 3, 4)))) == 5 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 64 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_ARRAY_ENUM(ARRAY_ONE)) == 1 END
+
+# endif
+
+// to_list
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST(ARRAY), 1) == 1 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST((5, (0, 1, 2, 3, 4))), 4) == 4 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST((33, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32))), 26) == 26 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_ARRAY_TO_LIST(ARRAY_VERY_LARGE), 60) == 60 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_ARRAY_TO_LIST(ARRAY_EMPTY)) == 0 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_ARRAY_TO_LIST(ARRAY_ONE)) == 1 END
+
+// to_seq
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_ELEM(0, BOOST_PP_ARRAY_TO_SEQ(ARRAY_ONE))) == 1 END
+BEGIN BOOST_PP_SEQ_ELEM(0, BOOST_PP_ARRAY_TO_SEQ(ARRAY)) == 0 END
+BEGIN BOOST_PP_SEQ_ELEM(3, BOOST_PP_ARRAY_TO_SEQ((5, (0, 1, 2, 3, 4)))) == 3 END
+BEGIN BOOST_PP_SEQ_ELEM(17, BOOST_PP_ARRAY_TO_SEQ(ARRAY_LARGE)) == 17 END
+BEGIN BOOST_PP_SEQ_ELEM(42, BOOST_PP_ARRAY_TO_SEQ((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 42 END
+
+// to_tuple
+
+# if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_ONE))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_ARRAY_TO_TUPLE(ARRAY)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(1, BOOST_PP_ARRAY_TO_TUPLE((5, (0, 1, 2, 3, 4)))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(26, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_LARGE)) == 26 END
+BEGIN BOOST_PP_TUPLE_ELEM(37, BOOST_PP_ARRAY_TO_TUPLE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 37 END
+
+# else
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1, 0, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_ONE))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_ARRAY_TO_TUPLE(ARRAY)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(5, 1, BOOST_PP_ARRAY_TO_TUPLE((5, (0, 1, 2, 3, 4)))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 26, BOOST_PP_ARRAY_TO_TUPLE(ARRAY_LARGE)) == 26 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 37, BOOST_PP_ARRAY_TO_TUPLE((64, (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)))) == 37 END
+
+# endif
+
+// insert
+
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_INSERT(ARRAY_ONE,0,63)) == 63 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_INSERT(ARRAY,2,40)) == 0 END
+BEGIN BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ARRAY_INSERT(ARRAY,1,40)) == 40 END
+BEGIN BOOST_PP_ARRAY_ELEM(2, BOOST_PP_ARRAY_INSERT(ARRAY,1,40)) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_INSERT(ARRAY,1,40)) == 4 END
+
+BEGIN BOOST_PP_ARRAY_ELEM(8, BOOST_PP_ARRAY_INSERT(ARRAY_LARGE,22,1000)) == 8 END
+BEGIN BOOST_PP_ARRAY_ELEM(22, BOOST_PP_ARRAY_INSERT(ARRAY_LARGE,22,1000)) == 1000 END
+BEGIN BOOST_PP_ARRAY_ELEM(26, BOOST_PP_ARRAY_INSERT(ARRAY_LARGE,22,1000)) == 25 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_INSERT(ARRAY_LARGE,22,1000)) == 34 END
+
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_INSERT(ARRAY_EMPTY,0,25)) == 25 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_INSERT(ARRAY_EMPTY,0,1000)) == 1 END
+
+// pop_back
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_POP_BACK(ARRAY)) == 2 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_POP_BACK(ARRAY_LARGE)) == 32 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_POP_BACK(ARRAY_VERY_LARGE)) == 63 END
+
+// pop_front
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_POP_FRONT(ARRAY)) == 2 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_POP_FRONT(ARRAY_LARGE)) == 32 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_POP_FRONT(ARRAY_VERY_LARGE)) == 63 END
+
+BEGIN BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ARRAY_POP_FRONT(ARRAY)) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(31, BOOST_PP_ARRAY_POP_FRONT(ARRAY_LARGE)) == 32 END
+BEGIN BOOST_PP_ARRAY_ELEM(55, BOOST_PP_ARRAY_POP_FRONT(ARRAY_VERY_LARGE)) == 56 END
+
+// push_back
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 3)) == 4 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_BACK(ARRAY_LARGE, 33)) == 34 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_BACK(ARRAY_EMPTY, 10)) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_BACK(ARRAY_ONE, 44)) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_PUSH_BACK(ARRAY, 3)) == 0 END
+BEGIN BOOST_PP_ARRAY_ELEM(33, BOOST_PP_ARRAY_PUSH_BACK(ARRAY_LARGE, 33)) == 33 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_PUSH_BACK(ARRAY_EMPTY, 136)) == 136 END
+BEGIN BOOST_PP_ARRAY_ELEM(1, BOOST_PP_ARRAY_PUSH_BACK(ARRAY_ONE, 245)) == 245 END
+
+// push_front
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_FRONT(ARRAY, 555)) == 4 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_FRONT(ARRAY_LARGE, 666)) == 34 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_FRONT(ARRAY_EMPTY, 10)) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_PUSH_FRONT(ARRAY_ONE, 131)) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_PUSH_FRONT(ARRAY, 555)) == 555 END
+BEGIN BOOST_PP_ARRAY_ELEM(33, BOOST_PP_ARRAY_PUSH_FRONT(ARRAY_LARGE, 33)) == 32 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_PUSH_FRONT(ARRAY_EMPTY, 136)) == 136 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_PUSH_FRONT(ARRAY_ONE, 56)) == 56 END
+
+// remove
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REMOVE(ARRAY_ONE, 0)) == 0 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REMOVE(ARRAY, 1)) == 2 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REMOVE(ARRAY_LARGE, 17)) == 32 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REMOVE(ARRAY_VERY_LARGE, 27)) == 63 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_REMOVE(ARRAY, 2)) == 0 END
+BEGIN BOOST_PP_ARRAY_ELEM(29, BOOST_PP_ARRAY_REMOVE(ARRAY_LARGE, 25)) == 30 END
+BEGIN BOOST_PP_ARRAY_ELEM(62, BOOST_PP_ARRAY_REMOVE(ARRAY_VERY_LARGE, 48)) == 63 END
+
+// replace
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REPLACE(ARRAY_ONE, 0, 3)) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REPLACE(ARRAY_VERY_LARGE, 27, 1000)) == 64 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_REPLACE(ARRAY_ONE, 0, 68)) == 68 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_REPLACE(ARRAY, 1, 44)) == 0 END
+BEGIN BOOST_PP_ARRAY_ELEM(29, BOOST_PP_ARRAY_REPLACE(ARRAY_LARGE, 29, 999)) == 999 END
+BEGIN BOOST_PP_ARRAY_ELEM(38, BOOST_PP_ARRAY_REPLACE(ARRAY_VERY_LARGE, 37, 1)) == 38 END
+BEGIN BOOST_PP_ARRAY_ELEM(28, BOOST_PP_ARRAY_REPLACE(ARRAY_VERY_LARGE, 28, 1)) == 1 END
+
+// reverse
+
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REVERSE(ARRAY_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_REVERSE(ARRAY_ONE))) == 1 END
+BEGIN BOOST_PP_ARRAY_ELEM(0, BOOST_PP_ARRAY_REVERSE(ARRAY)) == 2 END
+BEGIN BOOST_PP_ARRAY_ELEM(29, BOOST_PP_ARRAY_REVERSE(ARRAY_LARGE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(38, BOOST_PP_ARRAY_REVERSE(ARRAY_VERY_LARGE)) == 25 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REVERSE(ARRAY_EMPTY)) == 0 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_ARRAY_REVERSE(ARRAY_ONE)) == 1 END
diff --git a/third_party/boostorg/preprocessor/test/comparison.c b/third_party/boostorg/preprocessor/test/comparison.c
new file mode 100644
index 0000000..5f7daea
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/comparison.c
@@ -0,0 +1,13 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/comparison.cxx>
+
diff --git a/third_party/boostorg/preprocessor/test/comparison.cpp b/third_party/boostorg/preprocessor/test/comparison.cpp
new file mode 100644
index 0000000..40720c6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/comparison.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/comparison.cxx>
diff --git a/third_party/boostorg/preprocessor/test/comparison.cxx b/third_party/boostorg/preprocessor/test/comparison.cxx
new file mode 100644
index 0000000..77e7b1a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/comparison.cxx
@@ -0,0 +1,45 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/comparison.hpp>
+# include <libs/preprocessor/test/test.h>
+
+/* equality */
+
+BEGIN BOOST_PP_EQUAL(2, 0) == 0 END
+BEGIN BOOST_PP_EQUAL(2, 2) == 1 END
+
+/* inequality */
+
+BEGIN BOOST_PP_NOT_EQUAL(2, 0) == 1 END
+BEGIN BOOST_PP_NOT_EQUAL(2, 2) == 0 END
+
+/* less */
+
+BEGIN BOOST_PP_LESS(2, 1) == 0 END
+BEGIN BOOST_PP_LESS(1, 2) == 1 END
+
+/* less_equal */
+
+BEGIN BOOST_PP_LESS_EQUAL(2, 1) == 0 END
+BEGIN BOOST_PP_LESS_EQUAL(1, 2) == 1 END
+BEGIN BOOST_PP_LESS_EQUAL(2, 2) == 1 END
+
+/* greater */
+
+BEGIN BOOST_PP_GREATER(2, 1) == 1 END
+BEGIN BOOST_PP_GREATER(1, 2) == 0 END
+
+/* greater_equal */
+
+BEGIN BOOST_PP_GREATER_EQUAL(2, 1) == 1 END
+BEGIN BOOST_PP_GREATER_EQUAL(1, 2) == 0 END
+BEGIN BOOST_PP_GREATER_EQUAL(2, 2) == 1 END
diff --git a/third_party/boostorg/preprocessor/test/config_info.cpp b/third_party/boostorg/preprocessor/test/config_info.cpp
new file mode 100644
index 0000000..ce92887
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/config_info.cpp
@@ -0,0 +1,93 @@
+#include <iostream>
+#include <iomanip>
+#include <string.h>
+#include <boost/preprocessor/stringize.hpp>
+
+static unsigned int indent = 4;
+static unsigned int width = 40;
+
+using std::cout;
+using std::istream;
+
+void print_separator()
+{
+ std::cout <<
+"\n\n*********************************************************************\n\n";
+}
+
+void print_macro(const char* name, const char* value)
+{
+ // if name == value+1 then then macro is not defined,
+ // in which case we don't print anything:
+ if(0 != strcmp(name, value+1))
+ {
+ for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << std::setw(width);
+ cout.setf(istream::left, istream::adjustfield);
+ std::cout << name;
+ if(value[1])
+ {
+ // macro has a value:
+ std::cout << value << "\n";
+ }
+ else
+ {
+ // macro is defined but has no value:
+ std::cout << " [no value]\n";
+ }
+ }
+}
+
+#define PRINT_MACRO(X) print_macro(#X, BOOST_PP_STRINGIZE(=X))
+
+void print_macros()
+{
+
+ print_separator();
+
+ PRINT_MACRO(__GCCXML__);
+ PRINT_MACRO(__WAVE__);
+ PRINT_MACRO(__MWERKS__);
+ PRINT_MACRO(__EDG__);
+ PRINT_MACRO(_MSC_VER);
+ PRINT_MACRO(__clang__);
+ PRINT_MACRO(__DMC__);
+ PRINT_MACRO(__BORLANDC__);
+ PRINT_MACRO(__IBMC__);
+ PRINT_MACRO(__IBMCPP__);
+ PRINT_MACRO(__SUNPRO_CC);
+ PRINT_MACRO(__CUDACC__);
+ PRINT_MACRO(__PATHSCALE__);
+ PRINT_MACRO(__CODEGEARC__);
+ PRINT_MACRO(__HP_aCC);
+ PRINT_MACRO(__SC__);
+ PRINT_MACRO(__MRC__);
+ PRINT_MACRO(__PGI);
+ PRINT_MACRO(__INTEL_COMPILER);
+ PRINT_MACRO(__GNUC__);
+ PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__);
+
+ print_separator();
+
+ PRINT_MACRO(__cplusplus);
+ PRINT_MACRO(__STDC_VERSION__);
+ PRINT_MACRO(__EDG_VERSION__);
+ PRINT_MACRO(__INTELLISENSE__);
+ PRINT_MACRO(__WAVE_HAS_VARIADICS__);
+
+ print_separator();
+
+ PRINT_MACRO(BOOST_PP_CONFIG_ERRORS);
+ PRINT_MACRO(BOOST_PP_CONFIG_EXTENDED_LINE_INFO);
+ PRINT_MACRO(BOOST_PP_CONFIG_FLAGS());
+ PRINT_MACRO(BOOST_PP_VARIADICS);
+ PRINT_MACRO(BOOST_PP_VARIADICS_MSVC);
+}
+
+int main()
+{
+
+ print_macros();
+
+ return 0;
+}
diff --git a/third_party/boostorg/preprocessor/test/control.c b/third_party/boostorg/preprocessor/test/control.c
new file mode 100644
index 0000000..db729d9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/control.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/control.cxx>
diff --git a/third_party/boostorg/preprocessor/test/control.cpp b/third_party/boostorg/preprocessor/test/control.cpp
new file mode 100644
index 0000000..db729d9
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/control.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/control.cxx>
diff --git a/third_party/boostorg/preprocessor/test/control.cxx b/third_party/boostorg/preprocessor/test/control.cxx
new file mode 100644
index 0000000..0a2bb76
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/control.cxx
@@ -0,0 +1,40 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# include <boost/preprocessor/control.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define TR(x) 1
+
+BEGIN BOOST_PP_EXPR_IIF(0, TR)(0) == 0 END
+BEGIN BOOST_PP_EXPR_IIF(1, TR)(0) == 1 END
+
+BEGIN BOOST_PP_EXPR_IF(3, TR)(0) == 1 END
+BEGIN BOOST_PP_EXPR_IF(0, TR)(0) == 0 END
+
+BEGIN BOOST_PP_IIF(0, 1, 0) == 0 END
+BEGIN BOOST_PP_IIF(1, 1, 0) == 1 END
+
+BEGIN BOOST_PP_IF(0, 1, 0) == 0 END
+BEGIN BOOST_PP_IF(9, 1, 0) == 1 END
+
+# define PRED(d, state) state
+# define OP_1(d, state) BOOST_PP_DEC(state)
+
+BEGIN BOOST_PP_WHILE(PRED, OP_1, 50) == 0 END
+
+# define OP_2(d, state) BOOST_PP_DEC(BOOST_PP_ADD(BOOST_PP_WHILE(PRED, OP_1, state), state))
+# define OP_3(d, state) BOOST_PP_DEC(BOOST_PP_ADD_D(d, BOOST_PP_WHILE_ ## d(PRED, OP_1, state), state))
+
+BEGIN BOOST_PP_WHILE(PRED, OP_2, 10) == 0 END
+BEGIN BOOST_PP_WHILE(PRED, OP_3, 10) == 0 END
diff --git a/third_party/boostorg/preprocessor/test/debug.c b/third_party/boostorg/preprocessor/test/debug.c
new file mode 100644
index 0000000..7325e33
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/debug.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/debug.cxx>
diff --git a/third_party/boostorg/preprocessor/test/debug.cpp b/third_party/boostorg/preprocessor/test/debug.cpp
new file mode 100644
index 0000000..7325e33
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/debug.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/debug.cxx>
diff --git a/third_party/boostorg/preprocessor/test/debug.cxx b/third_party/boostorg/preprocessor/test/debug.cxx
new file mode 100644
index 0000000..6c4c5fa
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/debug.cxx
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/debug.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN sizeof(BOOST_PP_ASSERT_MSG(0, "text") "") / sizeof(char) != 1 END
+BEGIN sizeof(BOOST_PP_ASSERT_MSG(1, "text") "") / sizeof(char) == 1 END
+
+BOOST_PP_ASSERT(10)
+
+# line BOOST_PP_LINE(100, __FILE__)
+BEGIN __LINE__ == 100 END
diff --git a/third_party/boostorg/preprocessor/test/facilities.c b/third_party/boostorg/preprocessor/test/facilities.c
new file mode 100644
index 0000000..25cef08
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/facilities.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/facilities.cxx>
diff --git a/third_party/boostorg/preprocessor/test/facilities.cpp b/third_party/boostorg/preprocessor/test/facilities.cpp
new file mode 100644
index 0000000..25cef08
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/facilities.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/facilities.cxx>
diff --git a/third_party/boostorg/preprocessor/test/facilities.cxx b/third_party/boostorg/preprocessor/test/facilities.cxx
new file mode 100644
index 0000000..772c2cf
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/facilities.cxx
@@ -0,0 +1,55 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/facilities.hpp>
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/mul.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_APPLY(BOOST_PP_NIL) 0 == 0 END
+BEGIN BOOST_PP_APPLY((0)) == 0 END
+
+BEGIN BOOST_PP_APPLY((BOOST_PP_EMPTY))() 0 == 0 END
+
+# define MACRO(x, y, z) 1
+# define ARGS (1, 2, 3)
+
+BEGIN BOOST_PP_EXPAND(MACRO ARGS) == 1 END
+
+BEGIN BOOST_PP_IDENTITY(1)() == 1 END
+BEGIN BOOST_PP_IDENTITY_N(36,10)(0,1,2,3,4,5,6,7,8,9) == 36 END
+
+BEGIN BOOST_PP_CAT(BOOST_PP_INTERCEPT, 2) 1 == 1 END
+
+#if BOOST_PP_VARIADICS
+
+#define OVMAC_1(x) BOOST_PP_ADD(x,5)
+#define OVMAC_2(x,y) BOOST_PP_ADD(x,y)
+#define OVMAC_3(x,y,z) BOOST_PP_ADD(BOOST_PP_MUL(x,y),z)
+#define OVMAC_4(x,y,z,a) BOOST_PP_ADD(BOOST_PP_MUL(x,y),BOOST_PP_MUL(a,z))
+
+#if BOOST_PP_VARIADICS_MSVC
+
+#define OVTEST(...) BOOST_PP_CAT(BOOST_PP_OVERLOAD(OVMAC_,__VA_ARGS__)(__VA_ARGS__),BOOST_PP_EMPTY())
+
+#else
+
+#define OVTEST(...) BOOST_PP_OVERLOAD(OVMAC_,__VA_ARGS__)(__VA_ARGS__)
+
+#endif
+
+BEGIN OVTEST(3,4,5) == 17 END
+BEGIN OVTEST(9,3,2,7) == 41 END
+BEGIN OVTEST(8) == 13 END
+BEGIN OVTEST(24,61) == 85 END
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/isempty.c b/third_party/boostorg/preprocessor/test/isempty.c
new file mode 100644
index 0000000..bd4c2c6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/isempty.cxx>
diff --git a/third_party/boostorg/preprocessor/test/isempty.cpp b/third_party/boostorg/preprocessor/test/isempty.cpp
new file mode 100644
index 0000000..bd4c2c6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/isempty.cxx>
diff --git a/third_party/boostorg/preprocessor/test/isempty.cxx b/third_party/boostorg/preprocessor/test/isempty.cxx
new file mode 100644
index 0000000..56bc81b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty.cxx
@@ -0,0 +1,145 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/config/config.hpp>
+#
+#if (BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()) || (BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC())
+
+# include <boost/preprocessor/facilities/empty.hpp>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#define DATA
+#define OBJECT OBJECT2
+#define OBJECT2
+#define FUNC(x) FUNC2(x)
+#define FUNC2(x)
+#define FUNC_GEN() ()
+#define FUNC_GEN2(x) ()
+#define FUNC_GEN3() (&)
+#define FUNC_GEN4(x) (y)
+#define FUNC_GEN5() (y,z)
+#define FUNC_GEN6() anything
+#define FUNC_GEN7(x) anything
+#define FUNC_GEN8(x,y) (1,2,3)
+#define FUNC_GEN9(x,y,z) anything
+#define FUNC_GEN10(x) (y) data
+#define NAME &name
+#define ATUPLE (atuple)
+#define ATUPLE_PLUS (atuple) data
+
+#if BOOST_PP_VARIADICS
+
+#if BOOST_PP_VARIADICS_MSVC /* Testing the VC++ variadic version */
+
+/* INCORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN2) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN3) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN4) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN5) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN10) == 1 END
+
+/* CORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == 0 END
+
+#else /* Testing the non-VC++ variadic version */
+
+/* CORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN2) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN3) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN4) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN5) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN10) == 0 END
+
+/* COMPILER ERROR */
+
+// BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 0 END
+// BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == 0 END
+
+#endif
+
+/* Testing the variadic version */
+
+/* CORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(DATA BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(x BOOST_PP_EMPTY()) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(OBJECT BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC(z) BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN6) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN7) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(NAME) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(ATUPLE) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(ATUPLE_PLUS) == 0 END
+
+#else
+
+#if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() /* Testing the VC++ non-variadic version */
+
+/* INCORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN2) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN3) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN4) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN5) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(ATUPLE) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN10) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(ATUPLE_PLUS) == 1 END
+
+/* CORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(NAME) == 0 END
+
+#else /* Testing the non-VC++ non-variadic version */
+
+/* CORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN2) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN3) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN4) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN5) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN10) == 0 END
+
+/* UNDEFINED BEHAVIOR */
+
+// BEGIN BOOST_PP_IS_EMPTY(ATUPLE) == 0 END
+// BEGIN BOOST_PP_IS_EMPTY(ATUPLE_PLUS) == 1 END
+// BEGIN BOOST_PP_IS_EMPTY(NAME) == 0 END
+
+#endif
+
+/* Testing the non-variadic version */
+
+/* CORRECT */
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(DATA BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(x BOOST_PP_EMPTY()) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(OBJECT BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC(z) BOOST_PP_EMPTY()) == 1 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN6) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN7) == 0 END
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == 0 END
+
+#endif
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.c b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.c
new file mode 100644
index 0000000..36f6ff7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/isempty_variadic_standard_failure.cxx>
diff --git a/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.cpp b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.cpp
new file mode 100644
index 0000000..36f6ff7
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/isempty_variadic_standard_failure.cxx>
diff --git a/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.cxx b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.cxx
new file mode 100644
index 0000000..feee25f
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure.cxx
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#if BOOST_PP_VARIADICS && (BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()) && !BOOST_PP_VARIADICS_MSVC
+
+#define FUNC_GEN8(x,y) (1,2,3)
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN8) == 0 END
+
+#else
+
+BEGIN 1 == 0 END
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.c b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.c
new file mode 100644
index 0000000..a2aa690
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/isempty_variadic_standard_failure2.cxx>
diff --git a/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.cpp b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.cpp
new file mode 100644
index 0000000..a2aa690
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/isempty_variadic_standard_failure2.cxx>
diff --git a/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.cxx b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.cxx
new file mode 100644
index 0000000..f51d497
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/isempty_variadic_standard_failure2.cxx
@@ -0,0 +1,25 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#if BOOST_PP_VARIADICS && (BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()) && !BOOST_PP_VARIADICS_MSVC
+
+#define FUNC_GEN9(x,y,z) anything
+
+BEGIN BOOST_PP_IS_EMPTY(FUNC_GEN9) == 0 END
+
+#else
+
+BEGIN 1 == 0 END
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/iteration.cpp b/third_party/boostorg/preprocessor/test/iteration.cpp
new file mode 100644
index 0000000..35494ef
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/iteration.cpp
@@ -0,0 +1,33 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !BOOST_PP_IS_SELFISH
+#
+# include <libs/preprocessor/test/iteration.h>
+#
+# define TEST(n) BEGIN n == n END
+#
+# define BOOST_PP_LOCAL_MACRO(n) TEST(n)
+# define BOOST_PP_LOCAL_LIMITS (1, 5)
+# include BOOST_PP_LOCAL_ITERATE()
+#
+# define BOOST_PP_LOCAL_MACRO(n) TEST(n)
+# define BOOST_PP_LOCAL_LIMITS (5, 1)
+# include BOOST_PP_LOCAL_ITERATE()
+#
+# define BOOST_PP_INDIRECT_SELF <libs/preprocessor/test/iteration.cpp>
+# include BOOST_PP_INCLUDE_SELF()
+#
+# else
+
+BEGIN BOOST_PP_IS_SELFISH == 1 END
+
+# endif
diff --git a/third_party/boostorg/preprocessor/test/iteration.h b/third_party/boostorg/preprocessor/test/iteration.h
new file mode 100644
index 0000000..97e676b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/iteration.h
@@ -0,0 +1,62 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if !BOOST_PP_IS_ITERATING
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/iteration.hpp>
+# include <libs/preprocessor/test/test.h>
+#
+# define NO_FLAGS
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (3, (1, 10, <libs/preprocessor/test/iteration.h>))
+# include BOOST_PP_ITERATE()
+#
+# undef NO_FLAGS
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, <libs/preprocessor/test/iteration.h>, 0x0001))
+# include BOOST_PP_ITERATE()
+#
+# define BOOST_PP_ITERATION_PARAMS_1 (4, (1, 5, <libs/preprocessor/test/iteration.h>, 0x0002))
+# include BOOST_PP_ITERATE()
+#
+# else
+# if defined NO_FLAGS
+
+struct BOOST_PP_CAT(X, BOOST_PP_ITERATION()) {
+ BEGIN
+ BOOST_PP_ITERATION() >= BOOST_PP_ITERATION_START() &&
+ BOOST_PP_ITERATION() <= BOOST_PP_ITERATION_FINISH()
+ END
+};
+
+# elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0x0001
+
+struct BOOST_PP_CAT(Y, BOOST_PP_ITERATION()) { };
+
+# elif BOOST_PP_ITERATION_DEPTH() == 1 \
+ && BOOST_PP_ITERATION_FLAGS() == 0x0002
+
+# define BOOST_PP_ITERATION_PARAMS_2 (3, (1, BOOST_PP_ITERATION(), <libs/preprocessor/test/iteration.h>))
+# include BOOST_PP_ITERATE()
+
+# elif BOOST_PP_ITERATION_DEPTH() == 2 \
+ && BOOST_PP_FRAME_FLAGS(1) == 0x0002
+
+struct BOOST_PP_CAT(Z, BOOST_PP_CAT(BOOST_PP_ITERATION(), BOOST_PP_RELATIVE_ITERATION(1))) { };
+
+# else
+#
+# error should not get here!
+#
+# endif
+# endif
diff --git a/third_party/boostorg/preprocessor/test/list.c b/third_party/boostorg/preprocessor/test/list.c
new file mode 100644
index 0000000..23bb7b1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/list.c
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/list.cxx>
diff --git a/third_party/boostorg/preprocessor/test/list.cpp b/third_party/boostorg/preprocessor/test/list.cpp
new file mode 100644
index 0000000..23bb7b1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/list.cpp
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/list.cxx>
diff --git a/third_party/boostorg/preprocessor/test/list.cxx b/third_party/boostorg/preprocessor/test/list.cxx
new file mode 100644
index 0000000..7c99d70
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/list.cxx
@@ -0,0 +1,91 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# include <boost/preprocessor/list.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define LISTNIL BOOST_PP_NIL
+# define LIST (4, (1, (5, (2, BOOST_PP_NIL))))
+# define REVERSAL(d, x, y) BOOST_PP_SUB_D(d, y, x)
+# define F1(r, state, x) + x + state
+# define FI2(r, state, i, x) BOOST_PP_IIF(BOOST_PP_EQUAL(i,1),+ x + x + state,+ x + state)
+# define F2(r, x) + BOOST_PP_TUPLE_ELEM(2, 0, x) + 2 - BOOST_PP_TUPLE_ELEM(2, 1, x)
+# define L1 (0, (x, BOOST_PP_NIL))
+# define L2 (a, (1, (b, (2, BOOST_PP_NIL))))
+# define L3 (c, (3, (d, BOOST_PP_NIL)))
+# define LL (L1, (L2, (L3, BOOST_PP_NIL)))
+
+BEGIN BOOST_PP_LIST_FIRST(LIST) == 4 END
+BEGIN BOOST_PP_LIST_IS_CONS(LIST) == 1 END
+BEGIN BOOST_PP_LIST_IS_CONS(LISTNIL) == 0 END
+BEGIN BOOST_PP_LIST_IS_NIL(LIST) == 0 END
+BEGIN BOOST_PP_LIST_IS_NIL(LISTNIL) == 1 END
+
+#if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_LIST_ENUM(LIST)) == 5 END
+
+#endif
+
+BEGIN BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_SUB_D, 22, LIST) == 10 END
+BEGIN BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_SUB_D, 22, LISTNIL) == 22 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_ADD_D, 0, LIST) == 12 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(BOOST_PP_ADD_D, 0, LISTNIL) == 0 END
+BEGIN BOOST_PP_LIST_FOLD_RIGHT(REVERSAL, 0, LIST) == 4 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_REVERSE(LIST)) == 2514 END
+BEGIN BOOST_PP_LIST_IS_NIL(BOOST_PP_LIST_REVERSE(LISTNIL)) == 1 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_REST_N(2, LIST)) == 52 END
+BEGIN BOOST_PP_LIST_IS_NIL(BOOST_PP_LIST_REST_N(0, LISTNIL)) == 1 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FIRST_N(2, LIST)) == 41 END
+
+BEGIN BOOST_PP_LIST_AT(LIST, 2) == 5 END
+BEGIN BOOST_PP_LIST_SIZE(LIST) == 4 END
+BEGIN BOOST_PP_LIST_SIZE(LISTNIL) == 0 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_TRANSFORM(BOOST_PP_ADD_D, 2, LIST)) == 6374 END
+BEGIN BOOST_PP_LIST_IS_NIL(BOOST_PP_LIST_TRANSFORM(BOOST_PP_ADD_D, 2, LISTNIL)) == 1 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_APPEND(BOOST_PP_LIST_REST(LIST), LIST)) == 1524152 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_APPEND(LIST,LISTNIL)) == 4152 END
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_APPEND(LISTNIL,LIST)) == 4152 END
+BEGIN BOOST_PP_LIST_IS_NIL(BOOST_PP_LIST_APPEND(LISTNIL,LISTNIL)) == 1 END
+
+BEGIN BOOST_PP_LIST_FOR_EACH(F1, 1, LIST) == 16 END
+BEGIN BOOST_PP_LIST_FOR_EACH_I(FI2, 1, LIST) == 17 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_LIST_TO_TUPLE(LIST)) == 2 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FILTER(BOOST_PP_LESS_D, 3, LIST)) == 45 END
+BEGIN BOOST_PP_LIST_IS_NIL(BOOST_PP_LIST_FILTER(BOOST_PP_LESS_D, 3, LISTNIL)) == 1 END
+
+BEGIN BOOST_PP_LIST_FOR_EACH_PRODUCT(F2, 2, ( (1, (0, BOOST_PP_NIL)), (2, (3, BOOST_PP_NIL)) )) == 0 END
+
+BEGIN BOOST_PP_LIST_CAT(BOOST_PP_LIST_FOLD_LEFT(BOOST_PP_LIST_APPEND_D, BOOST_PP_NIL, LL)) == 0x0a1b2c3d END
+
+BEGIN BOOST_PP_ARRAY_ELEM(2, BOOST_PP_LIST_TO_ARRAY(LIST)) == 5 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_LIST_TO_ARRAY(LISTNIL)) == 0 END
+BEGIN BOOST_PP_SEQ_ELEM(3, BOOST_PP_LIST_TO_SEQ(LIST)) == 2 END
diff --git a/third_party/boostorg/preprocessor/test/logical.c b/third_party/boostorg/preprocessor/test/logical.c
new file mode 100644
index 0000000..9f50287
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/logical.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/logical.cxx>
diff --git a/third_party/boostorg/preprocessor/test/logical.cpp b/third_party/boostorg/preprocessor/test/logical.cpp
new file mode 100644
index 0000000..9f50287
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/logical.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/logical.cxx>
diff --git a/third_party/boostorg/preprocessor/test/logical.cxx b/third_party/boostorg/preprocessor/test/logical.cxx
new file mode 100644
index 0000000..30bde7b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/logical.cxx
@@ -0,0 +1,59 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/logical.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_NOT(0) == 1 END
+BEGIN BOOST_PP_NOT(2) == 0 END
+
+BEGIN BOOST_PP_AND(0, 0) == 0 END
+BEGIN BOOST_PP_AND(0, 3) == 0 END
+BEGIN BOOST_PP_AND(4, 0) == 0 END
+BEGIN BOOST_PP_AND(5, 6) == 1 END
+
+BEGIN BOOST_PP_OR(0, 0) == 0 END
+BEGIN BOOST_PP_OR(0, 7) == 1 END
+BEGIN BOOST_PP_OR(8, 0) == 1 END
+BEGIN BOOST_PP_OR(9, 1) == 1 END
+
+BEGIN BOOST_PP_XOR(0, 0) == 0 END
+BEGIN BOOST_PP_XOR(0, 2) == 1 END
+BEGIN BOOST_PP_XOR(3, 0) == 1 END
+BEGIN BOOST_PP_XOR(4, 5) == 0 END
+
+BEGIN BOOST_PP_NOR(0, 0) == 1 END
+BEGIN BOOST_PP_NOR(0, 6) == 0 END
+BEGIN BOOST_PP_NOR(7, 0) == 0 END
+BEGIN BOOST_PP_NOR(8, 9) == 0 END
+
+BEGIN BOOST_PP_BOOL(22) == 1 END
+BEGIN BOOST_PP_BOOL(0) == 0 END
+
+BEGIN BOOST_PP_BITAND(0, 0) == 0 END
+BEGIN BOOST_PP_BITAND(0, 1) == 0 END
+BEGIN BOOST_PP_BITAND(1, 0) == 0 END
+BEGIN BOOST_PP_BITAND(1, 1) == 1 END
+
+BEGIN BOOST_PP_BITNOR(0, 0) == 1 END
+BEGIN BOOST_PP_BITNOR(0, 1) == 0 END
+BEGIN BOOST_PP_BITNOR(1, 0) == 0 END
+BEGIN BOOST_PP_BITNOR(1, 1) == 0 END
+
+BEGIN BOOST_PP_BITOR(0, 0) == 0 END
+BEGIN BOOST_PP_BITOR(0, 1) == 1 END
+BEGIN BOOST_PP_BITOR(1, 0) == 1 END
+BEGIN BOOST_PP_BITOR(1, 1) == 1 END
+
+BEGIN BOOST_PP_BITXOR(0, 0) == 0 END
+BEGIN BOOST_PP_BITXOR(0, 1) == 1 END
+BEGIN BOOST_PP_BITXOR(1, 0) == 1 END
+BEGIN BOOST_PP_BITXOR(1, 1) == 0 END
diff --git a/third_party/boostorg/preprocessor/test/punctuation.c b/third_party/boostorg/preprocessor/test/punctuation.c
new file mode 100644
index 0000000..8fc5dfc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/punctuation.c
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/punctuation.cxx>
diff --git a/third_party/boostorg/preprocessor/test/punctuation.cpp b/third_party/boostorg/preprocessor/test/punctuation.cpp
new file mode 100644
index 0000000..8fc5dfc
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/punctuation.cpp
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/punctuation.cxx>
diff --git a/third_party/boostorg/preprocessor/test/punctuation.cxx b/third_party/boostorg/preprocessor/test/punctuation.cxx
new file mode 100644
index 0000000..8e60e9a
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/punctuation.cxx
@@ -0,0 +1,54 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/punctuation.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define A_TUPLE (*,#,zz)
+# define A_TUPLE2 (*,#,(zz,44,(e7)))
+# define A_TUPLE_PLUS (mmf,34,^^,!) 456
+# define PLUS_ATUPLE yyt (j,ii%)
+# define JDATA ggh
+# define NOT_TUPLE y6()
+# define NOT_TUPLE2 &(kkkgg,(e))
+# define A_SEQ (r)($)(#)
+# define AN_ARRAY (4,(5,7,f,x))
+# define A_LIST (e,(g,(&,BOOST_PP_NIL)))
+# define DATA (5 + 3) * 4
+# define DATA2 4 * (5 + 3)
+# define DATA3 4 * (5 + 3) * (2 + 1)
+# define DATA4 (5 + 3) * (2 + 1) * 4
+
+
+// is_begin_parens
+
+BEGIN BOOST_PP_IS_BEGIN_PARENS() == 0 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(A_TUPLE) == 1 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(A_TUPLE2) == 1 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(A_TUPLE_PLUS) == 1 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(PLUS_ATUPLE) == 0 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(JDATA) == 0 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(NOT_TUPLE) == 0 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(NOT_TUPLE2) == 0 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(A_SEQ) == 1 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(AN_ARRAY) == 1 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS(A_LIST) == 1 END
+BEGIN BOOST_PP_IS_BEGIN_PARENS((y)2(x)) == 1 END
+
+// remove_parens
+
+BEGIN BOOST_PP_REMOVE_PARENS(DATA) == 17 END
+BEGIN BOOST_PP_REMOVE_PARENS(DATA2)== 32 END
+BEGIN BOOST_PP_REMOVE_PARENS(DATA3)== 96 END
+BEGIN BOOST_PP_REMOVE_PARENS(DATA4)== 41 END
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/repetition.cpp b/third_party/boostorg/preprocessor/test/repetition.cpp
new file mode 100644
index 0000000..9c5fe9b
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/repetition.cpp
@@ -0,0 +1,50 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/inc.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/comparison/not_equal.hpp>
+# include <boost/preprocessor/facilities/intercept.hpp>
+# include <boost/preprocessor/repetition.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define MAX 10
+
+# define NTH(z, n, data) data ## n
+
+int add(BOOST_PP_ENUM_PARAMS(MAX, int x)) {
+ return BOOST_PP_REPEAT(MAX, NTH, + x);
+}
+
+const int r = add(BOOST_PP_ENUM_PARAMS(MAX, 1 BOOST_PP_INTERCEPT));
+
+# define CONSTANT(z, n, text) BOOST_PP_CAT(text, n) = n
+const int BOOST_PP_ENUM(MAX, CONSTANT, default_param_);
+
+# define TEST(n) \
+ void BOOST_PP_CAT(test_enum_params, n)(BOOST_PP_ENUM_PARAMS(n, int x)); \
+ void BOOST_PP_CAT(test_enum_params_with_a_default, n)(BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(n, int x, 0)); \
+ void BOOST_PP_CAT(test_enum_params_with_defaults, n)(BOOST_PP_ENUM_PARAMS_WITH_DEFAULTS(n, int x, default_param_));
+
+TEST(0)
+TEST(MAX)
+
+template<BOOST_PP_ENUM_PARAMS(MAX, class T)> struct no_rescan;
+
+# define F1(z, n, p) p n
+BEGIN 1 + (4+5+6) BOOST_PP_REPEAT_FROM_TO(4, 7, F1, -) END
+
+# define PRED(r, state) BOOST_PP_NOT_EQUAL(state, BOOST_PP_INC(MAX))
+# define OP(r, state) BOOST_PP_INC(state)
+# define MACRO(r, state) BOOST_PP_COMMA_IF(BOOST_PP_NOT_EQUAL(state, 1)) BOOST_PP_CAT(class T, state)
+
+template<BOOST_PP_FOR(1, PRED, OP, MACRO)> struct for_test;
diff --git a/third_party/boostorg/preprocessor/test/selection.c b/third_party/boostorg/preprocessor/test/selection.c
new file mode 100644
index 0000000..f8fdaba
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/selection.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/selection.cxx>
diff --git a/third_party/boostorg/preprocessor/test/selection.cpp b/third_party/boostorg/preprocessor/test/selection.cpp
new file mode 100644
index 0000000..f8fdaba
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/selection.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/selection.cxx>
diff --git a/third_party/boostorg/preprocessor/test/selection.cxx b/third_party/boostorg/preprocessor/test/selection.cxx
new file mode 100644
index 0000000..b528934
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/selection.cxx
@@ -0,0 +1,21 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/selection.hpp>
+# include <libs/preprocessor/test/test.h>
+
+BEGIN BOOST_PP_MAX(2, 2) == 2 END
+BEGIN BOOST_PP_MAX(2, 1) == 2 END
+BEGIN BOOST_PP_MAX(1, 2) == 2 END
+
+BEGIN BOOST_PP_MIN(2, 2) == 2 END
+BEGIN BOOST_PP_MIN(2, 1) == 1 END
+BEGIN BOOST_PP_MIN(1, 2) == 1 END
diff --git a/third_party/boostorg/preprocessor/test/seq.c b/third_party/boostorg/preprocessor/test/seq.c
new file mode 100644
index 0000000..e36c5d1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/seq.c
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/seq.cxx>
diff --git a/third_party/boostorg/preprocessor/test/seq.cpp b/third_party/boostorg/preprocessor/test/seq.cpp
new file mode 100644
index 0000000..e36c5d1
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/seq.cpp
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/seq.cxx>
diff --git a/third_party/boostorg/preprocessor/test/seq.cxx b/third_party/boostorg/preprocessor/test/seq.cxx
new file mode 100644
index 0000000..0ff7e66
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/seq.cxx
@@ -0,0 +1,222 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/arithmetic/add.hpp>
+# include <boost/preprocessor/arithmetic/mod.hpp>
+# include <boost/preprocessor/arithmetic/sub.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/comparison/equal.hpp>
+# include <boost/preprocessor/comparison/less.hpp>
+# include <boost/preprocessor/control/iif.hpp>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# include <boost/preprocessor/logical/not.hpp>
+# include <boost/preprocessor/seq.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# include <boost/preprocessor/variadic/size.hpp>
+# include <libs/preprocessor/test/test.h>
+
+# define SEQ_NONE ()
+# define SEQ (4)(1)(5)(2)
+
+# define SEQ_100 \
+ (1)(2)(3)(4)(5)(6)(7)(8)(9) \
+ (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \
+ (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \
+ (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \
+ (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \
+ (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \
+ (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \
+ (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \
+ (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \
+ (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \
+ (100)
+
+# define SEQ_255 \
+ (1)(2)(3)(4)(5)(6)(7)(8)(9) \
+ (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \
+ (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \
+ (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \
+ (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \
+ (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \
+ (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \
+ (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \
+ (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \
+ (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \
+ (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \
+ (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \
+ (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \
+ (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \
+ (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \
+ (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \
+ (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \
+ (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \
+ (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \
+ (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \
+ (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \
+ (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \
+ (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \
+ (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \
+ (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \
+ (250)(251)(252)(253)(254)(255)
+
+# define SEQ_256 SEQ_255(256)
+
+# define SEQVAR (4,5,8,3,61)(1,0)(5,22,43)(2)(17,45,33)
+
+# define REVERSAL(s, x, y) BOOST_PP_SUB(y, x)
+# define SUB_S(s, x, y) BOOST_PP_SUB(x, y)
+# define ADD_S(s, x, y) BOOST_PP_ADD(x, y)
+# define CAT_S(s, x, y) BOOST_PP_CAT(x, BOOST_PP_IS_EMPTY(y))
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_HEAD(SEQ_NONE)) == 1 END
+BEGIN BOOST_PP_SEQ_HEAD(SEQ) == 4 END
+BEGIN BOOST_PP_SEQ_HEAD(SEQ_255) == 1 END
+BEGIN BOOST_PP_SEQ_HEAD(SEQ_256) == 1 END
+
+BEGIN BOOST_PP_SEQ_FOLD_LEFT(CAT_S, 1, SEQ_NONE) == 11 END
+BEGIN BOOST_PP_SEQ_FOLD_LEFT(SUB_S, 22, SEQ) == 10 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(CAT_S, 2, SEQ_NONE) == 21 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(ADD_S, 0, SEQ) == 12 END
+BEGIN BOOST_PP_SEQ_FOLD_RIGHT(REVERSAL, 0, SEQ) == 4 END
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REVERSE(SEQ_NONE))) == 1 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REVERSE(SEQ)) == 2514 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(2, SEQ)) == 52 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(99, SEQ_100)) == 100 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REST_N(255, SEQ_256)) == 256 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FIRST_N(1, SEQ_NONE))) == 1 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FIRST_N(2, SEQ)) == 41 END
+BEGIN BOOST_PP_SEQ_ELEM(50,BOOST_PP_SEQ_FIRST_N(100, SEQ_100)) == 51 END
+BEGIN BOOST_PP_SEQ_ELEM(100,BOOST_PP_SEQ_FIRST_N(255, SEQ_255)) == 101 END
+BEGIN BOOST_PP_SEQ_ELEM(200,BOOST_PP_SEQ_FIRST_N(256, SEQ_256)) == 201 END
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_ELEM(0, SEQ_NONE)) == 1 END
+BEGIN BOOST_PP_SEQ_SIZE(SEQ_NONE) == 1 END
+BEGIN BOOST_PP_SEQ_ELEM(2, SEQ) == 5 END
+BEGIN BOOST_PP_SEQ_ELEM(20, SEQ_255) == 21 END
+BEGIN BOOST_PP_SEQ_ELEM(254, SEQ_255) == 255 END
+BEGIN BOOST_PP_SEQ_ELEM(220, SEQ_256) == 221 END
+BEGIN BOOST_PP_SEQ_ELEM(255, SEQ_256) == 256 END
+BEGIN BOOST_PP_SEQ_SIZE(SEQ) == 4 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TRANSFORM(CAT_S, 13, SEQ_NONE)) == 131 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TRANSFORM(ADD_S, 2, SEQ)) == 6374 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(SEQ) SEQ) == 1524152 END
+
+# define F1(r, state, x) + x + state
+# define FI2(r, state, i, x) BOOST_PP_IIF(BOOST_PP_EQUAL(i,2),+ x + x + state,+ x + state)
+BEGIN BOOST_PP_SEQ_FOR_EACH(F1, 1, SEQ) == 16 END
+BEGIN BOOST_PP_SEQ_FOR_EACH_I(FI2, 1, SEQ) == 21 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_TO_TUPLE(SEQ)) == 2 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1, 0, BOOST_PP_SEQ_TO_TUPLE(SEQ_NONE))) == 1 END
+
+#if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_SEQ_TO_TUPLE(SEQ_NONE)) == 1 END
+
+#endif
+
+BEGIN BOOST_PP_ARRAY_ELEM(3, BOOST_PP_SEQ_TO_ARRAY(SEQ)) == 2 END
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_ARRAY_ELEM(0, BOOST_PP_SEQ_TO_ARRAY(SEQ_NONE))) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_SEQ_TO_ARRAY(SEQ_NONE)) == 1 END
+
+# define LESS_S(s, x, y) BOOST_PP_LESS(x, y)
+# define FILTER_MOD_S(s, data, elem) BOOST_PP_NOT(BOOST_PP_MOD(elem,data))
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_FILTER(LESS_S, 3, SEQ)) == 45 END
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_SEQ_FILTER(FILTER_MOD_S, 20, SEQ_100)) == 100 END
+BEGIN BOOST_PP_SEQ_ELEM(2,BOOST_PP_SEQ_FILTER(FILTER_MOD_S, 30, SEQ_100)) == 90 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ_NONE, 0, 7)) == 7 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 0, 3)) == 34152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 2, 3)) == 41352 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_INSERT(SEQ, 4, 3)) == 41523 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_INSERT(SEQ_255, 0, 100)) == 256 END
+BEGIN BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_INSERT(SEQ_255, 0, 100)) == 255 END
+BEGIN BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_INSERT(SEQ_255, 0, 113)) == 113 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_BACK(SEQ)) == 415 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_BACK(SEQ_256)) == 255 END
+BEGIN BOOST_PP_SEQ_ELEM(254,BOOST_PP_SEQ_POP_BACK(SEQ_256)) == 255 END
+BEGIN BOOST_PP_SEQ_ELEM(100,BOOST_PP_SEQ_POP_BACK(SEQ_256)) == 101 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_POP_FRONT(SEQ)) == 152 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_POP_FRONT(SEQ_256)) == 255 END
+BEGIN BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_POP_FRONT(SEQ_256)) == 2 END
+BEGIN BOOST_PP_SEQ_ELEM(254,BOOST_PP_SEQ_POP_FRONT(SEQ_256)) == 256 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_FRONT(SEQ_NONE, 145)) == 145 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_FRONT(SEQ, 3)) == 34152 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_FRONT(SEQ_255, 57)) == 256 END
+BEGIN BOOST_PP_SEQ_ELEM(0,BOOST_PP_SEQ_PUSH_FRONT(SEQ_255, 222)) == 222 END
+BEGIN BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_PUSH_FRONT(SEQ_255, 111)) == 255 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_BACK(SEQ_NONE, 79)) == 79 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_PUSH_BACK(SEQ, 3)) == 41523 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_PUSH_BACK(SEQ_255, 199)) == 256 END
+BEGIN BOOST_PP_SEQ_ELEM(254,BOOST_PP_SEQ_PUSH_BACK(SEQ_255, 99)) == 255 END
+BEGIN BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_PUSH_BACK(SEQ_255, 99)) == 99 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 0)) == 152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 2)) == 412 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REMOVE(SEQ, 3)) == 415 END
+
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REMOVE(SEQ_255, 254)) == 254 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REMOVE(SEQ_256, 255)) == 255 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ_NONE, 0, 22)) == 22 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 0, 3)) == 3152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 1, 3)) == 4352 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_REPLACE(SEQ, 3, 3)) == 4153 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_REPLACE(SEQ_256, 255, 22)) == 256 END
+BEGIN BOOST_PP_SEQ_ELEM(233,BOOST_PP_SEQ_REPLACE(SEQ_256, 255, 22)) == 234 END
+BEGIN BOOST_PP_SEQ_ELEM(255,BOOST_PP_SEQ_REPLACE(SEQ_256, 255, 22)) == 22 END
+
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 0, 4)) == 4152 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 0, 2)) == 41 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 1, 2)) == 15 END
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_SUBSEQ(SEQ, 2, 2)) == 52 END
+
+# define F2(r, x) + BOOST_PP_SEQ_ELEM(0, x) + 2 - BOOST_PP_SEQ_ELEM(1, x)
+
+#define ADD_NIL(x) x(nil)
+
+BEGIN BOOST_PP_SEQ_FOR_EACH_PRODUCT(F2, ((1)(0)) ((2)(3))) == 0 END
+
+# define L1 (0)(x)
+# define L2 (a)(1)(b)(2)
+# define L3 (c)(3)(d)
+
+# define LL (L1)(L2)(L3)
+
+#define SEQ_APPEND(s, state, elem) state elem
+BEGIN BOOST_PP_SEQ_CAT(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND, (~), LL))) == 0x0a1b2c3d END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(BOOST_PP_SEQ_FOLD_LEFT(SEQ_APPEND, (~), LL))) == 9 END
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ), 2) == 5 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_LIST_AT(BOOST_PP_SEQ_TO_LIST(SEQ_NONE),0)) == 1 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_SEQ_TO_LIST(SEQ_NONE)) == 1 END
+
+#if BOOST_PP_VARIADICS
+
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_SEQ_ENUM(SEQ_NONE)) == 1 END
+BEGIN BOOST_PP_VARIADIC_ELEM(0,BOOST_PP_SEQ_ENUM(SEQ)) == 4 END
+BEGIN BOOST_PP_TUPLE_ELEM(2,BOOST_PP_SEQ_ELEM(0,BOOST_PP_VARIADIC_SEQ_TO_SEQ(SEQVAR))) == 8 END
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/slot.c b/third_party/boostorg/preprocessor/test/slot.c
new file mode 100644
index 0000000..4b97bcd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/slot.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/slot.cxx>
diff --git a/third_party/boostorg/preprocessor/test/slot.cpp b/third_party/boostorg/preprocessor/test/slot.cpp
new file mode 100644
index 0000000..4b97bcd
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/slot.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/slot.cxx>
diff --git a/third_party/boostorg/preprocessor/test/slot.cxx b/third_party/boostorg/preprocessor/test/slot.cxx
new file mode 100644
index 0000000..2b5b3f8
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/slot.cxx
@@ -0,0 +1,53 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/slot.hpp>
+# include <libs/preprocessor/test/test.h>
+# include <boost/preprocessor/slot/counter.hpp>
+
+# define X() 4
+
+# define BOOST_PP_VALUE 1 + 2 + 3 + X()
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+# undef X
+
+BEGIN BOOST_PP_SLOT(1) == 10 END
+
+# define BOOST_PP_VALUE BOOST_PP_SLOT(1) * BOOST_PP_SLOT(1)
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+BEGIN BOOST_PP_SLOT(1) == 100 END
+
+BEGIN BOOST_PP_COUNTER == 0 END
+
+#include BOOST_PP_UPDATE_COUNTER()
+
+BEGIN BOOST_PP_COUNTER == 1 END
+
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+
+BEGIN BOOST_PP_COUNTER == 3 END
+
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+
+BEGIN BOOST_PP_COUNTER == 6 END
+
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+#include BOOST_PP_UPDATE_COUNTER()
+
+BEGIN BOOST_PP_COUNTER == 11 END
diff --git a/third_party/boostorg/preprocessor/test/test.h b/third_party/boostorg/preprocessor/test/test.h
new file mode 100644
index 0000000..a5b37d6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/test.h
@@ -0,0 +1,37 @@
+# /* Copyright (C) 2001
+# * Housemarque Oy
+# * http://www.housemarque.com
+# *
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_H
+# define BOOST_LIBS_PREPROCESSOR_REGRESSION_TEST_H
+#
+# include <boost/preprocessor/cat.hpp>
+#
+# define BEGIN typedef int BOOST_PP_CAT(test_, __LINE__)[((
+# define END )==1) ? 1 : -1];
+
+#if defined(__cplusplus)
+#include <cstdio>
+#if !defined(_STLP_MSVC) || _STLP_MSVC >= 1300
+namespace std { }
+using namespace std;
+#endif
+#else
+#include <stdio.h>
+#endif
+
+int main(void) {
+ printf("pass " __TIME__);
+ return 0;
+}
+
+# endif
diff --git a/third_party/boostorg/preprocessor/test/tuple.c b/third_party/boostorg/preprocessor/test/tuple.c
new file mode 100644
index 0000000..e9864a0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/tuple.c
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/tuple.cxx>
diff --git a/third_party/boostorg/preprocessor/test/tuple.cpp b/third_party/boostorg/preprocessor/test/tuple.cpp
new file mode 100644
index 0000000..e9864a0
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/tuple.cpp
@@ -0,0 +1,14 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/tuple.cxx>
diff --git a/third_party/boostorg/preprocessor/test/tuple.cxx b/third_party/boostorg/preprocessor/test/tuple.cxx
new file mode 100644
index 0000000..0f334f4
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/tuple.cxx
@@ -0,0 +1,266 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* Revised by Edward Diener (2011,2014) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/facilities/is_empty.hpp>
+# if BOOST_PP_VARIADICS
+# include <boost/preprocessor/variadic/size.hpp>
+# include <boost/preprocessor/variadic/elem.hpp>
+# endif
+# include <libs/preprocessor/test/test.h>
+# include <libs/preprocessor/test/tuple_elem_bug_test.cxx>
+
+# define TUPLE (0, 1, 2, 3, 4, 5)
+# define TUPLE_NONE ()
+# define TUPLE_LARGE (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
+# define TUPLE_VERY_LARGE (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)
+# define T2 (+3, /2, +6)
+
+#if BOOST_PP_VARIADICS
+
+# define CALC(x) BOOST_PP_TUPLE_ELEM(0, x) BOOST_PP_TUPLE_ELEM(1, x) BOOST_PP_TUPLE_ELEM(2, x)
+# define TEST_EAT BOOST_PP_TUPLE_EAT()(1, 2) 4
+# define TEST_EAT_NONE BOOST_PP_TUPLE_EAT()() 17
+# define TEST_EAT_LARGE BOOST_PP_TUPLE_EAT()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) 6
+# define TEST_EAT_VERY_LARGE BOOST_PP_TUPLE_EAT()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) 8
+
+#else
+
+# define CALC(x) BOOST_PP_TUPLE_ELEM(3, 0, x) BOOST_PP_TUPLE_ELEM(3, 1, x) BOOST_PP_TUPLE_ELEM(3, 2, x)
+# define TEST_EAT BOOST_PP_TUPLE_EAT(2)(1, 2) 4
+# define TEST_EAT_NONE BOOST_PP_TUPLE_EAT(1)() 17
+# define TEST_EAT_LARGE BOOST_PP_TUPLE_EAT(33)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) 6
+# define TEST_EAT_VERY_LARGE BOOST_PP_TUPLE_EAT(64)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) 8
+
+#endif
+
+// elem
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1, 0, TUPLE_NONE)) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 3, TUPLE) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 5, TUPLE) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 15, TUPLE_LARGE) == 15 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 27, TUPLE_LARGE) == 27 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 32, TUPLE_LARGE) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 22, TUPLE_VERY_LARGE) == 22 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 47, TUPLE_VERY_LARGE) == 47 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 63, TUPLE_VERY_LARGE) == 63 END
+
+// reverse
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(1, 0, BOOST_PP_TUPLE_REVERSE(1,TUPLE_NONE))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(6, 2, BOOST_PP_TUPLE_REVERSE(6,TUPLE)) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, 27, BOOST_PP_TUPLE_REVERSE(33,TUPLE_LARGE)) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(64, 43, BOOST_PP_TUPLE_REVERSE(64,TUPLE_VERY_LARGE)) == 20 END
+BEGIN CALC(T2) == 7 END
+BEGIN CALC(BOOST_PP_TUPLE_REVERSE(3, T2)) == 6 END
+
+// eat
+
+BEGIN TEST_EAT == 4 END
+BEGIN TEST_EAT_NONE == 17 END
+BEGIN TEST_EAT_LARGE == 6 END
+BEGIN TEST_EAT_VERY_LARGE == 8 END
+
+// to_array
+
+BEGIN BOOST_PP_ARRAY_ELEM(3,BOOST_PP_TUPLE_TO_ARRAY(6,TUPLE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(29,BOOST_PP_TUPLE_TO_ARRAY(33,TUPLE_LARGE)) == 29 END
+BEGIN BOOST_PP_ARRAY_ELEM(61,BOOST_PP_TUPLE_TO_ARRAY(64,TUPLE_VERY_LARGE)) == 61 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_ARRAY_ELEM(0,BOOST_PP_TUPLE_TO_ARRAY(1,TUPLE_NONE))) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_TO_ARRAY(1,TUPLE_NONE)) == 1 END
+
+// to_list
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(6,TUPLE), 2) == 2 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(33,TUPLE_LARGE), 19) == 19 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(64,TUPLE_VERY_LARGE), 62) == 62 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(1,TUPLE_NONE), 0)) == 1 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_TUPLE_TO_LIST(1,TUPLE_NONE)) == 1 END
+
+// to_seq
+
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_TUPLE_TO_SEQ(6,TUPLE)) == 4 END
+BEGIN BOOST_PP_SEQ_ELEM(31,BOOST_PP_TUPLE_TO_SEQ(33,TUPLE_LARGE)) == 31 END
+BEGIN BOOST_PP_SEQ_ELEM(55,BOOST_PP_TUPLE_TO_SEQ(64,TUPLE_VERY_LARGE)) == 55 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_ELEM(0,BOOST_PP_TUPLE_TO_SEQ(1,TUPLE_NONE))) == 1 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_TO_SEQ(1,TUPLE_NONE)) == 1 END
+
+#if BOOST_PP_VARIADICS
+
+// elem
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0, TUPLE_NONE)) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(3, TUPLE) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(5, TUPLE) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(15, TUPLE_LARGE) == 15 END
+BEGIN BOOST_PP_TUPLE_ELEM(27, TUPLE_LARGE) == 27 END
+BEGIN BOOST_PP_TUPLE_ELEM(32, TUPLE_LARGE) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(22, TUPLE_VERY_LARGE) == 22 END
+BEGIN BOOST_PP_TUPLE_ELEM(47, TUPLE_VERY_LARGE) == 47 END
+BEGIN BOOST_PP_TUPLE_ELEM(63, TUPLE_VERY_LARGE) == 63 END
+
+// reverse
+
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_REVERSE(TUPLE_NONE))) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_TUPLE_REVERSE(TUPLE)) == 3 END
+BEGIN BOOST_PP_TUPLE_ELEM(27, BOOST_PP_TUPLE_REVERSE(TUPLE_LARGE)) == 5 END
+BEGIN BOOST_PP_TUPLE_ELEM(43, BOOST_PP_TUPLE_REVERSE(TUPLE_VERY_LARGE)) == 20 END
+BEGIN CALC(BOOST_PP_TUPLE_REVERSE(T2)) == 6 END
+BEGIN BOOST_PP_VARIADIC_ELEM(2,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE))) == 3 END
+BEGIN BOOST_PP_VARIADIC_ELEM(27,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE_LARGE))) == 5 END
+BEGIN BOOST_PP_VARIADIC_ELEM(45,BOOST_PP_TUPLE_ENUM(BOOST_PP_TUPLE_REVERSE(TUPLE_VERY_LARGE))) == 18 END
+
+// enum
+
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_NONE)) == 1 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE)) == 6 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_ENUM(TUPLE_VERY_LARGE)) == 64 END
+
+// insert
+
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_INSERT(TUPLE_NONE,0,40)) == 40 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_INSERT(TUPLE_NONE,0,40)) == 2 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_INSERT(TUPLE,2,40)) == 0 END
+BEGIN BOOST_PP_TUPLE_ELEM(1, BOOST_PP_TUPLE_INSERT(TUPLE,1,40)) == 40 END
+BEGIN BOOST_PP_TUPLE_ELEM(2, BOOST_PP_TUPLE_INSERT(TUPLE,1,40)) == 1 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_INSERT(TUPLE,1,40)) == 7 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(8, BOOST_PP_TUPLE_INSERT(TUPLE_LARGE,22,1000)) == 8 END
+BEGIN BOOST_PP_TUPLE_ELEM(22, BOOST_PP_TUPLE_INSERT(TUPLE_LARGE,22,1000)) == 1000 END
+BEGIN BOOST_PP_TUPLE_ELEM(26, BOOST_PP_TUPLE_INSERT(TUPLE_LARGE,22,1000)) == 25 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_INSERT(TUPLE_LARGE,22,1000)) == 34 END
+
+// pop_back
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_POP_BACK(TUPLE)) == 5 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_POP_BACK(TUPLE_LARGE)) == 32 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_POP_BACK(TUPLE_VERY_LARGE)) == 63 END
+
+// pop_front
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_POP_FRONT(TUPLE)) == 5 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_POP_FRONT(TUPLE_LARGE)) == 32 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_POP_FRONT(TUPLE_VERY_LARGE)) == 63 END
+
+BEGIN BOOST_PP_TUPLE_ELEM(1, BOOST_PP_TUPLE_POP_FRONT(TUPLE)) == 2 END
+BEGIN BOOST_PP_TUPLE_ELEM(31, BOOST_PP_TUPLE_POP_FRONT(TUPLE_LARGE)) == 32 END
+BEGIN BOOST_PP_TUPLE_ELEM(55, BOOST_PP_TUPLE_POP_FRONT(TUPLE_VERY_LARGE)) == 56 END
+
+// push_back
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_PUSH_BACK(TUPLE_NONE, 1)) == 2 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_PUSH_BACK(TUPLE, 6)) == 7 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_PUSH_BACK(TUPLE_LARGE, 33)) == 34 END
+BEGIN BOOST_PP_TUPLE_ELEM(1, BOOST_PP_TUPLE_PUSH_BACK(TUPLE_NONE, 1)) == 1 END
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_PUSH_BACK(TUPLE, 6)) == 0 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, BOOST_PP_TUPLE_PUSH_BACK(TUPLE_LARGE, 33)) == 33 END
+
+// push_front
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_PUSH_FRONT(TUPLE_NONE, 55)) == 2 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_PUSH_FRONT(TUPLE, 555)) == 7 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_PUSH_FRONT(TUPLE_LARGE, 666)) == 34 END
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_PUSH_FRONT(TUPLE_NONE, 55)) == 55 END
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_PUSH_FRONT(TUPLE, 555)) == 555 END
+BEGIN BOOST_PP_TUPLE_ELEM(33, BOOST_PP_TUPLE_PUSH_FRONT(TUPLE_LARGE, 33)) == 32 END
+
+// rem
+
+#if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400
+
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM(1)()) == 1 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM(33)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM(64)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)) == 64 END
+
+#else
+
+#if BOOST_PP_VARIADICS_MSVC
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_REM_CAT() TUPLE_NONE) == 1 END
+#else
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_TUPLE_REM() TUPLE_NONE) == 1 END
+#endif
+
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM()(0, 1, 2, 3, 4, 5)) == 6 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM()(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)) == 64 END
+
+#endif
+
+// rem_ctor
+
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM_CTOR(TUPLE_NONE)) == 1 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM_CTOR(TUPLE)) == 6 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM_CTOR(TUPLE_LARGE)) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(BOOST_PP_TUPLE_REM_CTOR(TUPLE_VERY_LARGE)) == 64 END
+
+// remove
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_REMOVE(TUPLE, 1)) == 5 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_REMOVE(TUPLE_LARGE, 17)) == 32 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_REMOVE(TUPLE_VERY_LARGE, 27)) == 63 END
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_REMOVE(TUPLE, 2)) == 0 END
+BEGIN BOOST_PP_TUPLE_ELEM(29, BOOST_PP_TUPLE_REMOVE(TUPLE_LARGE, 25)) == 30 END
+BEGIN BOOST_PP_TUPLE_ELEM(62, BOOST_PP_TUPLE_REMOVE(TUPLE_VERY_LARGE, 48)) == 63 END
+
+// replace
+
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_TUPLE_REPLACE(TUPLE_VERY_LARGE, 27, 1000)) == 64 END
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_REPLACE(TUPLE_NONE, 0, 71)) == 71 END
+BEGIN BOOST_PP_TUPLE_ELEM(0, BOOST_PP_TUPLE_REPLACE(TUPLE, 1, 44)) == 0 END
+BEGIN BOOST_PP_TUPLE_ELEM(29, BOOST_PP_TUPLE_REPLACE(TUPLE_LARGE, 29, 999)) == 999 END
+BEGIN BOOST_PP_TUPLE_ELEM(38, BOOST_PP_TUPLE_REPLACE(TUPLE_VERY_LARGE, 37, 1)) == 38 END
+BEGIN BOOST_PP_TUPLE_ELEM(28, BOOST_PP_TUPLE_REPLACE(TUPLE_VERY_LARGE, 28, 1)) == 1 END
+
+// size
+
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_NONE) == 1 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE) == 6 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_LARGE) == 33 END
+BEGIN BOOST_PP_TUPLE_SIZE(TUPLE_VERY_LARGE) == 64 END
+
+// to_array
+
+BEGIN BOOST_PP_ARRAY_ELEM(3,BOOST_PP_TUPLE_TO_ARRAY(TUPLE)) == 3 END
+BEGIN BOOST_PP_ARRAY_ELEM(29,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_LARGE)) == 29 END
+BEGIN BOOST_PP_ARRAY_ELEM(61,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_VERY_LARGE)) == 61 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_ARRAY_ELEM(0,BOOST_PP_TUPLE_TO_ARRAY(TUPLE_NONE))) == 1 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_TO_ARRAY(TUPLE_NONE)) == 1 END
+
+// to_tuple
+
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE), 2) == 2 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_LARGE), 19) == 19 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_VERY_LARGE), 62) == 62 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_LIST_AT(BOOST_PP_TUPLE_TO_LIST(TUPLE_NONE), 0)) == 1 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_TUPLE_TO_LIST(TUPLE_NONE)) == 1 END
+
+// to_seq
+
+BEGIN BOOST_PP_SEQ_ELEM(4,BOOST_PP_TUPLE_TO_SEQ(TUPLE)) == 4 END
+BEGIN BOOST_PP_SEQ_ELEM(31,BOOST_PP_TUPLE_TO_SEQ(TUPLE_LARGE)) == 31 END
+BEGIN BOOST_PP_SEQ_ELEM(55,BOOST_PP_TUPLE_TO_SEQ(TUPLE_VERY_LARGE)) == 55 END
+BEGIN BOOST_PP_IS_EMPTY(BOOST_PP_SEQ_ELEM(0,BOOST_PP_TUPLE_TO_SEQ(TUPLE_NONE))) == 1 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_TO_SEQ(TUPLE_NONE)) == 1 END
+
+#endif
diff --git a/third_party/boostorg/preprocessor/test/tuple_elem_bug_test.cxx b/third_party/boostorg/preprocessor/test/tuple_elem_bug_test.cxx
new file mode 100644
index 0000000..56e36a6
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/tuple_elem_bug_test.cxx
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2014.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/control/if.hpp>
+# include <boost/preprocessor/tuple.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#define TN_GEN_ONE(p) (1)
+#define TN_GEN_ZERO(p) (0)
+#define TN_TEST_ONE_MORE(parameter,ens) \
+ BOOST_PP_IF \
+ ( \
+ BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(1,0,ens),0), \
+ TN_GEN_ONE, \
+ TN_GEN_ZERO \
+ ) \
+ (parameter) \
+/**/
+#define TN_TEST_ONE(parameter,ens) \
+ BOOST_PP_TUPLE_ELEM \
+ ( \
+ 1, \
+ 0, \
+ TN_TEST_ONE_MORE(parameter,ens) \
+ ) \
+/**/
+
+BEGIN TN_TEST_ONE(A,(1)) == 1 END
+BEGIN TN_TEST_ONE(A,()) == 0 END
diff --git a/third_party/boostorg/preprocessor/test/variadic.c b/third_party/boostorg/preprocessor/test/variadic.c
new file mode 100644
index 0000000..a9d2532
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/variadic.c
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/variadic.cxx>
diff --git a/third_party/boostorg/preprocessor/test/variadic.cpp b/third_party/boostorg/preprocessor/test/variadic.cpp
new file mode 100644
index 0000000..a9d2532
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/variadic.cpp
@@ -0,0 +1,12 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <libs/preprocessor/test/variadic.cxx>
diff --git a/third_party/boostorg/preprocessor/test/variadic.cxx b/third_party/boostorg/preprocessor/test/variadic.cxx
new file mode 100644
index 0000000..e1a3a15
--- /dev/null
+++ b/third_party/boostorg/preprocessor/test/variadic.cxx
@@ -0,0 +1,56 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Edward Diener 2011.
+# * Distributed under the Boost Software License, Version 1.0. (See
+# * accompanying file LICENSE_1_0.txt or copy at
+# * http://www.boost.org/LICENSE_1_0.txt)
+# * *
+# ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# include <boost/preprocessor/variadic.hpp>
+# include <boost/preprocessor/array/size.hpp>
+# include <boost/preprocessor/array/elem.hpp>
+# include <boost/preprocessor/list/at.hpp>
+# include <boost/preprocessor/list/size.hpp>
+# include <boost/preprocessor/seq/elem.hpp>
+# include <boost/preprocessor/seq/size.hpp>
+# include <boost/preprocessor/tuple/size.hpp>
+# include <boost/preprocessor/tuple/elem.hpp>
+# include <libs/preprocessor/test/test.h>
+
+#if BOOST_PP_VARIADICS
+
+#define VDATA 0,1,2,3,4,5,6
+#define VDATA_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
+#define VDATA_VERY_LARGE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
+
+BEGIN BOOST_PP_VARIADIC_ELEM(4,VDATA) == 4 END
+BEGIN BOOST_PP_VARIADIC_ELEM(6,7,11,3,8,14,85,56,92,165) == 56 END
+BEGIN BOOST_PP_VARIADIC_ELEM(29,VDATA_LARGE) == 29 END
+BEGIN BOOST_PP_VARIADIC_ELEM(57,VDATA_VERY_LARGE) == 57 END
+BEGIN BOOST_PP_VARIADIC_ELEM(35, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63) == 35 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA) == 7 END
+BEGIN BOOST_PP_VARIADIC_SIZE(7,11,3,8,14,85,56,92,165) == 9 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_LARGE) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) == 33 END
+BEGIN BOOST_PP_VARIADIC_SIZE(VDATA_VERY_LARGE) == 64 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA)) == 7 END
+BEGIN BOOST_PP_ARRAY_SIZE(BOOST_PP_VARIADIC_TO_ARRAY(VDATA_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_ARRAY_ELEM(4,BOOST_PP_VARIADIC_TO_ARRAY(7,11,3,8,14,85,56,92,165)) == 14 END
+BEGIN BOOST_PP_ARRAY_ELEM(30,BOOST_PP_VARIADIC_TO_ARRAY(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)) == 30 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(VDATA),3) == 3 END
+BEGIN BOOST_PP_LIST_AT(BOOST_PP_VARIADIC_TO_LIST(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63),49) == 49 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(7,11,3,8,14,85,56,92,165)) == 9 END
+BEGIN BOOST_PP_LIST_SIZE(BOOST_PP_VARIADIC_TO_LIST(VDATA_LARGE)) == 33 END
+BEGIN BOOST_PP_SEQ_ELEM(5,BOOST_PP_VARIADIC_TO_SEQ(VDATA)) == 5 END
+BEGIN BOOST_PP_SEQ_ELEM(16,BOOST_PP_VARIADIC_TO_SEQ(VDATA_LARGE)) == 16 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(3,78,22,11,3)) == 5 END
+BEGIN BOOST_PP_SEQ_SIZE(BOOST_PP_VARIADIC_TO_SEQ(VDATA_VERY_LARGE)) == 64 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(VDATA)) == 7 END
+BEGIN BOOST_PP_TUPLE_SIZE(BOOST_PP_VARIADIC_TO_TUPLE(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)) == 64 END
+BEGIN BOOST_PP_TUPLE_ELEM(8,BOOST_PP_VARIADIC_TO_TUPLE(7,11,3,8,14,85,56,92,165)) == 165 END
+BEGIN BOOST_PP_TUPLE_ELEM(27,BOOST_PP_VARIADIC_TO_TUPLE(VDATA_LARGE)) == 27 END
+
+#endif